一、基于模型的协同过滤推荐算法与基于邻域的算法的差异

基于邻域的协同过滤方法可以看作是KNN的泛化。主要是将所有的用户数据,读入内存,进行运算,当数据量特别大时,显然这种方法是不靠谱的。 这些方法是基于实例的方法,所以,除了可选的预处理阶段之外,没有专门为预测提前创建模型。

基于模型的协同过滤推荐算法,与基于近邻的推荐算法是相对的。它基于样本用户的喜好信息,依托于一些机器学习的模型,通过离线进行训练,得到一个推荐模型,然后根据实时的用户喜好的信息进行预测,在线进行推荐。

二、基于模型的协同过滤推荐算法的优势

  1. 节省空间。一般情况下,学习模型的大小比原始评分矩阵小得多。
  2. 训练与预测的速度快。基于邻域的方法的预处理阶段是用户数量或项目数量的二次方。(比较某一个 用户/项目 和其他所有的 用户/项目 , 以找到同类 用户/项目 )而基于模型的系统在建立训练模型的预处理环节需要的时间往往要少得多。
    在大多数情况下,压缩和总结模型可以被用来加快预测
  3. 避免过拟合。过度拟合是许多机器学习算法中的一个严重问题。 基于模型的方法的总结方法通常可以帮助避免过度拟合。 此外,在基于模型的方法中,可以使用正则化方法使这些模型具有鲁棒性。

三、基于模型的协同过滤与分类回归问题的联系

在基于模型的方法中,与有监督或无监督的机器学习方法一样,预先创建了从数据学习到的模型。 因此,训练(或模型构建阶段)与预测阶段明显分开。
  传统机器学习中此类方法的示例包括决策树、基于规则的方法、贝叶斯分类器、回归模型、支持向量机和神经网络 。
  有趣的是,几乎所有这些模型都可以推广到协同过滤场景,就像 k 最近邻分类器可以推广到基于邻域的模型进行协同过滤一样。
  这是因为传统的分类和回归问题是矩阵补全(或协同过滤)问题的特例。

在为协同过滤设计学习算法时,记住协同过滤问题和数据分类问题之间的相似性很有用。这是因为数据分类是一个研究比较深入的领域,分类的各种解决方案也为协同过滤算法的设计提供了重要的提示。

事实上,大多数机器学习和分类算法在协同过滤文献中都有直接的类比。以类似于分类模型的方式,可以理解协同过滤推荐系统中的大量算法。(例如,分类文献中的经典元算法,如bagging、boosting 或模型组合,可以扩展到协同过滤。)

然而,将数据分类模型直接推广到矩阵完成问题并不总是那么容易,尤其是当绝大多数条目丢失时。 此外,各种模型的相对有效性在不同的环境中是不同的。 例如,一些最近的协同过滤模型,例如潜在因子模型,特别适合协同过滤。这些模型在数据分类的背景下不被视为有竞争力的好模型。(本文为CSDN博主「UQI-LIUWJ」的原创文章 1.1小节)

四、基于模型的协同过滤算法方法分类

基于模型的协同过滤相关算法有很多,这里进行一下具体分类。我们的问题是这样的:有n个物品,n个用户的数据,但是只有部分用户和物品之间是有评分数据的,其它部分评分是空白,此时需要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。解决这个问题一般可以用机器学习的方法,具体可以使用关联算法聚类算法分类算法回归算法矩阵分解神经网络,图模型以及隐语义模型来解决。

4.1 用关联算法做协同过滤

一般我们可以找出用户购买的所有物品数据里频繁出现的项集活序列,来做频繁集挖掘,找到满足支持度阈值的关联物品的频繁N项集或者序列。如果用户购买了频繁N项集或者序列里的部分物品,那么我们可以将频繁项集或序列里的其他物品按一定的评分准则推荐给用户,这个评分准则可以包括支持度,置信度和提升度等。常用的关联推荐算法有Apriori,FP Tree和PrefixSpan。(本段摘自CSDN博主 小飞侠v科比 的文章 第3节 (下同))

4.2 用聚类算法做协同过滤

用聚类算法做协同过滤就和前面的基于用户或者项目的协同过滤有些类似了。我们可以按照用户或者按照物品基于一定的距离度量来进行聚类。如果基于用户聚类,则可以将用户按照一定距离度量方式分成不同的目标人群,将同样目标人群评分高的物品推荐给目标用户。基于物品聚类的话,则是将用户评分高物品的相似同类物品推荐给用户。常用的聚类推荐算法有K-Means, BIRCH, DBSCAN和谱聚类。

