Transcript 3. 主要推荐算法
钟文波 | [email protected] 2013-05-17, Friday training_set数据集: 训练集大小:1262741 用户数:9722(平均每用户评分130部电影) 电影数:7889(平均每部电影被160用户评分) 全局评分平均数:3.678 (RMSE:0.6900) 评分分布: 1 2 3 4 5 17139 64298 400006 608401 172897 1.36% 5.09% 31.68% 48.18% 13.69% movie_tag数据集: 标签数量范围:(1~ 52) user_history数据集: 历史记录数量:987W 历史记录用户ID及电影ID在训练集中:1577431 猜测用户观看历史数据中用户对于电影的评分: 如果用户ID&&电影ID在训练集中的平均评分大于全局平 均评分,则取对应的评分值为大于全局平均数的值。 如果用户ID&&电影ID在训练集中的平均评分小于全局平 均评分,则取对应的评分值为小于全局平均数的值。 其余取全局平均分或者介于以上两个评分的评分。 user_social数据集 单向关注的社交网路数据 ;类似于新浪微博,用户A可以 关注用户用户B而不需要得到用户B的允许,这种社交网络 中的用户关系是单向的,可以用有向图表示。 模型 RMSE 全局评分值 0.72 以用户评分平均值作为预测评分 0.66 以电影评分平均值作为预测评分 0.66 基于用户的协同过滤 0.6421 基于物品的协同过滤 0.6120 slopeone 0.6489 LFM 0.6227 加入偏置LFM 0.6172 考虑邻域影响的LFM(SVD++) 0.6231 以Bias-SVD为基准的user-base 0.6142 以Bias-SVD为基准的item-base 0.6049 线性拟合模型 0.6012 基于物品的协同过滤推荐算法: (1)计算电影相似度,得到K个最近邻居 (2)预测用户对于电影的打分 改进的余弦计算公式: sim(i, j ) 皮尔逊相似度计算公式: sim(i, j ) (ru,i ru )(ru, j ru ) (ru ,i ri )(ru , j rj ) uU 2 ( r r ) uU u,i u uU 2 ( r r ) uU u,i i 2 ( r r ) uU u, j u 2 ( r r ) uU u, j j (1)基于物品的协同过滤相似度压缩: 例如计算item1,item2之间的相似度,如果A表示对 item1评分过的用户集合,B表示对item2评分过的用户集 合,压缩系数公式表示如下: AB S punishFactor(item1, item2) AB 增加压缩系数后皮尔逊相似度计算公式: sim(i, j ) S * uU (ru,i ri )(ru , j rj ) 2 ( r r ) uU u,i i 2 ( r r ) uU u, j j (2)利用电影标签信息改进相似度的计算: 基于邻居的协同过滤推荐算法(Item-Base)当中,对于数据 集movie_tag ,利用这个数据集来求两部movie之间的相似度。 我们可以这么认为如果两部电影具有相同的标签,那么这两 部电影之间是具有一定的相似度的,相同标签越多它们则具 有更高的相似度。在标签系统中,两部电影之间的相似度用 两部电影的共同标签数除以两部电影的总标签数成正比。 如果用A表示movie1的标签,B表示movie2的标签,则在标 签系统中两部电影的相似度可以表示为: AB St Sim ilarByTag(m ovie1, m ovie2) AB (3)利用用户观看电影历史记录信息改进相似度的计算: 基于邻居的协同过滤推荐算法(Item-Base)当中,对于数据 集user_history 。我们可以这么认为如果两部电影具有相同的 观看用户,那么这两部电影之间是具有一定的相似度的,相 同观看用户越多它们则具有更高的相似度。 如果用A表示观看过movie1的用户,B表示观看过movie2的 用户,则利用用户观看电影历史记录,两部电影的相似度可 以表示为: AB Sh Sim ilarByUserHis(m ovie1, m ovie2) AB 最终item相似度的计算公式: 惩罚系数: S punishFactor(item1, item2) 通过标签计算的相似度: St SimilarByTag(movie1, movie2) 观看历史计算的相似度: Sh SimilarByUserHis(movie1, movie2) sim(i, j ) S * Pearson(i, j ) * (1 a * St ) * (1 b * Sh ) 预测评分阶段: (1)预测评分计算公式(以电影平均分作为基准评分): p(u, i) r jJ i sim(i, j) (ru , j r j) jJ sim(i, j) (2)最终预测评分计算公式(以SVD预测作为基准评分): p(u, i) bu, i jJ sim(i, j) (ru, j bu, j ) jJ sim(i, j) 加入偏置后的LFM计算公式: (2)Netflix Prize——BiasSVD 实际情况下,一个评分系统有些固有属性和用户物品 无关,而用户也有些属性和物品无关,物品也有些属性和 用户无关。 rˆui mean bu bi puf qif f mean 训练集中所有记录的评分的全局平均数。网站不同,网站的整体评 分分布也会显示出一些差异。 bu 用户偏置项。这一项表示了用户的评分习惯中和物品没有关系的那种 因素。 bi 物品偏置项。这一项表示了物品接受评分中和用户没有什么关系的因 素。 加入偏置后的LFM计算公式: (2)Netflix Prize——BiasSVD 定义损失函数: rˆ mean b ui u bi puf qif f C ( p, q ) rui rˆui 2 ( u ,i )Train (|| pu ||2 || qi ||2 ) 最小化上边的损失函数,根据随机梯度下降法,得到递推公式。 加入偏置后的LFM计算公式: (1)梯度下降法(参数Gamma1,Lambda1,Gamma2, Lambda2),最小化损失函数,根据随机梯度下降法,得 到如下递推公式: eui rui rˆui bu bu 1 * (eui 1 * bu ) bi bi 1 * (eui 1 * bi ) puf puf 2 * (eui * qif 2 * puf ) qif qif 2 * (eui * puf 2 * qif ) γ是学习速度,取值需要通过反复试验获取,每一次迭代对γ进行衰减(γ*=0.9),这 是随机梯度下降算法要求的,目的是使算法尽快收敛。 加入偏置后的LFM计算公式: (1)影响算法的主要因素: • 1、Dimension数(factor数) • 2、P、Q矩阵的初始值( nextFloat()/Math.sqrt(factor)) • 3、学习速率与正则化系数(Gamma1,Lambda1,Gamma2, Lambda2) • 4、bi[]、bu[]初始化,bi[]、bu[]一般初始化为0 模型拟合: (1)预测值线性拟合 method:假设我们有K个不同的预测器。 K rˆ ak rˆ ( k ) k 1 (1)《推荐系统实践》项亮 (2)《Netflix Prize 中的协同过滤算法》吴金龙 (3) Baidu URL:http://www.baidu.com (4)《How we won the Netflix progress prize》Yehuda Koren