
2.2 相关工作
协同过滤是推荐系统中应用最广泛的算法之一,其关键在于最近邻居集合的选择,推荐系统的性能直接依赖于目标用户(项目)邻居的选择,也就是依赖于用户(项目)之间相似度的度量,因而改进相似度计算方法成为缓解数据稀疏性问题、提高推荐质量的有效途径之一。协同过滤中常用的相似度度量方法包括余弦相似度、调整余弦相似度、Pearson相关系数和Jaccard相似度等[9],以基于用户的协同过滤推荐算法为例。
2.2.1 余弦相似度

式中:simcos(u,v)——余弦相似度;
Iu,v——用户u和用户v的共同评分项目集;
ru,i和rv,i——分别表示用户u和用户v对项目i的评分。
余弦相似度用两个向量的夹角余弦值度量相似度,两个向量的夹角越小,其夹角余弦值越大,则余弦相似度越高。这种方式对评分数值不敏感,如ru=(1,1),rv=(5,5),simcos(u,v)=1,尽管两个用户的评分差距很大(一个非常满意,一个非常不满意),但两个用户的相似度却为1。余弦相似度过于关注向量之间的夹角而忽视向量的长度(共同评分项数量),且过于依赖两个用户的共同评分。
2.2.2 调整余弦相似度

式中:simacos(u,v)——调整余弦相似度;
——用户u的平均评分;
——用户v的平均评分。
调整余弦相似度通过减去平均值来提升对评分数值的敏感程度,但无法辨认其正负相关性。如ru=(4,5),rv=(5,4),simacos(u,v)=-1,两个用户对项目的评价都非常满意,逻辑上是非常相似的,其计算结果与实际逻辑不相符。
2.2.3 Pearson相关系数

式中:sim Pear(u,v)——Pearson相关系数。
Pearson相关系数是衡量两个数据集合之间的线性关系,令ru=(1,1,3,3,2),rv=(3,5,5,5,4),sim Pear(u,v)=1。两组数据的差异明显,用户u对项目的评分都较低,而用户v对项目的评分都较高,很难看出两者之间有相关性,其计算结果与理论分析完全相反。Pearson相关系数考虑到用户评分的偏差,却忽略了用户共同评分的项目数,所以线性相关系数并不能完美地度量相似度。
2.2.4 Jaccard相似度

式中:simJac(u,v)——Jaccard相似度;
Iu——用户u评分的项目;
Iv——用户v评分的项目。
Jaccard相似度与Pearson相关系数不同,Jaccard相似度仅考虑了两个用户的共同评分数,但未考虑绝对评分,从而影响用户相似度的准确性。
根据上述传统相似度计算方法存在的缺陷,通过改进相似度计算方法来缓解传统协同过滤推荐算法中存在的数据稀疏性问题,本书在基于近邻协同过滤推荐算法的基础上,提出了一种利用巴氏距离改进相似度度量方法,充分利用用户的每一个评分,即使没有一个共同项目评分时,也可以计算两个用户之间的相似度。Jaccard相似度通过计算两个用户共同评分项目数的比重,能够在全局上衡量两个用户的相似度,以此作为全局相似度;Pearson相关系数考虑到用户评分偏差,并结合巴氏系数得到的评分整体规律,以此可以作为局部相似度,将全局和局部相似度进行融合作为两个用户之间最终的相似度值。