Recommender Systems Handbook 第一版(2008年)是推荐系统方向入门的经典。7年后,第二版(2015年)终于诞生了,加入了这几年推荐系统领域的最新技术,又是state-of-the-art了吧,开始读书加笔记整理。。。
一、概述:
协同过滤方法大致可以分成两类:基于近邻(neighborhood-based)的算法和基于模型(model-based)的算法。基于近邻的算法直接使用已知评分进行预测;而基于模型的算法从已知评分中学习预测模型。基于近邻的算法又可以分成user-based 和item-based两类。本文主要介绍user-based 和item-based相关技术。
二、符号定义和度量标准:
- U:用户集合;I:item集合;
- R:评分集合, rui 表示用户 u∈U 对item i∈I 的评分;
- S: 评分取值集合,例如S = [1,2,3,4,5];
- Ui :已经给item i打分的用户集合; Iu :已经被用户u打分的item集合;
- Iuv : Iu∩Iv ,同时被用户u和用户v打过分的item集合; Uij :同时对item i和j打过分的用户集合。
- wuv :用户u和v之间的相似度; wij :item i和j之间的相似度;
- N(u) :用户u的k近邻; Ni(u) :对item i打过分的用户中与用户u最相似的k个近邻;
- N(i) :item i的k近邻; Nu(i) :用户u打过分的item中与item i最相似的k个近邻。
评价推荐系统时最重要的两个问题是评分准确率和Top-N推荐问题。评分准确率问题常用的度量标准有Root Mean Squared Error (RMSE),Precision,Recall等。Top-N推荐常用的度量标准有NDCG,Average Reciprocal Hit-Rank(ARHR)等。
假设推荐系统为用户u返回top-N列表, pu1,...,puh 是hits位置,即用户u感兴趣的item在推荐列表中的位置, 1≤pui≤N 。则ARHR等于
ARHR=1|U|∑u∈U∑i=1h1pui
其他几种度量方法都很常见,在此不再赘述。
三、User-Based推荐方法:
User-Based推荐方法根据用户u近邻的评分预测用户u对item i的评分:
r^ui=∑v∈Ni(u)wuvrvi∑v∈Ni(u)|wuv|
wuv 是用户u和用户v的相似度,可能为负数。这是一种 回归(Regression)的方法。
如果要直接得到离散的结果(例如评分是good、bad…),则变成一个分类问题,可以用下面的式子预测评分:
Vir=∑v∈Ni(u)δ(rvi=r)wuvr^ui=argmaxr{Vir}
δ(rvi=r) 是指示函数,如果
rvi=r ,则结果为1,否则结果为0。
argmaxr{Vir} 返回使
Vir 取值最大的r值。这个分类方法可以看做一个投票的过程,由用户u的k个近邻进行投票,每一票的权重是
wuv ,最后选择投票(Vote)最多的结果作为预测评分。
四、Item-Based推荐方法:
Item-Based推荐方法根据用户u对item i近邻的评分来预测用户u对item i的评分:
r^ui=∑j∈Nu(i)wijruj∑j∈Nu(i)|wij|
同样的,分类问题的预测评分式子如下:
Vir=∑j∈Nu(i)δ(ruj=r)wijr^ui=argmaxr{Vir}
五、User-Based方法和Item-Based方法比较:
- 用户和item的规模:当用户数量远大于item数量时,最好选择Item-Based方法,从而可以得到更多可靠的近邻且节省存储空间。反之,选择User-Based方法。
- 稳定性:如果item列表比较稳定,而用户变化较多,最好选择Item-Based方法,从而可以减少item间的相似度计算频率。反之,选择User-Based方法。
- 可解释性:item之间的相似性比较直观,所以Item-Based方法有较好的解释性。User-Based方法中用户对其他相似用户不了解,所以解释性相对差一点。
- 新颖性:User-Based方法能提供更多新颖的item推荐。Item-Based方法更倾向于给用户推荐与item i相似度较大的item。
六、评分标准化:
每个用户有其特定的打分习惯,如平均打分比其他用户要高/低;item之间的打分的平均值也不相同。所以需要对评分进行标准化处理,统一用户的评分标准。标准化方法主要有两种:零均值化和Z-Score。
零均值化:
User-Based方法标准化:用户u的评分都减去它的均值 r¯u 。
r^ui=r¯u+∑v∈Ni(u)wuv(rvi−r¯v)∑v∈Ni(u)|wuv|
Item-Based方法标准化:Item i的评分都减去它的均值 r¯i 。
r^ui=r¯i+∑j∈Nu(i)wij(ruj−r¯j)∑j∈Nu(i)|wij|
Z-Score:
零均值化方法移除了评分均值上的偏差,Z-Score在移除均值偏差的同时考虑到了评分的方差。
User-Based方法标准化:用户u的评分都减去它的均值 r¯u ,然后再除以标准差 δu 。
r^ui=r¯u+δu∑v∈Ni(u)wuv(rvi−r¯v)/δv∑v∈Ni(u)|wuv|
Item-Based方法标准化:Item i的评分都减去它的均值 r¯i ,然后再除以标准差 δi 。
r^ui=r¯i+δi∑j∈Nu(i)wij(ruj−r¯j)/δj∑j∈Nu(i)|wij|
七、相似权值计算:
前面的评分预测式子用到了相似权重 wuv 和 wij ,下面介绍几种权重的计算方法。
Cosine相似度:
cos(u,v)=∑i∈Iuvruirvi∑j∈Iur2uj∑k∈Ivr2vk−−−−−−−−−−−−−−−−√
即
Iu 和
Iv 的相似度。在前面符号定义小节已经提到过
Iuv 表示同时被用户u和用户v打过分的item集合。
考虑均值和方差:
PearsonCorrelation(u,v)=∑i∈Iuv(rui−r¯u)(rvi−r¯v)∑j∈Iuv(ruj−r¯u)2∑k∈Iuv(rvk−r¯v)2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√
PearsonCorrelation(i,j)=∑u∈Uij(rui−r¯i)(ruj−r¯j)∑v∈Uij(rvi−r¯i)2∑k∈Uij(rkj−r¯j)2−−−−−−−−−−−−−−−−−−−−−−−−−−−−√
Pearson Correlation是 在集合
Iuv 和
Uij 上计算的,
Uij 表示同时对item i和j评分的用户集合。Pearson Correlation的分子分母都要除以标准差项,所以可以分子分母同时约去。
权值改进:
当使用Pearson Correlation方法时,如果用户u和v只共同评论过一个item并且恰好在这个item上的评分相同,那么根据公式他们之间的相似度是1,这显然不大合理。可以用以下几种方法对权值进行平滑:
w′uv=min{|Iuv|,γ}γwuv
w′uv=|Iuv||Iuv|+βwuv
γ 和
β 的值可以通过交叉验证选择(例如
γ=50 ,
β=100 )。
八、近邻选择:
近邻的选择主要包括近邻个数k和近邻选取的过程,其中近邻个数k可以通过交叉验证来选择(通常k的取值在20到50之间)。由于现实推荐系统用户数和item数很大,保存所有的用户或item 之间的(非零)相似度需要大量的存储空间,所以需要提前过滤,把不重要的相似度信息都筛选掉。主要有以下几种筛选方法:
- Top-N过滤:只保留用户或item的N个近邻的相似度权值;
- 阈值过滤:保留大于某个阈值的相似度权值;
- 负值过滤:只保留大于零的相似度权值。
九、近邻方法的优缺点:
- 可解释性较好,尤其是Item-Based方法;
- 实时性较好,通过预先计算好的相似矩阵找出k近邻后就可以对item评分进行预测;
- 会占用较多存储空间,特别是当用户数和item数都很多的时候;
- 冷启动问题,新的用户和item找k近邻需要借助其他方法;
- 局限性较大,例如用户u和v根据 Iuv 计算相似度,所以只有当他们有共同的评分项时才可能成为近邻;
- 稀疏问题,当评分矩阵很稀疏的时候,两个用户共同评分的项会很少,使得预测结果偏差较大。
十、参考资料
Recommender Systems Handbook