推荐系统最早在亚马逊的网站上应用,根据以往用户的购买行为,推荐出购买某种产品同时可能购买的其他产品,国内做的不错的当当网,有时候买书,它总能给我推荐出我感兴趣的其他书来,也算是技术极大的促进了销售。
基本原理
用户 对事物A打分 对事物B打分 X 3 4 Y 2 4 Z 4 ?
加权算法
- Python
http://www.serpentine.com/blog/2006/12/12/collaborative-filtering-made-easy/ - Java
http://taste.sourceforge.net/
http://www.daniel-lemire.com/fr/documents/publications/SlopeOne.java
http://www.nongnu.org/cofi/
- PHP
http://sourceforge.net/projects/vogoo
http://www.drupal.org/project/cre
http://www.daniel-lemire.com/fr/documents/publications/webpaper.txtSlope one算法作者写的,简单明了,强烈推荐。 - Erlang
http://chlorophil.blogspot.com/2007/06/collaborative-filtering-weighted-slope.html - C#
http://www.kuqin.com/algorithm/20080628/10205.html国人写的C#版本 - T-SQL
http://blog.charliezhu.com/2008/07/21/implementing-slope-one-in-t-sql/
Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 推荐算法。
Slope One 算法试图同时满足这样的的 5 个目标:
1. 易于实现和维护:普通工程师可以轻松解释所有的聚合数据,并且算法易于实现和测试。
2. 运行时可更新的:新增一个评分项,应该对预测结果即时产生影响。
3. 高效率的查询响应:快速的执行查询,可能需要付出更多的空间占用作为代价。
4. 对初次访问者要求少:对于一个评分项目很少的用户,也应该可以获得有效的推荐。
5. 合理的准确性:与最准确的方法相比,此方法应该是有竞争力的,准确性方面的微小增长不能以简单性和扩展性的大量牺牲为代价。
使用这个图可以简明扼要的说明一下 Slope One 算法。
1. User A 给 Item I 打分为 1;给 Item J 打分为 1.5。
2. Uesr B 给 Item I 打分为 2。
3. 问题是:User B 给 Item J 打分为多少?
4. 使用 Slope One 算法,答案是:2.5,2+(1.5-1)=2.5。
是不是非常简单?!Slope One 算法就是这么简单,而且它居然还相当有效!详细的试验分析可以看这里“Slope One Predictors for Online Rating-Based Collaborative Filtering”。
喜欢 Python 的朋友可以看这篇 Blog,“tutorial about how to implement Slope One in Python”,非常详细的介绍了 Slope One 算法在 Python 下的实现步骤。当然了,这只是一个非常简单的实现,你可以使用 MovieLens 或者 EachMovie 的数据集进行一些简单地试验。但如果真正要把它投入到商业环境,还有许多其他的工作必须做好。