1 介绍

基于邻域的协同过滤方法可以看作是机器学习中常用的k-最近邻分类器KNN的泛化。 这些方法是基于实例的方法,因此,除了可选的预处理阶段之外,没有专门为预测预先创建模型

推荐系统笔记:Introduction_UQI-LIUWJ的博客-CSDN博客

1.1 基于模型的协同过滤 VS 分类回归问题

在基于模型的方法中,与有监督或无监督的机器学习方法一样,预先创建了从数据学习到的模型。 因此,训练(或模型构建阶段)与预测阶段明显分开。

传统机器学习中此类方法的示例包括决策树、基于规则的方法、贝叶斯分类器、回归模型、支持向量机和神经网络 。 有趣的是,几乎所有这些模型都可以推广到协同过滤场景,就像 k 最近邻分类器可以推广到基于邻域的模型进行协同过滤一样。

这是因为传统的分类和回归问题是矩阵补全(或协同过滤)问题的特例。(推荐系统笔记:Introduction_UQI-LIUWJ的博客-CSDN博客 1.1.3 小节)

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

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

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

1.2 相比于基于邻居的协同过滤问题的优势

1.2.1 空间优势

通常,学习模型的大小比原始评分矩阵小得多。 因此,空间要求通常很低。

1.2.2 速度优势(训练速度&预测速度)

基于邻域的方法的一个问题是预处理阶段是用户数量或项目数量的二次方。(比较某一个用户/项目 和其他所有的用户和项目, 以找到同类用户/项目)

在构建训练模型的预处理阶段,基于模型的系统通常要快得多。 在大多数情况下,紧凑和汇总的模型可用于有效地进行预测

1.2.3 避免过拟合

过度拟合是许多机器学习算法中的一个严重问题。 基于模型的方法的总结方法通常可以帮助避免过度拟合。 此外,在基于模型的方法中,可以使用正则化方法使这些模型具有鲁棒性。

尽管基于邻域的方法是最早的协同过滤方法之一,并且由于其简单性也是最受欢迎的方法之一,但它们不一定是当今可用的最准确的模型

事实上,一些最准确的方法通常基于基于模型的技术,特别是基于潜在因素模型

2 决策树&回归树

推荐系统笔记:决策树&回归树_UQI-LIUWJ的博客-CSDN博客

3 关联规则

关联规则(Association Rules)笔记_UQI-LIUWJ的博客-CSDN博客_association rule

关联规则\和协同过滤之间的关系是很自然的,因为关联规则问题首先是在发现超市数据之间的关系,并利用之向用户推荐的背景下提出的。

在关联规则问题中,客户购买的物品设置为 1,而缺失的物品设置为 0 作为近似值。 对于大多数类型的评分矩阵,将缺失值设置为 0 并不常见,因为这样做会导致预测出现偏差。 但是,它通常被认为是稀疏一元矩阵中可接受的做法,因为在这些情况下,属性的最常见值通常为 0。 因此,偏差的影响相对较小,现在可以将矩阵视为二进制数据集。

基于关联规则的协同过滤的第一步是在预先指定的最小支持度和最小置信度水平上发现所有关联规则。最小支持度和最小置信度可以被视为参数,这些参数经过调整 以最大限度地提高预测准确性。

  只保留那些结果中恰好包含一个项目的规则。这组规则就是模型,可用于为特定用户执行推荐。

考虑一个给定的客户 A,它希望向其推荐相关项目。第一步是确定客户 A 触发的所有关联规则。如果关联规则的前件中的项集是该客户偏好的项的子集,则称关联规则被客户 A 触发

然后按照降低置信度的顺序对所有触发的规则进行排序。在这些排序规则的结果中发现的前 k 个项目被推荐为客户 A 的前 k 个项目。

上述关联规则基于一元评分矩阵,允许指定喜欢,但不允许指定不喜欢。

但是,通过使用这种基本方法的变体,可以轻松处理数值评级。

当可能的评分数量很少时,评分-项目组合的每个值都可以视为一个伪项目(pseudo item)。 此类伪项目的一个示例是(项目 = 面包,评分 = 1分)。【此时的规则形如这样的:(项目=面包,评分=1分) & (项目=蛋糕,评分=5分)-> (项目=披萨,评分=4分)】

根据这些伪项目创建一组新的交易。 然后使用前面讨论的关联规则方法根据这些伪项目构建规则。

对于给定的客户,触发规则集是通过识别其先行词包含该用户的伪项目子集的规则来确定的。

规则按置信度降序排列。这些排序规则可用于通过选择这些规则的结果中的前 k 个伪项目来预测项目的评分。

在这种情况下可能需要的附加步骤是解决各种规则之间的冲突,因为客户触发的规则中的不同伪项可能会发生冲突。

例如,伪项目(项目 = 面包,评分 = 1分)和(项目 = 面包,评分 = 2分)是冲突的伪项目。

这种冲突可以通过找到一种在结果中聚合评级的方法来解决,以创建最终排序的推荐列表。还可以通过使用各种启发式方法对结果中的评分进行数值聚合

