本文讲述的是Rocchio算法,是一种统计学习算法,多用于文本分类。
Rocchio算法是一种非常自然可以想到的算法。如在文本分类中,我们可以依据文本关键字出现频率对其进行归类。这就是Rocchio算法的体现。如需要确定一篇文章是否属于“计算机”分类,则我们设定几个关键字,如“网络”,“程序”等。我们要做的是统计在已知为互联网类别中,各个关键字出现的平均次数,并将这些结果组成一个向量,称之为“质心”,作为这个类别的特征。当有新的文章加入时,也是统计其关键字出现次数,组成向量,并计算其与质心的相似度(简单用欧式距离即可),确定其类别。
另一种情况,要求查询与某类别相关的文章。假设有若干相关与非相关文档,其特征向量分布如下图所示,
那么我所返回的最有查询的向量,需要满足以下公式:
公式的意义为:需要找到一个最优的向量q,使得其与相关文档之间的相似度最大且同时又和不相关文档之间的相似度最小。公式中定义Cr表示相关文档集,Cnr表示不相关文档集。
sim函数采用余弦相似度计算方法时,最优的q可以表示为:
实际上这个q就是两个质心向量的差。
上述只是描述一个理想情况下的例子,但是在实际情况中,我们并无法完