Rocchio 算法,是一种高效的分类算法,广泛地被应用到文本分类,查询扩展等领域。它通过构造原型向量的方法得到最优解
算法简介
Rocchio算法是IR中通过查询的初始匹配文档对原始查询进行修改以优化查询的方法。Rocchio 算法。该算法(Rocchio,1971)是20 世纪70 年代左右在Salton 的SMART 系统中引入并广泛流传的一种相关反馈算法。
算法原理
其基本思想是使用训练集为每个类构造一个原型向量,构造方法如下:
给定一个类,训练集中所有属于这个类的文档对应向量的分量用正数表示,所有不属于这个类的文档对应向量的分量用负数表示,然后把所有的向量加起来,得到的和向量就是这个类的原型向量,定义两个向量的相似度为这两个向量夹角的余弦,逐一计算训练集中所有文档和原型向量的相似度,然后按一定的算法从中挑选某个相似度作为界。给定一篇文档,如果这篇文档与原型向量的相似度比较大,则这篇文档属于这个类,否则这篇文档就不属于这个类。Rocchio算法的突出优点是容易实现,计算(训练和分类)特别简单,它通常用来实现衡量分类系统性能的基准系统,而实用的分类系统很少采用这种算法解决具体的分类问题。
其基本思想不难解释,对于一个词集,和一个分类,总有某些词,这些词一旦出现属于这个分类的可能性就会增加,而另一些词一旦出现属于这个分类的可能性就会降低,那么累计这些正面的,和负面的影响因素,最后由文档分离出的词向量可以得到对于每个类的一个打分,打分越高属于该类的可能性就越大.
对于某种二分类特别合适, A, ~A, 任给一个文档,判断属于分类A还是分类~A,可以认为A的特征项均给与正值,~A都给与负值,那么给定一个合理阈值,就很容易做出这种类型的分类.
算法应用
文本分类
Rocchio算法应该算是人们思考文本分类问题时最先能想到,也最符合直觉的解决方法。基本的思路是把一个类别里的样本文档各项取个平均值(例如把所有 “体育”类文档中词汇“篮球”出现的次数取个平均值,再把“裁判”取个平均值,依次做下去),可以得到一个新的向量,形象的称之为“质心”,质心就成了这 个类别最具代表性的向量表示。再有新文档需要判断的时候,比较新文档和质心有多么相像(八股点说,判断他们之间的距离)就可以确定新文档属不属于这个类。 稍微改进一点的Rocchio算法不仅考虑属于这个类别的文档(称为正样本),也考虑不属于这个类别的文档数据(称为负样本),计算出来的质心尽量靠近正样本同时尽量远离负样本。
查询扩展
Rocchio算法是IR中通过查询的初始匹配文档对原始查询进行修改以优化查询的方法。Rocchio 算法是相关反馈实现中的一个经典算法,它提供了一种将相关反馈信息融到向量空间模型的方法。
基本理论:假定我们要找一个最优查询向量q ,它与相关文档之间的相似度最大且同时又和不相关文档之间的相似度最小。