4.3 用分类算法做协同过滤

如果我们根据用户评分的高低,将分数分成几段的话,则这个问题变成分类问题。比如最直接的,设置一份评分阈值,评分高于阈值的就是推荐,评分低于阈值就是不推荐,我们将问题变成了一个二分类问题。虽然分类问题的算法多如牛毛,但是目前使用最广泛的是逻辑回归。为啥是逻辑回归而不是看起来更加高大上的比如支持向量机呢?因为逻辑回归的解释性比较强,每个物品是否推荐我们都有一个明确的概率放在这,同时可以对数据的特征做工程化,得到调优的目的。目前逻辑回归做协同过滤在BAT等大厂已经非常成熟了。常见的分类推荐算法有逻辑回归和朴素贝叶斯,两者的特点是解释性很强。

4.4用回归算法做协同过滤

用回归算法做协同过滤比分类算法看起来更加的自然。我们的评分可以是一个连续的值而不是离散的值,通过回归模型我们可以得到目标用户对某商品的预测打分。常用的回归推荐算法有Ridge回归,回归树和支持向量回归。

4.5用矩阵分解做协同过滤

矩阵分解的基本思想就是把原来的大矩阵近似的分成两个小矩阵的乘积,在推荐时不使用大矩阵参与计算,而是使用分解得到的两个小矩阵。按照矩阵分解的原理,我们会发现原来m×n的大矩阵会分解成m×k 和k×n的两个小矩阵,这里多出来一个k维向量,就是隐因子向量,类似的表达还有隐因子、隐向量、隐含特征、隐语义、隐变量等。

基于矩阵分解的推荐算法的核心假设是用隐语义(隐变量)来表达用户和物品,他们的乘积就成了原始的元素。我们认为实际的交互数据是由一系列的隐变量的影响下产生的,这些隐变量代表了用户和物品一部分共有的特征,在物品身上表现为属性特征,在用户身上表现为偏好特征,只不过这些因子并不具有实际意义,也不一定具有非常好的可解释性,每一个维度也没有确定的标签名字,所以才会叫做“隐变量”。例如在推荐电影时,电影可以分为动作,喜剧,爱情等多种种类,这些分类就是电影的属性特征,同时也是用户的偏好特征,也就是“隐变量”。

而矩阵分解后得到的两个包含隐变量的小矩阵,一个代表用户的隐含特征,一个代表物品的隐含特征,矩阵的元素值代表着相应用户或物品对各项隐因子的符合程度,有正面的也有负面的,目前主流的矩阵分解推荐算法主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++。

4.6 用神经网络做协同过滤

用神经网络乃至深度学习做协同过滤应该是以后的一个趋势。目前比较主流的用两层神经网络来做推荐算法的是限制玻尔兹曼机(RBM)。在目前的Netflix算法比赛中, RBM算法的表现很牛。当然如果用深层的神经网络来做协同过滤应该会更好,大厂商用深度学习的方法来做协同过滤应该是将来的一个趋势。

4.7 用图模型做协同过滤

用图模型做协同过滤,则将用户之间的相似度放到了一个图模型里面去考虑,常用的算法是SimRank系列算法和马尔科夫模型算法。对于SimRank系列算法,它的基本思想是被相似对象引用的两个对象也具有相似性。算法思想有点类似于大名鼎鼎的PageRank。而马尔科夫模型算法当然是基于马尔科夫链了,它的基本思想是基于传导性来找出普通距离度量算法难以找出的相似性。

4.8 用隐语义模型做协同过滤

隐语义模型主要是基于NLP的,涉及到对用户行为的语义分析来做评分推荐,主要方法有隐性语义分析LSA和隐含狄利克雷分布LDA。

(学习时摘抄了几位大佬的文章,纯粹是自学使用的,感谢各位大佬的分享)

