推荐阅读时间:6min~8min 文章内容:Slope One 算法
前面说到的基于物品的协同过滤属于经典的一类,它存在以下问题:
使用 Slope One 算法可以避免上面的问题,Slope One 算法专门针对评分矩阵进行计算,不适用于行为矩阵。它不是计算物品之间的相似度,而是计算物品之间的平均评分偏差。
Slope One算法是基于不同物品之间的评分差的线性算法,预测用户对物品评分的个性化算法。
Slope One 算法的流程如下:
来看一个具体实例,下面是用户和物品打分关系表:
用户 | 物品A | 物品B | 物品C |
---|---|---|---|
用户1 | 5 | 3 | 2 |
用户2 | 3 | 4 | 未评分 |
用户3 | 未评分 | 2 | 5 |
得到以上评分矩阵之后,来看下如何计算物品之间的平均评分偏差。例如,要计算物品 A 和物品 B 的平均评分偏差,先找到共同对物品 A 和物品 B 的用户评分记录,这里为用户1和用户2的评分记录。
将所有物品之间的平均评分偏差计算出来:
- | 物品A | 物品B | 物品C |
---|---|---|---|
物品A | - | 0.5(2) | 3(1) |
物品B | -0.5(2) | - | 1(1) |
物品C | -3(1) | -1(1) | - |
PS:括号里的数字表示该物品的共同评价用户数。
如何根据上面的结果来预测用户3对物品A的评分呢?
先假设用户3只对物品B打分为 2, 根据上面的物品平均评分偏差表得到:
那么可以得到用户3对物品A的评价是 2 + 0.5 = 2.5。
同理,假设用户3只对物品C打分为 5,根据上面的物品平均评分偏差表得到:
那么可以得到用户3对物品A的评价是 5 + 3 = 8。
现在的实际情况是用户3对物品B的打分为2,对物品C的打分为5。那么可以根据每个物品的共同评价人数来进行加权平均。
4.33 就是预测出的用户3对物品A的评分。是不是很简单呢?
使用 Slope One 算法,有以下优点:
考虑下,Slope One 为什么可以做到在线更新物品之间的平均评分偏差呢?
在计算物品之间的平均评分偏差时,我们用到的数据分别是这两个物品的共同用户的评分差之和(分子)以及共同用户数(分母),我们可以记录上次的结果,然后按照相同的规则在线更新当前的结果。
先介绍了 Slope One 算法的计算流程,然后通过实例演示了整个计算过程,最后分析了下 Slope One 算法的优势。
相关推荐:
点击这里领取BAT面试题 ==》:BAT机器学习/深度学习面试300题
点击这里领取AI小抄表 ==》:AI 小抄表福利大放送,快来收藏吧
作者:无邪,个人博客:脑洞大开,专注于机器学习研究。