Slope One 推荐算法

来源:互联网 发布:eclipse java 反编译 编辑:程序博客网 时间:2024/05/16 10:58

Slope One 推荐算法是 2005 年在香港的 WWW 会议上提出来的。可以Google检索会议论文集看原著,不过还是建议看原著之前,看完本文!

Slope One是一个基于Item的个性化推荐算法,股票上有个说法是平均值可以掩盖一切异常波动,所以股票上的各个技术指标都是不同时间段的平均值的曲线图或者柱状图等。同样的,Slope one算法也认为:平均值也可以代替某两个未知个体之间的打分差异。

Slope One算法的核心思想非常的简单,举例如下:

用户对商品的打分,或者从购买记录中,通过某些算法,折合成打分,得到矩阵如下:

User 二胡 现在购物车里买了索爱手机和大宝,或者 二胡同学以前买过这两个商品,当二胡再次来到网站购物,我们要推荐什么给他呢?亚都加湿器和阿凡达DVD 二胡同学喜欢吗?或者喜欢的程度有多大呢?

来看看Slope One的做法:从二胡同学已经打过分的商品出发

索爱手机对亚都加湿器的平均差是: ((4-4) + (3-4) + (2-5)) / 3 = -1.3 (这说明什么?)
大宝SOD蜜对亚都加湿器的平均差是:((3-4) + (2-4) + (3-5)) / 3 = -1.67(这又说明什么?)

那么二胡同学对亚都加湿器的可能打分是:(3*(5+1.3) + 3*(4+1.67)) / (3+3) = '''5.985'''

二胡同学对阿凡达的打分计算方法雷同,省去不写了。

够清楚吗?给出公式如下:

有 n 个人对商品 A 和商品 B 打分了,R(A->B)表示这 n 个人对 A 和对 B 打分的平均差,有 m 个人对商品 B 和商品 C 打分了,R(C->B)表示这 m 个人对C和对B打分的平均差,注意都是平均差而不是平方差,现在某个用户对 A 的打分是 ra,对 C 的打分是 rc,那么 A 对 B 的打分 rb 是:

rb = (n * (ra - R(A->B)) + m * (rc - R(C->B)))/(m+n)

原创粉丝点击