@caoo
2018-12-09T07:40:34.000000Z
字数 935
阅读 299
还有一种比较流行的基于物品的协同过滤算法,名为Slope One,它最大的优势是简单,因此易于实现。
Slope One算法是在一篇名为《Slope One:基于在线评分系统的协同过滤算法》的论文中提出的,由Lemire和Machlachlan合著。这篇论文非常值得一读。
我们用一个简单的例子来了解这个算法。假设Amy给PSY打了3分,Whitney Houston打了4分;Ben给PSY打了4分。我们要预测Ben会给Whitney Houston打几分。
用表格来描述这个问题即:
我们可以用以下逻辑来预测Ben对Whitney Houston的评分:由于Amy给Whitney Houston打的分数要比PSY的高一分,所以我们预测Ben也会给高一分,即给到5分。
其实还有其他形式的Slope One算法,比如加权的Slope One。
第一步:计算出两两物品之间的差值(可以在夜间批量计算),在例子中,这个步骤就是得出Whitney Houston要比PSY高一分。
第二步:进行预测,比如一个新用户Ben来到了我们网站,他从未听过Whitney Houston的歌曲,我们想要预测他是否喜欢这个歌手。
通过利用他评价过的歌手以及我们计算好的歌手之间的评分差值,就可以进行预测了。
一、计算差值
我们先为上述例子增加一些数据:
计算物品之间差异的公式是:
其中,card(S)表示S中又多个元素;X表示所有评分值得集合;则表示同时评价过物品 和 的用户数。
我们来考察PSY和Taylor Swift 之间的差值,的值是2 ---- 因为有两个用户(Amy和Ben)同时对PSY和Taylor Swift打过分。
分子uj-ui表示用户对j的评分减去对i的评分,代入公式得:
所以PSY和Taylor Swift的差异是2,即用户们给Taylor Swift的评分比PSY要平均高出两分。那Taylor Swift和PSY的差异呢?