例如,可以首先确定结果对应于感兴趣项目的所有触发规则。以加权平均方式对这些触发规则的结果中的项目评分进行投票,以便对该用户-项目组合进行预测。人们可以通过平均过程中的相应置信度来加权触发规则中的评级

例如,如果两个规则在结果(对于特定项目)中包含评分1,置信度分别为 0.9 和 0.8,则该项目打分为1分的总“票数”为 0.9+0.8=1.7 .

当评分量表的粒度非常有限(例如,喜欢或不喜欢)时,投票方法更合适。在具有高粒度的基于区间的评级的情况下,可以将评级离散为较少数量的区间,然后使用与上述相同的方法。

推荐系统笔记:基于模型的协同过滤相关推荐

  1. 【推荐系统】基于模型的协同过滤算法

    基于模型的协同过滤算法 本节介绍基于模型的协同过滤算法1在Top-N推荐中的应用. 核心思想是 通过隐含特征(latent factor)联系用户兴趣和物品 . 思路:对于某个用户,首先得到其兴趣分类 ...

  2. 推荐系统-经典协同过滤算法【基于记忆的协同过滤算法、基于模型的协同过滤算法】

    推荐系统-经典协同过滤理论基础实践 1.协同过滤推荐方法CF简介 协同过滤CF 基于记忆的协同过滤 ---- 用户和物品的相似度矩阵 用户相似度的推荐 物品相似度推荐 UserCF用户协同过滤算法 I ...

  3. 推荐算法 itemcf java_推荐系统之基于物品的协同过滤算法(ItemCF)

    推荐系统之基于物品的协同过滤算法(ItemCF) 发布时间:2018-03-04 16:55, 浏览次数:1778 , 标签: ItemCF 推荐系统之基于物品的协同过滤算法(ItemCF) 前端时间 ...

  4. 【推荐系统】基于用户的协同过滤算法

    基于用户的协同过滤算法 基础算法 在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的.而用户A没有听说过的物品推荐给A.这种方法称为基于 ...

  5. 推荐系统实践----基于用户的协同过滤算法(python代码实现书中案例)

    本文参考项亮的<推荐系统实践>中基于用户的协同过滤算法内容.因其中代码实现部分只有片段,又因本人初学,对python还不是很精通,难免头大.故自己实现了其中的代码,将整个过程走了一遍. 1 ...

  6. 【推荐系统】基于物品的协同过滤算法

    基于物品的协同过滤算法 目前业界应用最多的算法. 给用户推荐和他们之前喜欢的物品相似的物品. 其主要通过分析用户的行为记录计算物品之间的相似度.物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都 ...

  7. 推荐系统-ItemCF基于用的协同过滤

    基于物品的协同过滤算法.基于物品的协同过滤算法是目前业界应用最多的算法,亚马逊.Netflix.Hulu.YouTube等很多平台都采用该算法作为其基础推荐算法 原理      基于物品的协同过滤算法 ...

  8. python协同过滤电影推荐_推荐系统:基于用户和模型的协同过滤电影推荐

    2018-04-26 1.协同过滤 协同过滤(Collaborative Filtering)字面上的解释就是在别人的帮助下来过滤筛选,协同过滤一般是在海量的用户中发现一小部分和你品味比较相近的,在协 ...

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

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

最新文章

  1. 23. 进程并发控制之Semaphore
  2. 源代码遭泄露,大疆员工被罚20万,判刑半年。
  3. CPython对象模型:整型
  4. [NOIP2015] 子串
  5. java swing 总结_java实验之swing图形用户界面程序设计及总结
  6. 惊了!最通俗易懂的Djongo入门竟然在这里!
  7. Oracle为JDK 8寻求社区参与
  8. 使用 Proteus 仿真 STM32
  9. diskData磁盘数据分析
  10. 小编带着小白看springboot源码2
  11. python--re模块
  12. jd反编译java_java反编译工具jd
  13. 图解详说pads2007安装全过程(经过验证)
  14. LODOP打印控件简单示例
  15. a 标签 jq js 打开新页面跳转
  16. Selenium 入门篇
  17. 信任=自信+他信+信他
  18. head和tail命令--用Enki学Linux系列(8)
  19. 黑马VUE快速入门笔记
  20. Python彩色图片转手绘风格

热门文章

  1. 表单验证,添加动态class
  2. VS2008+Windows DDK 7的环境配置(二)
  3. 解决Sublime包管理package control 报错 There are no packages available for installation
  4. thinkphp+ajax无刷新分页并加载显示图片
  5. 使用VS2008怎么连接自带的SQL Server2005的Express版本数据库
  6. .net通过一般处理程序模拟用户控件数据保持、Ispostback 【第二版将html与ashx文件分开】...
  7. 一个合格网络管理员的成长经历
  8. 他山之石:五个互联网英雄的创业启示!
  9. python获取图片的颜色信息
  10. python基础学习[python编程从入门到实践读书笔记(连载二)]:外星人入侵项目