学习笔记:基于模型的协同过滤推荐算法简述相关推荐

  1. 基于项目的协同过滤推荐算法单机版代码实现(包含输出电影-用户评分矩阵模型、项目相似度、推荐结果、平均绝对误差MAE)

    基于项目的协同过滤推荐算法单机版代码实现(包含输出电影-用户评分矩阵模型.项目相似度.推荐结果.平均绝对误差MAE) 一.开发工具及使用技术 MyEclipse10.jdk1.7.movielens数 ...

  2. 基于云模型的协同过滤推荐算法代码实现(附源代码)

    基于云模型的协同过滤推荐算法代码实现(附源代码) 一.云模型介绍 针对传统推荐系统数据稀疏.相似性计算方法导致共同评分用户少的问题,提出利用云模型概念与定量数值转换的优势,研究云模型(百度百科查看概念 ...

  3. mysql数据推荐算法_Java+Mysql实现简单在线电影、音乐、图书推荐系统 基于用户的协同过滤推荐算法实现 源代码下载...

    # Java+Mysql实现简单在线电影.音乐.图书等推荐系统(基于用户的协同过滤推荐算法) 一.项目简介 1.开发工具和实现技术 MyEclipse10,jdk1.7,mysql5.5,tomca ...

  4. Java+Jsp+Mysql实现简单在线图书推荐系统 个性化图书推荐系 java实现基于用户的协同过滤推荐算法 源代码下载 算法实现 Spring+Struts+Hibernate(SSH)开发框架

    Java+Jsp+Mysql实现简单在线图书推荐系统 个性化图书推荐系统(基于用户的协同过滤推荐算法) 一.项目简介 1.开发工具和实现技术 MyEclipse10,jdk1.7,mysql5.5,t ...

  5. Python实现基于用户的协同过滤推荐算法构建电影推荐系统

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于用户的协同过滤推荐(User-based CF)的原理假设: ...

  6. Python实现基于物品的协同过滤推荐算法构建电影推荐系统

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 基于物品的协同过滤推荐(Item-based CF)的假设原理为 ...

  7. 基于Mahout实现协同过滤推荐算法的电影推荐系统

    1 Mahout介绍 Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更 ...

  8. 协同过滤算法_基于用户的协同过滤推荐算法原理和实现

    (给算法爱好者加星标,修炼编程内功) 来源:Create Chen's Blog https://www.cnblogs.com/technology/p/4467895.html 在推荐系统众多方法 ...

  9. python协同过滤可以预测吗_基于用户的协同过滤推荐算法原理-附python代码实现...

    在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是 ...

  10. 基于用户的协同过滤推荐算法原理和实现

    在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是 ...

最新文章

  1. 用户查看订单信息php,php – 以编程方式获取用户刚刚在Ubercart中完成的订单
  2. 48.结构体位域获取内存模型
  3. 安装MYSQL最低的RAM_安装MySQL后,需要调整的10个性能配置项
  4. python字符串替换功能string.replace()可以用正则表达式,更优雅
  5. c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)
  6. 2001年分区联赛提高组之二_数的划分_ssl1016_dfs
  7. python字典功能默写_python之字典操作
  8. ecshop mysql 报错_ecshop数据库操作函数
  9. Asp.Net MVC4入门指南(7):给电影表和模型添加新字段
  10. 【JavaSE基础】09-网络编程
  11. 我拍了拍Redis,被移出了群聊···
  12. windows7经典开机音乐_那些经典的单机游戏背景音乐,带你找寻童年记忆
  13. reflections歌词翻译_花木兰主题曲Reflection翻译成中文的准确歌词
  14. iOS 集成苹果登录及苹果图标的制作要求
  15. python List中删除特定元素
  16. 通过Requst进行12306查票(2022-09-10)
  17. multimedia教学设计计算机英语,高中英语教学设计案例
  18. Java Web快速开发框架 ---- JSPX (一)
  19. 华为USG6000系统进入诊断视图调节风扇转速配置
  20. 如何删除Chrome地址栏记录?

热门文章

  1. python爬取有妖气漫画
  2. 数学4如何用计算机画正切函数图像,7.3.4正切函数的性质和图像
  3. HART转PROFIBUS DP(V0)+RS485方法
  4. java cms 源码_PublicCMS开源Java系统 v4.0.190312
  5. mysql 报表工具_Navicat功能:报表创建工具
  6. Eclipse修改jsp模板
  7. 利用python处理excel文件并可视化处理-python如何将excel数据处理可视化
  8. 【nmake】Nmake基本语法和Windows下的makefile.vc编写demo
  9. photoshop标尺工具_工具设置:PhotoShop
  10. 默认选中select 第一个option