推荐系统基础算法:2.基于协同的推荐算法

基于内容的推荐算法用户易于理解,简单且有效,然而缺点也十分明显:

1)内容必须能够抽取出有意义的特征,且这些特征内容要有良好结构;

2)推荐精度比较低,相同内容特征的物品差异性不大。

基于以上原因,基于内容的推荐往往会和其他方法混合使用,最常用的方法是基于邻域的算法,基于邻域的推荐算法又可以分为两类:基于用户的协同过滤基于物品的协同过滤。啤酒和尿布的故事非常著名,故事大致意思是,买啤酒的时候总是会买尿布,主要原因是妇女们会嘱咐丈夫在买啤酒的时候带上尿布。事实上,在主流电商平台,都是基于该思想,进行推荐,例如你买了鼠标,所以给你推荐键盘等。那么什么是协同过滤?协同过滤是利用集体智慧的一个典型方法,要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,有一天,你想去看电影了,但你不知道有什么电影好看,然后你可能就会问问你的朋友们,看看有什么好看的电影推荐,这时候大部分人都会倾向于问跟你有品味差不多的人,而这也就是协同过滤的核心思想。

1.基于物品的协同算法(ItemCF)

算法原理:给用户推荐那些和他们之前喜欢的物品相似的物品,物品A和物品B具有很大的相似度是因为喜欢A的用户大都也喜欢物品B。不同于内容推荐,基于物品的协同过滤中的相似主要是利用了用户的集体智慧。

(1)基于共同喜欢物品的用户列表计算,通过公式计算一起购买的方法是

w_{i,j}=\frac{N(i) \cap N(j)}{\sqrt{|N(i)|*|N(j)|}}(1)

N(i)N(j)分别表示购买物品i的用户数和购买物品j的用户数,N(i) \cap N(j)表示同时购买物品i和物品j的用户数,即共同购买用户数的比例越高,物品间的相似度就越高。

(2)基于余弦(cosine-based)的相似度计算。若数据集包含有用户对物品的评分,则可以更准确的计算相似度:

w_{i,j}=cos(\theta)=\frac{\sum_{k=1}^{len}(n_{ki}\times n_{kj})}{\sqrt{\sum_{k=1}^{len}n_{ki}^2}\sqrt{\sum_{k=1}^{len}n_{kj}^2}}(2)

其中,n_{ki}是用户k对物品i的评分,若没有评分则为0。

(3)热门物品的惩罚。相似度公式(1)中,若物品i被更多的人购买,分子N(i) \cap N(j)和分母\sqrt{|N(i)|*|N(j)|}都会增长,会使物品i和很多其他的物品相似度都偏高,这就是ItemCF中的物品热门问题,例如收藏《小苹果》会导致其出现在很多相似的歌曲中,为解决此问题,对于热门物品i进行惩罚,如下,设\alpha\in (0,0.5),相关性分数为

w_{i,j}=\frac{N(i) \cap N(j)}{\sqrt{|N(i)|^{\alpha}*|N(j)|^{1-\alpha}}}

这样N(i)越大惩罚越厉害,从而使得热门物品相关分数下降。

在得到物品之间的相似度后,进入第二步。计算用户u对物品i的预测分数:

p_{u_i}=\sum_{N(u) \cap S(j,k)}w_{ji}score_{u_j}

其中,S(j,k)是物品j相似物品的集合,一般来说j的相似物品集合是相似分数最高的k个,score_{u_j}是用户对已购买的物品j的评分,若没有评分则取1,如果待打分的物品和用户之前买过多个物品相似,则将相似分数相加,相加的得分越高,则用户购买可能性越大。例如,用户买过A(评分0.8)和B(评分0.6),C和A、B的相似分数分别为0.2分和0.1分,则用户在C上的分数为0.22。

2.基于用户的协同算法(UserCF)

基于物品的协同算法是给用户推荐那些和他们之前喜欢的物品相似的物品,而基于用户的协同算法,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。同样类似,相互之间的相似度为:

w_{ab}=\frac{N(a) \cap N(b)}{\sqrt{|N(a)|*|N(b)|}}

N(a)N(b)分别表示用户数a和用户b购买的物品的数量,N(a) \cap N(b)表示同时购买物品的数量。有了用户相似数据,针对用户U挑选K个最相似的用户,把未购买的物品推进给用户U即可。评分规则如下:

p_{u_i}=\sum_{N(i) \cap S(u,k)}w_{vu}score_{vu}

其中,N(i)是物品i被购买的用户集合,S(u,k)使用户u的相似用户集合,挑选最相似的k个用户,重合的用户v在物品i的得分乘以用户uv的相似度,累加后得到用户u对物品i的得分。

3.基于用户协同和基于物品协同的区别

ItemCF是利用物品的相似性来推荐,当用户数量远远超过物品数量的情况下,可以考虑ItemCF,例如购物网站,计算商品相似度不但计算量小,且不用频繁更新。

UserCF适合做新闻、博客或者为内容推荐,引起内容更新频率非常高,特别是社交网站,UserCF是一个更好的选择,可增加用户对对推荐解释的信服程度。

UserCF是推荐用户所在兴趣小组中的热点,更注重社交化,而ItemCF则是根据用户历史行为推荐相似物品,更注重个性化。

ItemCF的多样性远好于UserCF。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值