[推荐算法]Slope One算法

来源:互联网 发布:seo网络营销推广工资 编辑:程序博客网 时间:2024/06/05 11:51
和其他类似算法相比,最大特点是算法简单,易于实现,执行效率高

基本概念:
现在 用户 X,Y,Z都对itemA进行评分,并且X,Y也对itemB进行了评分,那么Z对itemB的评分应该是多少呢? 


根据 Slope One算法,?= 4 - [( 5 - 10 ) + ( 3 - 6 )] / 2 = 8
解释一下,X对B的评分比A多5, Y对B的评分比A多3,那么平均B比A多4分,所以Z的B的评分就是 其对A的评分加上平均值。

很容易理解。找到 所有对 itemA和itemB评过分的用户,算出rating平均差值,那么我们就可以估算出只对itemA评分的用户Z对itemB的评分。从而对用户进行推荐。
这个算法还有一个优点,就是当数据量很小的时候,也可以进行较准确的推荐,一定程度上解决了冷启动的问题。 

来看 Weighted Slope One算法
如果有10个用户同时对 itemA和itemB打分,100个用户同时对 itemC 和 itemB 打分,那么Rating A -> B 和Rating C->B所占的比重也不一样

(10* (Za - RatingA->B)  + 100 ( Zc - RatingC->B) ) / (10 + 100) = result

举个例子: 

我们要计算用户Z对B的评分,X和Y都对A和B进行的评分,同时X对C和B也进行了评分

RatingA->B =[ (3-6) + (5-4) ] / 2 =  -1, 平均A比B少1分,根据这个侧面,Z对A评分为3,算出Z对B的评分为4
RatingC->B = 7-6 = 1, 平均C比B多1分, 根据这个侧面,Z对C评分为2,那么Z对B的评分为1
根据加权Slope One算法:
Z对B的评分 =( 2 * 4 + 1 * 1)/ ( 2 + 1) =3


还有一个BI-polar SlopeOne算法,是基于用户对item的喜好(like or dislike)的算法,还在研究中。 


0 0