Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 的协同过滤推荐算法。

——文章概要

该篇文章主要介绍Slope One算法。Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 的协同过滤推荐算法。和其它类似算法相比, 它的最大优点在于算法很简单, 易于实现, 执行效率高, 同时推荐的准确性相对较高。

协同过滤算法理解和Python实现

基于标签的推荐算法

基于图的推荐算法

经典的ItemCF的问题

经典的基于物品推荐,相似度矩阵计算无法实时更新,整个过程都是离线计算的,而且还有另一个问题,相似度计算时没有考虑相似度的置信问题。例如,两个物品,他们都被同一个用户喜欢了,且只被这一个用户喜欢了,那么余弦相似度计算的结果是 1,这个 1 在最后汇总计算推荐分数时,对结果的影响却最大。

Slope One 算法针对这些问题有很好的改进。不过 Slope One 算法专门针对评分矩阵,不适用于行为矩阵。

Slope One算法过程

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

Slope算法主要分为3步

1. 计算物品之间的评分差的均值,记为物品间的评分偏差 (两物品同时被评分)

( r_ui - r_uj ) 表示评分的差,这里需要注意的是j相对i的评分偏差是 r_ui - r_uj ,如果是i相对j的评分偏差则是 r_uj - r _ui,两 者是互为相反数的关系。

其中:

r_ui :用户u对物品i的评分

r_uj :用户u对物品j的评分

N(i) :物品i评过分的用户

N(j) :物品j评过分的用户

N(i) 交 N(j) :表示同时对物品i 和物品j评过分的用户数。

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

其中:

N(u) :用户u评过分的物品

3. 将预测评分进行排序,取Top N对应的物品推荐给用户

实例说明

例如现在有一份评分数据,表示用户对电影的评分:

现在我们来预测预测每个用户对未评分电影的评分。

Step1: 计算物品之间的评分偏差,以U1为例:

同理可以计算出电影b,c,d,e与其他电影的评分偏差。

Step2: 计算用户对未评分物品的可能评分(为了方便计算,这里以U2为例)

由上表可知,用户U2 对电影a没有评分,这里计算用户U2对电影a的评分。

Step3: 评分排序

由于给定样例中,U2只对a没有评过分,所以这里不需要进行排序,正常的话,按分数进行倒排就行。

代码实现

这里采用Python实现,在实现过程中并没有考虑算法的复杂度问题。

加载数据

计算物品之间的评分偏差

计算预估评分

主函数调用

打印结果为:

和上边我们计算的结果一致。

完整代码在: https://github.com/Thinkgamer/Machine-Learning-With-Python/tree/master/Recommend

应用场景

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

其优点:

算法简单,易于实现,执行效率高;

可以发现用户潜在的兴趣爱好;

其缺点:

依赖用户行为,存在冷启动问题和稀疏性问题。

《推荐系统开发实战》是目前已经在京东非自营上线 ,期待自营的上市,感兴趣的朋友可以进行关注!

slope one 推荐算法python 代码_基于协同的SlopeOne推荐算法原理介绍和实现相关推荐

  1. pca算法python代码_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  2. 中文分词算法python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  3. 随机森林分类算法python代码_随机森林的原理及Python代码实现

    原标题:随机森林的原理及Python代码实现 最近在做kaggle的时候,发现随机森林这个算法在分类问题上效果十分的好,大多数情况下效果远要比svm,log回归,knn等算法效果好.因此想琢磨琢磨这个 ...

  4. k邻近算法python代码_机器学习算法之K近邻法-Python实现

    一.算法简介 k近邻法(k-nearest neighbor,k-NN)是一种基本的分类方法,输入的是实例的特征向量,对应于特征空间的点,输出结果为实例的类别,可以取多类.对于训练集来说,每个实例的类 ...

  5. apriori算法python代码_通俗易懂Apriori算法及Python实现

    本篇分为三个部分: 一.算法背景 啤酒与尿布故事: 某超市为增加销售量,提取出了他们超市所有的销售记录进行分析.在对这些小票数据进行分析时,发现男性顾客在购买婴儿尿片时,通常会顺便搭配带打啤酒来犒劳自 ...

  6. 随机森林分类算法python代码_Python机器学习笔记:随机森林算法

    随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为&q ...

  7. dbscan算法python实现_挑子学习笔记:DBSCAN算法的python实现

    DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,是一种基于高密度连通区域的.基于密度的聚类算法,能够将具 ...

  8. l bfgs算法java代码_数值优化:理解L-BFGS算法

    译自<Numerical Optimization: Understanding L-BFGS>,本来只想作为学习CRF的补充材料,读完后发现收获很多,把许多以前零散的知识点都串起来了.对 ...

  9. slope one 推荐算法python 代码_协同推荐算法实践之Slope One的介绍(转)

    Slope One 之一 : 简单高效的协同过滤算法(转)(

最新文章

  1. 国外厂商在行业客户上输单的原因
  2. css3中的box-sizing属性
  3. 【字符串操作之】大小写转换→→toLocaleLowerCase、toLocaleUpperCase
  4. python format函数实例_python中强大的format函数实例详解
  5. 指令由电子计算机,电子计算机主要是以
  6. 作为互联网面临的最大危险之一,当前的 DDoS 趋势如何?
  7. java新手笔记18 类比较
  8. Python的is和==区别
  9. 如何选择嵌入式软件开发平台
  10. golang 使用openoffice 生成pdf_使用golang生成PDF文件
  11. PMP认证的教材更新到第几版了?
  12. iOS开发,第三方应用微信授权登录,获取微信unionid
  13. 【C语言】快速排序psort函数的用法及自主实现psort函数
  14. STAR法则的理解及事例
  15. 2023年最新微信小程序获取用户openid、头像昵称的填写能力和方法原生写法
  16. Django Web 开发极简实战
  17. 【RK按键】按键切换
  18. cadence ic5141安装包_Cadence IC5141 安装文档
  19. 操作系统实验报告 实验1 VMware虚拟机配置与linux基本命令(答案全)
  20. 那些年搭建风控体系所踩的坑

热门文章

  1. 性能优化篇(4):千万别使用CSS表达式
  2. Conda solving environment一晚上还不能完成有解吗?
  3. SCENIC | 从单细胞数据推断基因调控网络和细胞类型
  4. java 类 加载 初始化_java类的加载与初始化
  5. 动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)
  6. 1.5 编程基础之循环控制 44 第n小的质数
  7. Qt学习之Qt基础入门(中)
  8. python爬虫短片_Python爬虫练习:爬取全民小视频(附代码,过程)
  9. 自定义notebook扩展插件_Anaconda3中的Jupyter notebook添加扩展插件
  10. 向前欧拉公式例题_干货丨阅读理解答题万能公式,语文考试高分秘籍!