Slop One算法-Collaborative Filtering

来源:互联网 发布:网络举报 编辑:程序博客网 时间:2024/05/22 08:23
一般情况下, 实施Collaborative Filtering的过程是:
1. 你有一大群的用户.
2. 你用一大堆的东西.
3. 一些用户很热心的告诉你, 他们对这些东西的看法.
4. 你想给他们更多他们可能喜欢的东西.


Slope One是一种rating based的预测算法.
Slope One 算法是由 Daniel Lemire 教授在 2005 年提出. 是一种简单的C.F.的算法, 但是确解决了若干个难以解决的问题. 比如 cold start.

概念简单, 看下面的表:

UserRating to Item 1Rating to Item 2X53Y43Z4?


用户X, Y分别对item 1, 2评分, 以及Z1, 如何预测Z2?
第一个想法就是, 当然根据三个用户已经评分过的平均差异, 推测出来:
差异是:  ((5-3) + (4-3))/2=1.5

那, 这样, Z3, 可能是 4-1.5= 2.5

有了这个预测, 我们可以向Z用户推荐一些ta可能评分比较高的内容.

这样准确嘛? 不准确.

所以会有加权, 双级的算法.

请参看 : http://www.daniel-lemire.com/fr/abstracts/SDM2005.html


最后带上一个python的实现:

http://www.serpentine.com/wordpress/wp-content/uploads/2006/12/slope_one.py.txt