推荐系统笔记:基于模型的协同过滤
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统笔记:基于模型的协同过滤相关的知识,希望对你有一定的参考价值。
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 .
当评分量表的粒度非常有限(例如,喜欢或不喜欢)时,投票方法更合适。在具有高粒度的基于区间的评级的情况下,可以将评级离散为较少数量的区间,然后使用与上述相同的方法。
以上是关于推荐系统笔记:基于模型的协同过滤的主要内容,如果未能解决你的问题,请参考以下文章