推荐系统-协同过滤

原创
2019/04/23 15:07
阅读数 355

推荐系统概述:

通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。

推荐系统在用户(USER)和物品(ITEM)之间建立一座桥梁,
帮助用户找到自己感兴趣的物品和信息,
让物品展示在对它感兴趣的用户面前

其主要价值体现在:

  • 将潜在用户转化为支付用户;
  • 提升电子商务平台交叉销售能力;
  • 提升客户对网站的忠诚度;
  • 提升广告渠道转化效率;
  • 提升用户个性化体验。

基于用户(user-based)

的协同过滤主要考虑的是用户和用户之间的相似度,只要找出相似用户喜欢的物品,并预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户。

基于项目(item-based)

的协同过滤和基于用户的协同过滤类似,只不过这时我们转向找到物品和物品之间的相似度,只有找到了目标用户对某些物品的评分,那么我们就可以对相似度高的类似物品进行预测,将评分最高的若干个相似物品推荐给用户。

基于内容的推荐

基于模型的协同过滤

我们的问题是这样的m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评
分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分
的物品推荐给用户。

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

用关联算法做协同过滤

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

常用的关联推荐算法有Apriori,FP Tree和PrefixSpan

用聚类算法做协同过滤

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

常用的聚类推荐算法有K-Means, BIRCH, DBSCAN和谱聚类

用分类算法做协同过滤

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

常见的分类推荐算法有逻辑回归和朴素贝叶斯

用回归算法做协同过滤

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

常用的回归推荐算法有Ridge回归,回归树和支持向量回归

用矩阵分解做协同过滤

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

目前主流的矩阵分解推荐算法主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++

用神经网络做协同过滤

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

用图模型做协同过滤

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

用隐语义模型做协同过滤

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

数据收集

要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍:

推进系统的评价

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部