经典推荐算法学习

 推荐系统有两种常用的算法:基于内容基于协同滤波很多网站的推荐系统都是基于这两种算法。

1. 基于内容推荐算法

以电影评分预测为例,根据用户对电影的评分来预测用户对其未评分电影的打分。具体方法是针对每一部电影提取出一个特征向量n维特征向量V,对于每一个用户,假设其对电影的预测评分为trans(u)*V, u为n维向量。然后,利用梯度下降法求解假设的向量的值即可。

具体可以参考Ng在coursera上的ML教程:https://www.coursera.org/course/ml


 2. 基于协同滤波

协同滤波的依据:兴趣相同的用户对同一部电影的评分很可能是相同的,即基于用户的协同过滤算法;或者,两部相似的电影所得到的同一个用户的评分很能是相同的,即基于项目的协同过滤算法

该方法并不需要去学习电影的特征。

(1)基于用户的(User based)协同过滤算法:

根据邻居用户的偏好信息产生对目标用户的推荐。它基于这样一个假设:如果一些用户对某一类项目的打分比较接近,则他们对其它类项目的打分也比较接近。协同过滤推荐系统采用统计计算方式搜索目标用户的相似用户,并根据相似用户对项目的打分预测目标用户对指定项目的评分,最后选择相似度较高的前若干个相似用户的评分的综合作为预测结果。这种算法不仅计算简单且精确度较高,被现有的协同过滤推荐系统广泛采用。

User-based协同过滤推荐算法的核心就是通过相似性度量方法计算出最近邻居集合,并综合近邻的评分结果产生预测结果。例如,在下表所示的用户一项目评分矩阵中,行代表用户,列代表项目(电影),表中的数值代表用户对某个项目的评价值。现在需要预测用户Tom对电影《枪王之王》的评分(用户Lucy对电影《阿凡达》的评分是缺失的数据)。


由上表,Mary和Tom对电影的评分非常接近,两人之间的兴趣相似度最高,因此Mary是Tom的最接近的邻居,Mary对《枪王之王》的评分结果对预测值的影响占据最大比例。相比之下,用户John和Lucy不是Tom的最近邻居,因为他们对电影的评分与Tom存在较大差距,所以JohLn和Lucy对《枪王之王》的评分对最终预测值的影响相对小一些。在真实的预测中,推荐系统只对前若干个邻居进行搜索,并根据这些邻居的评分为目标用户预测指定项目的评分。 User一based协同过滤推荐算法的主要工作内容是用户相似性度量、最近邻居查询和预测评分


主要度量相似性的方法:

(a)欧式距离

  n维向量x和y的欧式距离:

  可以使用相似度=1/(1+距离)这样的方式来计算相似度,当距离为0时,相似度为1,当距离为无穷大时相似度为0.

(b) Pearson correlation(皮尔逊相关系数)

皮尔逊相关系数用于度量两个变量X和Y之间的线性相关性,其值介于-1与1之间,绝对值越大,则变量之间的线性相关性越大。该方法相对于欧式距离的优势在于,对用户评分的量级并不敏感。例如,某个狂躁者对所有物品的评分都是5,某个忧郁者对所有物品的评分都是1,皮尔逊先关系数会认为两个对应的向量是相等的(系数为1)。皮尔逊先关系数的取值范围是[-1,1],可以通过0.5+0.5*corr归一化至0到1之间。

两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差标准差的商:


关于相关系数的具体意义: 如何通俗易懂地解释「协方差」与「相关系数」的概念

(c) cosin similarity(余弦相似度)

余弦相似性度量方法是通过计算向量间的余弦夹角来度量用户间相似性的。设向量i和j分别表示用户i和用户j在n维空间上的评分,则用户i和用户j之间的相似性为: 

基于协同过滤的推荐系统


(2)基于项目的(item based)协同过滤算法:

ltem一based协同过滤算法主要对目标用户没有评价的项目进行研究,并计算这些项目与其他项目之间的相似性,然后从选择前K个最相似度最大的项目。仍拿上所示的用户一项目评分矩阵作为例子,还是预测用户Tom对电影《枪王之王》的评分。

通过数据分析发现,电影《暮色3:月食》的评分与《枪王之王》评分非常相似(按照列比较),前三个用户对《暮色3:月食》的评分分别为4、3、2,前三个用户对《枪王之王》的评分分别为4、3、3,他们二者相似度最高,因此电影《暮色3:月食》是电影《枪王之王》的最佳邻居,《暮色3:月食》对《枪王之王》的评分预测值的影响占据最大比例。


Item一based协同过滤推荐算法可以分为最近邻查询和产生推荐两个阶段。最近邻查询阶段是要计算项目与项目之间的相似性,搜索目标项目的最近邻居;产生推荐阶段是根据用户对目标项目的最近邻居的评分信息预测目标项目的评分。

ltem一based协同过滤算法的关键步骤仍然是计算项目之间的相似性并选出最相似的项目,这一点与user一based协同过滤类似。计算两个项目i和j之间相似性的基本思想是首先将对两个项目共同评分的用户提取出来,并将每个项目获得的评分看作是n维用户空间的向量,再通过相似性度量公式计算两者之间的相似性。

    

与基于内容的推荐算法相比,协同过滤有下列优点:能够过滤难以进行机器自动基于内容分析的信息。如艺术品、音乐;能够基于一些复杂的,难以表达的概念(信息质量、品位)进行过滤;推荐的新颖性。

然而,协同过滤也存在着以下的缺点:用户对商品的评价非常稀疏,这样基于用户的评价所得到的用户间的相似性可能不准确(即稀疏性问题);随着用户和商品的增多,系统的性能会越来越低(即可扩展性问题);如果从来没有用户对某一商品加以评价,则这个商品就不可能被推荐(即最初评价问题)。



Author: Frank



  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

First Snowflakes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值