前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >近邻推荐之 Slope One 算法

近邻推荐之 Slope One 算法

作者头像
abs_zero
修改2018-05-26 14:35:47
2K0
修改2018-05-26 14:35:47
举报
文章被收录于专栏:AI派

推荐阅读时间:6min~8min 文章内容:Slope One 算法

前面说到的基于物品的协同过滤属于经典的一类,它存在以下问题:

  • 物品的相似度计算是离线完成的,也就是说无法实时更新
  • 没有考虑相似度的置信度问题,例如,两个物品都被同一个用户喜欢,且只被这一个用户喜欢,那么这两个物品的余弦相似度 1,这个 1 在最后汇总计算推荐分数时,对结果的影响却最大。

Slope One 算法简介

使用 Slope One 算法可以避免上面的问题,Slope One 算法专门针对评分矩阵进行计算,不适用于行为矩阵。它不是计算物品之间的相似度,而是计算物品之间的平均评分偏差。

Slope One算法是基于不同物品之间的评分差的线性算法,预测用户对物品评分的个性化算法。

Slope One 算法的流程如下:

  1. 计算物品之间的评分差的均值,记为物品间的评分偏差
  2. 根据物品间的评分偏差和用户的历史评分,预测用户对未评分的物品的评分

实例演示

来看一个具体实例,下面是用户和物品打分关系表:

用户

物品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 算法,有以下优点:

  1. 算法很简单, 易于实现
  2. 可以在线更新物品之间的平均评分偏差。

考虑下,Slope One 为什么可以做到在线更新物品之间的平均评分偏差呢?

在计算物品之间的平均评分偏差时,我们用到的数据分别是这两个物品的共同用户的评分差之和(分子)以及共同用户数(分母),我们可以记录上次的结果,然后按照相同的规则在线更新当前的结果。

总结

先介绍了 Slope One 算法的计算流程,然后通过实例演示了整个计算过程,最后分析了下 Slope One 算法的优势。

相关推荐:

点击这里领取BAT面试题 ==》:BAT机器学习/深度学习面试300题

点击这里领取AI小抄表 ==》:AI 小抄表福利大放送,快来收藏吧

作者:无邪,个人博客:脑洞大开,专注于机器学习研究。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 脑洞科技栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Slope One 算法简介
  • 实例演示
  • Slope One 的优势
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档