Rocchio算法详解

Rocchio算法是IR中通过查询的初始匹配文档对原始查询进行修改以优化查询的方法。Rocchio 算法是相关反馈实现中的一个经典算法,它提供了一种将相关反馈信息融到向量空间模型的方法。基本理论:假定我们要找一个最优查询向量q ,它与相关文档之间的相似度最大且同时又和不相关文档之间的相似度最小。若Cr表示相关文档集,Cnr表示不相关文档集,那么我们希望找到的最优的q 是:


sim 函数用于计算相似度。采用余弦相似度计算时,能够将相关文档与不相关文档区分开的最优查询向量为:

Rocchio算法详解

这就是说,最优的查询向量等于相关文档的质心向量和不相关文档的质心向量的差。然而,这个发现并没有什么意义,因为检索本来的目的就是要找相关文档,而所有的相关文档集事先却是未知的。

Rocchio算法详解

Rocchio 算法。该算法(Rocchio,1971)是20 世纪70 年代左右在Salton 的SMART 系统中引入并广泛流传的一种相关反馈算法。在一个真实的信息检索场景中,假定我们有一个用户查询,并知道部分相关文档和不相关文档的信息,则可以通过如下公式得到修改后的查询向量q:

Rocchio算法详解

其中, q 是原始的查询向量,Dr 和Dnr 是已知的相关和不相关文档集合。α、β 及γ 是上述三者的权重。这些权重能够控制判定结果和原始查询向量之间的平衡:如果存在大量已判断的文档,那么会给β 及γ 赋予较高的权重。修改后的新查询从q0 开始,向着相关文档的质心向量靠近了一段距离,而同时又与不相关文档的质心向量远离了一段距离。新查询可以采用常规的向量空间模型进行检索。通过减去不相关文档的向量,我们很容易保留向量空间的正值分量。在Rocchio 算法中,文档向量中的权重分量如果为负值,那么该分量将会被忽略,也就是说,此时会将该分量权重设为0。下图给出了应用相关反馈技术的效果示意图。

Rocchio算法详解

相关反馈可以同时提高召回率和正确率。然而,实际表明该技术在一些重召回率的场景下对于提高召回率非常有用。这其中的部分原因在于它对查询进行了扩展,另一个原因是应用的场景所带来的结果:在期望高召回率的情况下,可以预计用户可能会花更多时间来浏览结果并进行反复搜索。正反馈往往比负反馈更有价值,因此在很多IR系统中,会将参数设置成γ < β。一个合理的取值是α = 1、β = 0.75 及γ = 0.15。实际上,很多系统,都只允许进行正反馈,即相当于设置γ = 0。还有一种做法是,只取检索系统返回结果中排名最高的标记为不相关的文档进行负反馈,此时,公式中的|Dnr| = 1。尽管上述相关反馈方法存在各种变形,并且很多比较实验也没有取得一致性的结论,但是一些研究却认为一种称为Ide dec-hi 的公式最有效或至少在性能上表现最稳定。Ide dec-hi 的公式如下:

你可能感兴趣的:(机器学习)