一般来说,用户越活跃,越喜欢浏览物品流行度低的的物品,反之,用户越不活跃,越喜欢浏览物品流行度高的物品(即热门商品)[12]。
2。2。3 基于用户的协同过滤算法(User-CF)
基于邻域的推荐算法又可以分成两类:
a基于用户的协同过滤算法(User-CF);b基于物品的协同过滤算法(Item-CF)。
User-CF的具体算法具体步骤如下(本文着重讲述):
i找到和目标用户志趣相投(如都对某一部电影评分或是购买类似物品)的最近邻集(neighbour)
其中,最主要的是计算两个用户的兴趣相似度,兴趣相似度的计算主要是利用用户历史行为数据。两个客户之间的兴趣相似度的方法如下所示[13]:
①余弦相似性:将两个用户的打分分别当做一个向量,而这两者之间的夹角的cos值便可以作为度量他们相关的依据。
②皮尔逊系数:主要是由公式2。3计算得出。具体来说,如公式2。4所示,主要是寻找两个用户曾经共同产生过行为(如评分)的物品集合。
③调整余弦相似性:和皮尔逊系数不同的是,公式2。4是项目平均分,而方法①是用户的平均分。
本文采用的方法为皮尔逊相关度(Pearson correlation)[14],公式如下所示:来*自~优|尔^论:文+网www.youerw.com +QQ752018766*
其中Ru,i 为u 对物品 i 的打分, 为该用户集U对项目i的评分均值; 为用户u 对物品 j 的评分, 为该用户集U对项目j的评分均值;
Java实现相似度计算的代码如下:
SparseVector a = v1。sub(i1Avg);
SparseVector b = v2。sub(i2Avg);
sim= a。innerProduct(b) / (a。norm() * b。norm());
ii按照i中计算出来的最近邻集中的用户对某些物品的评分计算目标用户的评分,然后对评分排序,将排名靠前的K个物品展示给该用户。步骤如下:
(a) 计算出用户的相似度之后,再由此计算出用户对某物品的评分。本文采用的预测评分公式如下所示[15]:
(2。5)
其中, 是客户u对电影m的评分,sim(u,j)是公式2。4计算得出的用户u和用户j的皮尔逊值, 是用户j对电影评分的均值;