2.1 用户行为数据
用户行为在推荐系统中一般分为两种,显性反馈行为(explicit feedback)和隐性反馈行为(implicit feedback),显性反馈行为包括用户明确表示对物品喜好的行为,隐性反馈行为指的是那些不能明确反应用户喜好的行为:
用户行为的统一表示为:
无上下文信息的隐性反馈数据集:每一条行为记录仅仅包含用户ID和物品ID:eg:book-crossin
无上下文信息的显性反馈数据集:每一条记录包含用户ID、物品ID和用户对物品的评分。
有上下文信息的隐性反馈数据集:每一条记录包含用户ID、物品ID和用户对物品产生行为的时间戳。eg:Lastfm数据集
2.2 用户行为分析
2.2.1 用户活跃度和物品流行度的分布
物品的流行度和用户的活跃度都满足于长尾分布,长尾分布为:
2.2.2 用户活跃度和物品流行度
由于新用户一般浏览热门内容,老用户可能会浏览一些相较于不热门的,因此用户活跃度和平均物品热门度曲线呈现出下降趋势,表明用户越活跃,越趋向于浏览冷门的内容。
协同过滤算法:仅仅根据用户行为数据设计的推荐算法。分为基于邻域的方法(neighborhood-based)、隐语义模型(latent factor model)、基于图的随机游走算法(random walk on graph)
基于邻域的方法(neighborhood-based)又可分为基于用户的协同过滤算法和基于物品的协同过滤算法。
基于用户的协同过滤算法:给用户推荐和他兴趣相似的其他用户喜欢的物品。
基于物品的协同过滤算法:给用户推荐和他之前喜欢的物品相似的物品。
2.3 实验设计和算法评测
2.3.1 数据集
2.3.2 实验设计
首先将数据集按照均匀分布随机分为M份,然后选取其中一份作为测试集,M-1份作为训练集。为了防止过拟合,进行M次实验,且每次使用不同的测试集,最后对M次实验结果取平均值。
2.3.3 评测指标
对用户u推荐N个物品(记为R(u)),令用户u在测试集上喜欢的物品集合为T(u),然后可以通过准确率/召回率评测推荐算法的精度:
召回率(Recall):即正确预测为正的占全部实际为正的比例
准确率(Precision):也叫查准率,即正确预测为正的占全部预测为正的比例
覆盖率(coverage):
新颖度:这里用推荐列表中物品的平均流行度度量推荐结果的新颖度,如果推荐出的物品都很热门,说明推荐的新颖度较低,否则说明推荐结果比较新颖。
2.4 基于邻域的算法
2.4.1 基于用户的协同过滤算法(UserCF)
基于用户的协同过滤算法主要包括两个步骤:
(1) 找到和目标用户兴趣相似的用户集合
(2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
步骤(1)主要利用兴趣相似度,主要利用行为的相似度计算兴趣的相似度,给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,N(v)表示用户v有过正反馈的物品集合,可用雅卡尔系数(Jaccard index)公式计算u和v的兴趣相似度:
或者通过余弦相似度计算:
用以下公式度量UserCF算法中用户u对物品i的感兴趣程度:
其中,S(u,K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,是用户u和用户v的兴趣相似度,
代表用户v对物品i的兴趣。UserCF中K是最重要的参数,K的取值影响准确率和召回率以及流行度覆盖率。
用户相似度计算的改进:因存在若两个人都购买新华字典并不能说明两个人兴趣相同的问题,对用户相似度计算进行改进,公式如下:
其中N(i)表示对物品i产生过行为用户的数量。
2.4.2 基于物品的协同过滤算法(ItemCF)
由于用户过多计算用户相似度时间复杂度很高,因此产生了ItemCF。并不利用物品的内容属性计算物品之间的相似度,主要通过分析用户的行为记录计算物品之间的相似度。例如,物品A和物品B之间有很大的相似度是因为喜欢物品A的用户大都喜欢物品B。
ItemCF的主要步骤也分为两步:
(1)计算物品之间的相似度
(2)根据物品的相似度和用户的历史行为给用户生成推荐列表
计算相似度首先提出以下公式:
N(i)表示喜欢物品i的用户数,分子为同时喜欢物品i和物品j的用户数,可以理解为喜欢物品i的用户中有多少比例的用户也喜欢j,但是如果物品j很热门,很多人都喜欢, 那么就会很大,接近1。因此进行改进,提出新的公式:
得到物品相似度后,ItemCF通过以下公式计算用户u对一个物品j的兴趣:
N(u)为用户u喜欢物品的集合,S(j,K)是和物品j相似度最高的K个物品的集合,是物品j和物品i的相似度,
是用户u对用户i的兴趣,(隐反馈中取1)。其中K为ItemCF算法的参数,K的取值影响精度即(recall和precision)以及覆盖率,流行度等。
物品相似度计算的改进:由于可能有人购买了大量书籍拿来销售,但他对这些书籍并不感兴趣,因此此人对于物品相似度的贡献应小于正常的人,产生ItemCF-CUF算法:
其中N(u)表示用户u喜欢物品的个数。
物品相似度矩阵进行归一化(ItemCF-Norm)后可提高准确率:进行如下归一化:
进行归一化的原因是比如有两类物品A和B,A类物品之间相似度为0.5,B类物品之间相似度为0.6,若不进行归一化,系统会只推荐B类物品,而如果做了归一化两类物品相似度均为1,都会进行推荐。
UserCF和ItemCF对比:
ItemCF仍然存在哈利波特问题,即由于哈利波特这本书籍过于热门,导致其他物品和哈利波特的相似度都很高,可以再进行改进,对分母进行惩罚:
此时α也成为一个参数。但还是存在不同领域热门物品相似度高的问题,此时需要引入内容数据来解决这个问题。
2.5 隐语义模型(latent factor model)
隐语义模型通过隐含特征(latent factor)联系用户兴趣和物品,隐语义模型(LFM)通过如下公式计算用户u对物品i的兴趣:
其中和
为模型的参数,
表示用户u的兴趣和第k个隐类的关系,而
表示第k个隐类和物品i之间的关系。两个参数从数据集中计算得到。
由于隐性反馈数据集中只包含正样本(用户喜欢什么),而不包含负样本(用户不喜欢什么),因此我们需要生成负样本,生成负样本需要遵循以下两个原则:
1.对每个用户,要保证正负样本的平衡(数目相似)
2.对每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品。
采样完之后,可以得到用户物品集合,若(u,i)是正样本,则有
=1,否则
。优化损失函数来寻找参数p和q:
后面两项是防拟合的正则化项,通过梯度下降法最小化此损失函数即可得到p和q,分别对和
求偏导数,得到如下递推公式:
其中,α为学习速率。因此在LFM中参数有4个:
1.隐特征的个数F
2.学习速率α
3.正则化参数λ
4.负样本/正样本比例ratio
其中ratio的值对LFM性能影响最大,一般取F=100,α=0.02,λ=0.01然后研究ratio值的影响。
2.6 基于图的模型
基于图的模型(graph-based model)是推荐系统中的重要内容,首先将用户物品行为集合用二分图G(V,E)表示,V代表用户集合顶点,E代表物品集合顶点。V和E之间的边代表用户和物品之间产生过行为。
2.6.1 基于图的推荐算法
用二分图表示后,对用户u推荐就可以转化为度量用户顶点和与
没有边直接相连的物品节点在图上的相关性。图中顶点之间的相关性主要取决于下面三个方面:
1.两个顶点之间的路径数
2.两个顶点之间路径的长度
3.两个顶点之间路径经过的顶点
相关性高的一对顶点一般具有如下特征:两个顶点之间有很多路径相连,连接两个顶点之间的路径长度比较短,两个顶点之间路径不经过出度较大的顶点。
PersonalRank算法:从用户u对应的节点vu开始在用户物品二分图上进行随机游走。游走到任何一个节点时,首先按照概率α决定是继续游走,还是停止这次游走并从节点开始重新游走。最后可以得到如下公式: