MATLAB实现高效流形排序的出样扩展:单查询点快速排序

高效流形排序(Efficient Manifold Ranking, EMR)的一个最大优势在于其优秀的出样扩展能力:在训练阶段学到地标点和稀疏表示结构后,对于新来的查询样本,无需重新计算整个数据集的邻接关系或重新求解大规模系统,就能快速得到其与数据库所有样本的相关性排序分数。这对于实际的在线图像检索、推荐系统等交互式应用至关重要。

今天要介绍的这个函数EMRtest,正是EMR框架的测试/出样扩展函数。它接收一个新的查询点x(行向量)和训练阶段得到的model,仅需极少的计算即可返回该查询点对数据库中所有样本的排序分数score,实现毫秒级的快速响应。

核心实现流程

  1. 参数提取:从model中读取地标点数量p、最近邻数量r和传播系数a。

  2. 新样本的稀疏表示z构建

    • 计算查询点x与所有地标点的平方欧氏距离。

    • 选取最近的r个地标点,计算归一化距离(除以第r个距离)。

    • 使用相同的高斯权重公式:0.75 × (1 - d²),得到r维权重向量。

    • 构建p维稀疏列向量z(只有r个非零元素)。

  3. 扩展表示矩阵

    • 将原始的Z(数据库样本的表示,p × nSmp,转置存储)与新z组合成新的Z_new(p × (nSmp + 1))。

    • <