感谢IT牛人博客聚合上还能找到我之前博客的一些内容,因为之前主机没续费等各种原因,也懒得翻之前的备份文档了,就把那上面的文章直接拷过来整理一下好了,只搬迁一些还有意义的内容好了,其他的就让它随风而去吧。
不论是推荐系统,还是搜索引擎,都经常需要比较两个项目之间的相似度。常见的思想是将项目的特征的权值表示为N维空间向量,然后利用代数方法,对两个空间向量之间的距离、夹角等进行度量,从而表示相似度。常用的相似度计算方法有如下几种:
欧氏距离
欧氏距离的计算中将空间向量看成是N维空间上的两个点,通过空间上两点之间的距离表示两个项目之间的联系。欧氏距离一般只用于简单的比较,并不能将值域投影到某一特定范围。
余弦相似度
余弦相似度通过计算两个空间向量之间的夹角余弦来定义相似度,当用户未对该项评分时,认为该维的分量为0。余弦相似度计算时可先求出该项目的单位向量,继而只需要计算两个单位向量的内积即可得到其夹角余弦,减少计算量。
皮尔森相关系数
皮尔森相关系数在打分制的体系中应用较广泛,但是只考虑两个空间向量都包含的维度进行计算,因此如果用于布尔类的兴趣体系(读过即为1,否则为0)其结果永远为0。皮尔森相关系数公式变形较多,是利用标准差的线性相关系数公式。
修正余弦相似度
在余弦相似性度量方法中没有考虑不同用户的评分尺度问题,修正的余弦相似性度量方法通过减去用户对项目的平均评分来改善上述缺陷。