机器学习算法实践:推荐系统的协同过滤理论及其应用
上QQ阅读APP看书,第一时间看更新

2.3 一种巴氏系数改进相似度的协同过滤推荐算法

2.3.1 巴氏系数

巴氏系数(Bhattacharyya Coefficient, BC)是对两个统计样本的重叠的近似计算,可用来对两组样本的相关性进行测量,已广泛应用于信号处理、模式识别研究领域。在统计学中巴氏系数用于测量两种离散概率分布的可离性,衡量两个概率分布之间的相似度。

在连续域两个密度分布p1x)和p2x)之间的相似度用巴氏系数(BC)定义如式(2-5)所示。

在离散域上BC定义如式(2-6)所示。

式中:密度p1x)和p2x)——已知的评分数据。

用户uv的评分类别用puhpvh来评估其离散密度,计算用户uv之间的BC相似度如式(2-7)所示。

式中:m——评分类别总数;

,其中#u为对用户u评分的项目总量,#h为用户u评分为h的项目总量,

例如,用户uv的评分向量ru=(1,0,2,0,1,0,2,0,3,0)Trv=(0,1,0,2,0,1,0,2,0,3)T,评分在1~5,所以用户uv之间的BC系数如式(2-8)所示。

2.3.2 巴氏系数相似度

基于巴氏距离提出一种新的相似度度量方法——巴氏系数相似度,利用巴氏系数改进相似度根据用户的所有评分来计算两个用户之间的相似度,利用Jaccard相似度计算两用户之间的全局相似度,再利用巴氏系数分析评分分布并结合Pearson相关系数得到局部相似度,结合局部与全局相似度获得最终的相似度值。设用户uv评价的两个项目分别为IuIv,当两用户之间的共同评分项目数为0,即IuIv=∅,用户uv评价的两项目之间的相似度(用BC系数)和两个项目评分的局部相似度。其局部相似度定义如式(2-9)所示。

式中:BC(uv)——用户uv的全部评分信息;

loc(ruirvj)——评分ruirvj之间的局部相似度。

BC系数在没有共同评分情况下也可以计算用户uv之间的相似度,如果两个用户在全局角度上是相似的,则BC(uv)可以提高用户uv的评分之间的局部相似度;另一方面,如果用户uv完全不相似,则BC(uv)降低两个用户评分之间局部相似度的重要性。局部相似度既提供非常重要的用户局部信息,也必须提供用户评分之间的正和负关系,如式(2-10)所示,可以用loc(ruirvj)表示Pearson相关系数来评估两评分之间的局部相似度。

利用式(2-11)衡量两个用户评分之间的相关性sim BCuv),融合局部相似度和全局相似度得到最终的相似度值。当BC(uv)=1时局部相似度的作用最大,为相同项目提供最大的局部相似度;当BC(uv)=0时局部相似度为0,此时全局相似度就是最终的相似度值。

本章提出的巴氏系数相似度特点在于整合利用巴氏系数、Jaccard和Pearson相关系数互相弥补其缺陷,完美诠释两个用户之间的相似度;即使没有一个共同评分,也可以计算两个用户(项目)之间的相似度;计算相似度时利用用户对项目的所有评分,不会造成资源浪费;多方面考虑可能影响用户之间相似度的因素;考虑用户评分的全局相似度和局部相似度。

2.3.3 BCCF算法描述

在基于近邻协同过滤推荐算法的基础上,利用巴氏系数改进相似度计算,设计出利用巴氏系数改进相似度的协同过滤推荐算法BCCF流程。

算法2-1 BCCF算法