基于模型的协同过滤概述

基于模型的协同过滤作为目前最主流的协同过滤类型,其相关算法可以写一本书了,当然我们这里主要是对其思想做有一个归类概括。我们的问题是这样的m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。

对于这个问题,用机器学习的思想来建模解决,主流的方法可以分为:用关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型来解决。下面我们分别加以介绍。

1 用关联算法做协同过滤

一般我们可以找出用户购买的所有物品数据里频繁出现的项集活序列,来做频繁集挖掘,找到满足支持度阈值的关联物品的频繁N项集或者序列。如果用户购买了频繁N项集或者序列里的部分物品,那么我们可以将频繁项集或序列里的其他物品按一定的评分准则推荐给用户,这个评分准则可以包括支持度,置信度和提升度等。

常用的关联推荐算法有Apriori,FP Tree和PrefixSpan。如果大家不熟悉这些算法,可以参考我的另外几篇文章:

Apriori算法原理总结

FP Tree算法原理总结

PrefixSpan算法原理总结

2 用聚类算法做协同过滤

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

常用的聚类推荐算法有K-Means, BIRCH, DBSCAN和谱聚类,如果大家不熟悉这些算法,可以参考我的另外几篇文章:

K-Means聚类算法原理

BIRCH聚类算法原理

DBSCAN密度聚类算法

谱聚类(spectral clustering)原理总结

3 用分类算法做协同过滤

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

常见的分类推荐算法有逻辑回归和朴素贝叶斯,两者的特点是解释性很强。如果大家不熟悉这些算法,可以参考我的另外几篇文章:

逻辑回归原理小结

朴素贝叶斯算法原理小结

4 用回归算法做协同过滤

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

常用的回归推荐算法有Ridge回归,回归树和支持向量回归。如果大家不熟悉这些算法,可以参考我的另外几篇文章:

线性回归原理小结

决策树算法原理(下)

支持向量机原理(五)线性支持回归

5 用矩阵分解做协同过滤

用矩阵分解做协同过滤是目前使用也很广泛的一种方法。由于传统的奇异值分解SVD要求矩阵不能有缺失数据,必须是稠密的,而我们的用户物品评分矩阵是一个很典型的稀疏矩阵,直接使用传统的SVD到协同过滤是比较复杂的。

目前主流的矩阵分解推荐算法主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++。这些算法和传统SVD的最大区别是不再要求将矩阵分解为UΣVTUΣVT 的形式,而变是两个低秩矩阵PTQPTQ 的乘积形式。对于矩阵分解的推荐算法,后续我会专门开篇来讲。

6 用神经网络做协同过滤

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

7  用图模型做协同过滤

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

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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于协同过滤算法的电影推荐系统项目概述: 1. 项目背景:电影推荐系统是一种基于用户行为数据和电影特征数据构建的推荐系统,其目的是为用户提供个性化的电影推荐。协同过滤算法是一种常用的推荐算法,它通过分析用户之间的行为相似性来预测用户对未看过电影的喜好。基于协同过滤算法的电影推荐系统可以提高用户的观影体验和满意度,增强用户体验的粘性和活跃度。 2. 用户需求分析:首先,需要分析用户需求,包括用户的观影习惯、兴趣爱好和口味偏好等。此外,还可以通过调研用户反馈和反馈信息收集,了解用户对现有电影推荐系统的满意度和不足之处,以便针对性地改进和优化系统。 3. 数据收集与处理:电影推荐系统需要收集用户行为数据和电影特征数据。用户行为数据包括用户观看的电影、评分、评论等,电影特征数据包括电影的演员、导演、类型、评分、剧情简介等。在收集数据后,需要对数据进行清洗、处理和转换,以便进行后续的推荐算法分析和应用。 4. 协同过滤算法实现:协同过滤算法是一种基于用户行为相似性和物品属性相似性的推荐算法。它根据用户的历史行为和喜好,预测用户对未看过电影的喜好,为用户提供个性化的电影推荐。具体实现过程中,需要设计合理的协同过滤算法模型,例如基于内存的协同过滤算法和基于物品的协同过滤算法等。同时,需要根据数据特征和用户需求调整算法参数和模型参数,以提高推荐准确度和推荐效果。 5. 评估与优化:在协同过滤算法实现后,需要通过测试和评估来验证推荐系统的效果和性能。可以使用一些常用的评估指标,如准确率、召回率、AUC值等来评估推荐系统的性能。同时,可以通过收集用户反馈和用户行为数据来不断优化和改进系统,提高用户的满意度和忠诚度。 总之,基于协同过滤算法的电影推荐系统项目旨在为用户提供个性化的电影推荐服务,提高用户的观影体验和满意度。在项目实施过程中,需要充分考虑用户需求、数据收集与处理、协同过滤算法实现和评估与优化等方面,以实现系统的最佳性能和应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值