基于内容的推荐算法用户易于理解,简单且有效,然而缺点也十分明显:
1)内容必须能够抽取出有意义的特征,且这些特征内容要有良好结构;
2)推荐精度比较低,相同内容特征的物品差异性不大。
基于以上原因,基于内容的推荐往往会和其他方法混合使用,最常用的方法是基于邻域的算法,基于邻域的推荐算法又可以分为两类:基于用户的协同过滤和基于物品的协同过滤。啤酒和尿布的故事非常著名,故事大致意思是,买啤酒的时候总是会买尿布,主要原因是妇女们会嘱咐丈夫在买啤酒的时候带上尿布。事实上,在主流电商平台,都是基于该思想,进行推荐,例如你买了鼠标,所以给你推荐键盘等。那么什么是协同过滤?协同过滤是利用集体智慧的一个典型方法,要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,有一天,你想去看电影了,但你不知道有什么电影好看,然后你可能就会问问你的朋友们,看看有什么好看的电影推荐,这时候大部分人都会倾向于问跟你有品味差不多的人,而这也就是协同过滤的核心思想。
1.基于物品的协同算法(ItemCF)
算法原理:给用户推荐那些和他们之前喜欢的物品相似的物品,物品A和物品B具有很大的相似度是因为喜欢A的用户大都也喜欢物品B。不同于内容推荐,基于物品的协同过滤中的相似主要是利用了用户的集体智慧。
(1)基于共同喜欢物品的用户列表计算,通过公式计算一起购买的方法是
(1)
和分别表示购买物品的用户数和购买物品的用户数,表示同时购买物品和物品的用户数,即共同购买用户数的比例越高,物品间的相似度就越高。
(2)基于余弦(cosine-based)的相似度计算。若数据集包含有用户对物品的评分,则可以更准确的计算相似度:
(2)
其中,是用户对物品的评分,若没有评分则为0。
(3)热门物品的惩罚。相似度公式(1)中,若物品被更多的人购买,分子和分母都会增长,会使物品和很多其他的物品相似度都偏高,这就是ItemCF中的物品热门问题,例如收藏《小苹果》会导致其出现在很多相似的歌曲中,为解决此问题,对于热门物品进行惩罚,如下,设,相关性分数为
这样越大惩罚越厉害,从而使得热门物品相关分数下降。
在得到物品之间的相似度后,进入第二步。计算用户对物品的预测分数:
其中,是物品相似物品的集合,一般来说的相似物品集合是相似分数最高的个,是用户对已购买的物品的评分,若没有评分则取1,如果待打分的物品和用户之前买过多个物品相似,则将相似分数相加,相加的得分越高,则用户购买可能性越大。例如,用户买过A(评分0.8)和B(评分0.6),C和A、B的相似分数分别为0.2分和0.1分,则用户在C上的分数为0.22。
2.基于用户的协同算法(UserCF)
基于物品的协同算法是给用户推荐那些和他们之前喜欢的物品相似的物品,而基于用户的协同算法,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。同样类似,相互之间的相似度为:
和分别表示用户数和用户购买的物品的数量,表示同时购买物品的数量。有了用户相似数据,针对用户挑选个最相似的用户,把未购买的物品推进给用户即可。评分规则如下:
其中,是物品被购买的用户集合,使用户的相似用户集合,挑选最相似的个用户,重合的用户在物品的得分乘以用户和的相似度,累加后得到用户对物品的得分。
3.基于用户协同和基于物品协同的区别
ItemCF是利用物品的相似性来推荐,当用户数量远远超过物品数量的情况下,可以考虑ItemCF,例如购物网站,计算商品相似度不但计算量小,且不用频繁更新。
UserCF适合做新闻、博客或者为内容推荐,引起内容更新频率非常高,特别是社交网站,UserCF是一个更好的选择,可增加用户对对推荐解释的信服程度。
UserCF是推荐用户所在兴趣小组中的热点,更注重社交化,而ItemCF则是根据用户历史行为推荐相似物品,更注重个性化。
ItemCF的多样性远好于UserCF。