推荐系统笔记三、基于近邻的推荐系统进阶篇

来源:互联网 发布:音乐剪切合并软件 mac 编辑:程序博客网 时间:2024/05/16 01:19

一、概述:

基于近邻的推荐算法在推荐系统中占有重要的地位,是学术界的一个重点研究方向,在产业界也得到了广泛的应用。基于近邻的推荐算法大致可以分为user-baseditem-based两类,关于近邻推荐算法的基础性介绍,请参见博文: “推荐系统笔记一、基于近邻的推荐系统(基础篇)”。由于user-based方法和item-based方法的相似性,本文主要讨论item-based方法上的一些技术,这些技术可以被直接套用到user-based方法上。本文主要介绍五种近邻模型。

二、符号定义:

  • U:用户集合;I:item集合;
  • R:评分集合,rui表示用户uU对item iI的评分;
  • Ui:已经给item i打分的用户集合;Iu:已经被用户u打分的item集合;
  • IuvIuIv,同时被用户u和用户v打过分的item集合;Uij:同时对item i和j打过分的用户集合;
  • wuv:用户u和v之间的相似度;wij:item i和j之间的相似度;

三、相似权值计算:

        两个用户或者item间的近邻关系是由他们之间的相似度来判断的,与一个用户(或item)相似度最大的k个用户(或item)称为他的k近邻。

        cosine相似度是其中一种常用的度量方法: 

cos(i,j)=uUijruirujuUir2uivUjr2vj

UiUj的相似度。在前面符号定义小节已经提到过Uij表示同时对item i和item j打过分的用户集合。

        如果考虑均值和方差,则得到Pearson相关系数:

PearsonCorrelation(i,j)=uUij(ruir¯i)(rujr¯j)vUij(rvir¯i)2kUij(rkjr¯j)2

Pearson Correlation是在集合Uij上计算的,其他的评分都忽略,所以在分母上和cosine有一个小小的区别。另外,由于Pearson Correlation 的分子分母都要除以标准差项,所以可以分子分母同时约去。

相似权值改进:

    在实际中,不同用户或者item的评分往往是带偏差的,例如A和B两个用户的偏好类似,但是A比较容易满足,倾向于给item打高分;而B倾向于给item打低分(Item 上也有类似的情况)。为了解决这个问题,需要为每个用户和item增加一个偏置项。在前面的式子中,用均值r¯i作为这个偏置项,也可以用学习的方法得到一个较好的偏置项: 

minb(u,i)K(ruiμbubi)2+λ(ub2u+ib2i)

其中μ是整体评分偏置,bubi是用户u和item i上额外的偏置。那么评分rui的偏置就等于: 
bui=μ+bu+bi

    把这个偏置代入Pearson Correlation,得到: 

PearsonCorrelation(i,j)=uUij(ruibui)(rujbuj)vUij(rvibvi)2kUij(rkjbkj)2

当使用Pearson Correlation方法时,如果item i和j只被一个用户同时评分过,并且恰好在这两个item上的评分相同,那么根据Pearson公式他们之间的相似度等于1,这显然不大合理。可以用以下方法对权值进行收缩: 

sij=|Uij|1|Uij|1+βPearsonCorrelation(i,j)

β的值可以通过交叉验证选择(例如β=100)。

四、相似度插值:

    Similarity-Based Interpolation:定义Sk(i;u)为用户u评分的item集合中和item i最相似的k个近邻。由用户对item的历史评分来预测评分: 

r^ui=bui+jSk(i;u)sij(rujbuj)jSk(i;u)sij

这可以看做一个插值函数,sij是插值系数。这种方法主要有一下两个优点:

  • 可解释性。通过用户对item的历史评分(喜好)推荐新的item。
  • 实时性。一旦用户给出新的评分,item-based模型可以立即提供新的推荐,而不需要重新训练模型或计算参数(通常认为item间的相似度在短时间内是恒定的,只需每隔较长一段时间重新计算)。

五、联合派生插值权重:

    Jointly Derived Interpolation Weights:相似度插值方法直接使用item间的相似度作为插值权重(系数),忽略了近邻间的相互关系,为了更好的预测评分,需要重新学习插值权重{θuij|jSk(i;u)}。 

r^ui=bui+jSk(i;u)θuij(rujbuj)

插值权重通过求解一个最小二乘问题得到: 

minθuvu{(rvibvi)jSk(i;u)θuij(rvjbvj)}2

    如果写成Aw=b的形式,则: 

Ajl=vu(rvjbvj)(rvlbvl)bj=vu(rvjbvj)(rvibvi)

由于评分矩阵是稀疏的,很少有用户v对Sk(i;u)都进行了评分。可以同时用正则化和平滑的方式进行处理(结果会向avg收缩): 
A^jl=Ajl+βavg|Ujl|+βb^j=bj+βavg|Uij|+β

六、全局近邻模型:

    前面介绍的近邻模型都是局部的(k近邻),全局近邻模型吸取了矩阵分解模型的优点,从而可以得到更优的结果。这种模型可以使用隐式反馈,并且具有较好的实时性。重新定义预测函数: 

r^ui=μ+bu+bi+|Rk(i;u)|12jRk(i;u){wij(rujbuj)+cij}

    R(u)是用户u的所有评分,cij是用户u的隐式反馈,如租借、购买等。Rk(i;u)是item项的集合,这些item需要同时满足两个条件:一是用户u评过分;二是item i的k近邻。所以Rk(i;u)中item的个数通常是小于k的。需要学习的参数有:bu,bi,wij,cij,同过梯度下降最优化下面这个目标函数来学习参数:

minb,w,c=(u,i){ruiμbubi|Rk(i;u)|12jRk(i;u)(wij(rujbuj)+cij)}2+λ{b2u+b2i+jRk(i;u)(w2ij+c2ij)}2

七、因子分解近邻模型:

    可以对全局近邻模进行因子分解以减少时间和空间复杂度,提高准确率: 

r^ui=μ+bu+bi+|Rk(i;u)|12jRk(i;u){wij(rujbuj)+cij}=μ+bu+bi+|Rk(i;u)|12jRk(i;u){qixj(rujbuj)+qiyj}=μ+bu+bi+qi|Rk(i;u)|12jRk(i;u){xj(rujbuj)+yj}

可以发现最后的表示和SVD++很相似。

八、近邻模型添加时间信息:

    用户的偏好是随着时间不断发生变化的,\emph{如一个人喜欢的电影在2年前和2年后很可能是不同的}。在全局近邻模型中可以很容易加入时间信息:

r^ui=μ+bu(tui)+bi(tui)+|Rk(i;u)|12jRk(i;u)eβu|tuituj|{wij(rujbuj)+cij}

bu(tui),bi(tui)bu,bi的时间函数,详见博文”矩阵分解协同过滤“。 eβu|tuituj|是指数衰退函数,如果用户u对item j的评分是在很久之前,那么item j的评分对现在的影响不大,用指数函数缩小其权重。其他项和原始的全局近邻模型一样,保持不变。

九、参考资料

Recommender Systems Handbook

0
0 0
原创粉丝点击