代码改变世界

推荐系统实战

2012-09-26 12:02 by zhenjing, ... 阅读, ... 评论, 收藏, 编辑

推荐算法:基于特征的推荐算法

推荐算法准确度度量公式:

其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合。

集合相似度度量公式(N维向量的距离度量公式):

Jaccard公式:

其中,N(u)表示用户u有过正反馈的物品集合。

余弦相似度公式:

UserCF公式:

其中,S(u,k)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣。默认取r(v,i)=1或0。

 

视角:用户即是特征。完全的个性化,每个用户都是唯一的,每个用户表示一维的特征。用户数量即是特征空间的维度,用户特征表示成TU(u)={0,0,0, ... , 1, ..., },t(u, u)=1, 其余为0。 对于物品的特征向量TI(j)={0, 1, 1, 1, 0, ... , ...}, 凡购买物品i的用户维度特征均为1。 进一步,物品的特征空间可用用户购买的次数表示。相似度w(u,v)看成相应维度特征的加权值。

ItemCF公式:

其中,S(i,k)表示和物品i最相似的K个物品集合;N(u)表示用户喜欢的物品集合;w(i,j)表示物品i和物品j的相似度;r(u,i)表示用户u对i物品的兴趣。默认取r(u,i)=1或0。

 

视角:物品即是特征。每个物品都是唯一的,每个物品表示一维的特征。物品数量即是特征空间的维度,物品特征表示成TU(u)={0,0,0, ... , 1, ..., },t(u, u)=1, 其余为0。 对于用户的特征空间TI(j)={0, 1, 1, 1, 0, ... , ...}, 凡购买物品i的维度特征均为1。 进一步,物品的特征空间可用用户购买的次数表示。相似度w(i,j)看成相应维度特征的加权值。

LFM公式:

其中,F表示隐类数量;p(u,k)表示用户u对第k个隐类的兴趣度;q(i,k)表示第k个隐类和物品i的相似度。Alpha表示学习速率;lamda表示正则化参数。

 

视角:LFM的公式就是典型的特征向量空间和特征加权矩阵的泛化表示形式。

TagCF公式:

n(u,b)表示用户u打过标签b的次数;n(b,j)表示物品i被打过标签的次数。

 

视角:标签即是特征。

关系链推荐公式:

其中,F(u)表示用户u的好友集合;w(u,v)可表示用户u和v的熟悉程度(共同好友数),也可表示用户u和v兴趣的相似度(UserCF定义),也可是二者的综合度量;r(v,i)表示用户v对物品i的兴趣。默认取r(v,i)=1或0。

 

视角:好友是特征,或者好友兴趣是特征。

信息流推荐公式:

其中,信息流i的边e表示其他用户对信息流i产生行为;E(e)表示和信息流i边的集合;v(e)表示用户v和当前用户u的相似度(熟悉度);w(e)表示边类型的权重;d(e)表示边e的时间衰减参数。

推荐算法小结

所有的推荐算法都可看成是基于特征向量空间和特征加权矩阵的推荐算法。

 

当特征向量的维度很大时,基于特征向量空间和特征加权矩阵的推荐算法计算复杂度将很大。常见的做法是采用降维技术,比如使用minhash(simhash)。另一种做法是先聚类,将N维的特征空间,转变成M维的特征空间(M<N)。比如在ItemCF算法中,可对物品聚类,然后采用M类的物品作为特征。当然降维后需要计算权值矩阵。

 

另一种极致做法:抛弃权值矩阵,在分类的基础上,直接根据类别推荐。即基于特征向量的匹配。

基于特征匹配的算法框架(用户或物品均可):

1) 特征选取

a) 已知用户特征:直接根据特征分类

b) 未知用户特征:聚类,如LFM

2) 利用购买用户特征,计算物品的特征。比如简单选取TopN个用户特征作为物品的特征;

3) 根据用户特征和物品特征实现推荐,如果特征空间有限(类别不多),可采用类别推荐;如果特征空间巨大,可通过计算特征距离实现推荐。

3种关联用户和物品的推荐系统

 

基于特征的推荐算法

说明:当用户喜欢多个特征,物品具有多个特征时,即是典型的特征向量空间和特征加权矩阵的推荐算法;当用户只喜欢1个特征,物品只具有单个特征时,即基于特征分类的推荐算法。

在实际应用中,常常采用多个推荐算法,分别实现不同的推荐引擎,最后根据不同的推荐引擎的结果做融合,即算法融合,常见的就是加权融合。

推荐系统架构

 

实际推荐系统通常采用多种推荐算法,并根据用户的实时行为反馈调整用户的特征向量(特征的加权系数),进而融合各个推荐算法的推荐结果,在此基础上过滤不要的推荐项,最后结合用户使用场景调整推荐结果排名,给出最终推荐结果。

基于不同特征的推荐算法经常采用定期计算、定期更新特征物品推荐表,比如基于Item的相似度特征,可保存每个item最相关的K个Item;基于用户,保留每个用户最近的N个item;基于基于tag特征,保存每个tag最多次数的M个item;基于用户年龄特征,保存每个年龄段最热门的N个Item;基于用户like,保存各个用户最近喜欢的N个item,或最喜欢的M个类别……

用户的实时行为反馈和用户当前场景都将实时影响最终的推荐结果,用户的实时反馈可直接影响推荐结果融合,而用户的场景将决定推荐结果的排序和展示。同时用户的反馈也将影响离线计算的物品推荐数据。

参考文献:

推荐系统实践  -- 项亮 2012

Hulu’s Recommendation System