版权声明:本文为CSDN博主「心雨心辰」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/xidianliutingting/article/details/51916578 做了部分改动

示例

多个吃货在某美团的某家饭馆点餐,如下两道菜:1. 可乐鸡翅 鸡翅.png 2. 披萨 披萨.png
在吃过之后,分别给出了如下的评价

可乐鸡翅 披萨
小明 4 5
小红 4 3
小华 2 3
小伟 2

问题是问小伟对披萨的评分会是多少呢?
解题思路:已知4位同学对可乐鸡翅的评价,计算另外3位同学对可乐鸡翅的评分与对披萨评分的差值的平均数 a(保留正负值),然后用小伟对可乐鸡翅的评分加上 a 即可得到小伟与披萨的预估评分。

这个解题思路,就是Slope-one方法的解题思路。

算法思想

Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个Item-Based 的协同过滤推荐算法。和其它类似算法相比, 它的最大优点在于算法很简单, 易于实现, 执行效率高, 同时推荐的准确性相对较高。
Slope One算法是基于不同物品之间的评分差的线性算法,预测用户对物品评分的个性化算法。主要两步:
Step1:计算物品之间的评分差的均值,记为物品间的评分偏差(两物品同时被评分):

Slope-one算法 - 图3

其中,Slope-one算法 - 图4 是用户u对物品i的评分,Slope-one算法 - 图5 是用户u对物品j的评分。Slope-one算法 - 图6是对物品i评分的用户,而Slope-one算法 - 图7是对物品i和物品j都评过分的用户,Slope-one算法 - 图8是对物品i和物品j都评过分的用户数。

Step2:根据物品间的评分偏差和用户的历史评分,预测用户对未评分的物品的评分。

Slope-one算法 - 图9

其中Slope-one算法 - 图10是用户u评分过的用户。

Step3:将预测评分排序,取topN对应的物品推荐给用户。
举例:
假设有100个人对物品A和物品B打分了,Slope-one算法 - 图11表示这100个人对A和B打分的平均偏差;有1000个人对物品B和物品C打分了, Slope-one算法 - 图12表示这1000个人对C和B打分的平均偏差。现在有个新用户,对A的评分为Slope-one算法 - 图13,对C的评分为Slope-one算法 - 图14,则对B的评分为:
Slope-one算法 - 图15


SlopeOne使用场景

该算法适用于物品更新不频繁,数量相对较稳定并且物品数目明显小于用户数的场景。依赖用户的用户行为日志和物品偏好的相关内容。
优点:

  1. 算法简单,易于实现,执行效率高;
  2. 可以发现用户潜在的兴趣爱好;

缺点:

  1. 依赖用户行为;
  2. 存在冷启动问题和稀疏性问题。