Slope One协同过滤算法
Slope One是一个简单高效的协同过滤算法,由 Daniel Lemire 教授在 2005 年提出。
基本概念
用户X,Y和Z都对Item1打了分。 同时用户X,Y还对Item2打了分,用户Z对Item2可能会打多少分呢?
| 用户 | 对Item1的评分 | 对Item2的评分 |
| X | 5 | 3 |
| Y | 4 | 3 |
| Z | 4 | ? |
计算方法:4 – ((5-3) + (4-3))/2 = 2.5,找到对Item1和Item2都打过分的用户,算出rating差的平均值,这样我们就能推测出对Item1打过分的用户Z对Item2的可能的评分,并据此向Z用户推荐新项目。
Slope One的优点
这里我们能看出Slope One算法的一个很大的优点,在只有很少的数据时候也能得到一个相对准确的推荐, 这一点可以解决Cold Start的问题。
另外一种情况
如果100个用户对Item1和Item2的评分差的平均值是2,1000个用户对Item2和Item3的评分差的平均值是-3,那Item1相对Item3的评分情况又是如何?显然这两个rating差的权重是不一样的。因此我们的计算过程是:
- (100×(Rating 1 to 2) + 1000×(Rating 3 to 2)) / (100 + 1000)
- (100×2 + 1000×(-3)) / (100 + 1000)
- -2800/1100
- 约等于-2.55
也就是说Item1和Item3的评分差的平均值是2.55
0 Responses to “协同过滤(Collaborative Filtering)扫盲班(5)”