学习提高:商品推荐整理-学习

1、基于内容的推荐:

根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品

在这里插入图片描述

元数据特征,每首歌有超过 100 个元数据特征,包括歌曲的风格,年份,演唱者。

2、基于协同过滤的推荐
  • 基于协同过滤的推荐可以分为三个子类:
    • 基于用户的推荐(User-based Recommendation)、

      • 基于用户的协同过滤推荐的基本原理是,根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K- 邻居”的算法;然后,基于这 K 个邻居的历史偏好信息,为当前用户进行推荐。
        • 在这里插入图片描述
    • 基于项目的推荐(Item-based Recommendation)、

      • 基于项目的协同过滤推荐的基本原理也是类似的,只是说它使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户,
        • 在这里插入图片描述
    • 基于模型的推荐(Model-based Recommendation)。

3、基于模型的协同过滤推荐

基于模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测,计算推荐。

基于协同过滤(CF)的推荐机制是现今应用最为广泛的推荐机制,它有以下几个显著的优点:

​ 它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。
​ 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好
而它也存在以下几个问题:

​ 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。
​ 推荐的效果依赖于用户历史偏好数据的多少和准确性。
​ 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
​ 对于一些特殊品味的用户不能给予很好的推荐。
​ 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

协同过滤的主要步骤
  • 收集用户偏好
  • 找到相似的用户或物品
  • 计算推荐

1)收集用户偏好

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

以上列举的用户行为都是比较通用的,推荐引擎设计人员可以根据自己应用的特点添加特殊的用户行为,并用他们表示用户对物品的喜好。在一般应用中,我们提取的用户行为一般都多于一种,关于如何组合这些不同的用户行为,基本上有以下两种方式:

将不同的行为分组:
一般可以分为“查看”和“购买”等等,然后基于不同的行为,计算不同的用户 / 物品相似度。类似于当当网或者 Amazon 给出的“购买了该图书的人还购买了 …”,“查看了图书的人还查看了 …”

加权操作:
根据不同行为反映用户喜好的程度将它们进行加权,得到用户对于物品的总体喜好。一般来说,显式的用户反馈比隐式的权值大,但比较稀疏,毕竟进行显示反馈的用户是少数;同时相对于“查看”,“购买”行为反映用户喜好的程度更大,但这也因应用而异。

收集了用户行为数据,我们还需要对数据进行一定的预处理,其中最核心的工作就是:减噪和归一化。

减噪 :
用户行为数据是用户在使用应用过程中产生的,它可能存在大量的噪音和用户的误操作,我们可以通过经典的数据挖掘算法过滤掉行为数据中的噪音,这样可以是我们的分析更加精确。

归一化:
如前面讲到的,在计算用户对物品的喜好程度时,可能需要对不同的行为数据进行加权。但可以想象,不同行为的数据取值可能相差很大,比如,用户的查看数据必然比购买数据大的多,如何将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和得到的总体喜好更加精确,就需要我们进行归一化处理。最简单的归一化处理,就是将各类数据除以此类中的最大值,以保证归一化后的数据取值在 [0,1] 范围中。

进行的预处理后,根据不同应用的行为分析方法,可以选择分组或者加权处理,之后我们可以得到一个用户偏好的二维矩阵,一维是用户列表,另一维是物品列表,值是用户对物品的偏好,一般是 [0,1]或者[-1, 1]的浮点数值。

2)找到相似的用户或物品

当已经对用户行为进行分析得到用户喜好后,我们可以根据用户喜好计算相似用户和物品,然后基于相似用户或者物品进行推荐,这就是最典型的 CF 的两个分支:基于用户的 CF 和基于物品的 CF。这两种方法都需要计算相似度,下面我们先看看最基本的几种计算相似度的方法。
(1)相似度的计算
关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大。在推荐的场景中,在用户 - 物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度。下面我们详细介绍几种常用的相似度计算方法:

(2)相似邻居的计算
介绍完相似度的计算方法,下面我们看看如何根据相似度找到用户 - 物品的邻居,常用的挑选邻居的原则可以分为两类:图 1 给出了二维平面空间上点集的示意图。

不论邻居的“远近”,只取最近的 K 个,作为其邻居。如图 1 中的 A,假设要计算点 1 的 5- 邻居,那么根据点之间的距离,我们取最近的 5 个点,分别是点 2,点 3,点 4,点 7 和点 5。但很明显我们可以看出,这种方法对于孤立点的计算效果不好,因为要取固定个数的邻居,当它附近没有足够多比较相似的点,就被迫取一些不太相似的点作为邻居,这样就影响了邻居相似的程度,比如图 1 中,点 1 和点 5 其实并不是很相似。

基于相似度门槛的邻居:Threshold-based neighborhoods
与计算固定数量的邻居的原则不同,基于相似度门槛的邻居计算是对邻居的远近进行最大值的限制,落在以当前点为中心,距离为 K 的区域中的所有点都作为当前点的邻居,这种方法计算得到的邻居个数不确定,但相似度不会出现较大的误差。如图 1 中的 B,从点 1 出发,计算相似度在 K 内的邻居,得到点 2,点 3,点 4 和点 7,这种方法计算出的邻居的相似度程度比前一种优,尤其是对孤立点的处理。

3)计算推荐

经过前期的计算已经得到了相邻用户和相邻物品,下面介绍如何基于这些信息为用户进行推荐。

基于用户的 CF(User CF)
基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到 K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。图 2 给出了一个例子,对于用户 A,根据用户的历史偏好,这里只计算得到一个邻居 - 用户 C,然后将用户 C 喜欢的物品 D推荐给用户 A。

基于物品的 CF 的原理和基于用户的 CF 类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。图 3 给出了一个例子,对于物品 A,根据所有用户的历史偏好,喜欢物品 A 的用户都喜欢物品 C,得出物品 A 和物品 C 比较相似,而用户 C 喜欢物品 A,那么可以推断出用户 C 可能也喜欢物品 C。

为相似的用户提供推荐物品

目前我们得到的数据情况如下:我们需要为P5推荐三部电影中的一部,有直接推荐和加权排序推荐两种方法。

**直接推荐:**假如我们需要为用户P5推荐电影,首先我们检查相似度列表,发现用户P5和用户P3的相似度最高。因此,我们可以对用户P5推荐P3的相关数据。但这里有一个问题。我们不能直接推荐前面A-F的商品。因为这这些商品用户P5已经浏览或者购买过了。不能重复推荐。因此我们要推荐用户P5还没有浏览或购买过的商品。如果直接推荐我们可以选择P3用户评价最高的商品,也就是环太平洋和变形金刚两个数据。

**加权排序推荐:**我们根据不同用户间的相似度,对不同商品的评分进行相似度加权。按加权后的结果对商品进行排序,然后推荐给用户P5。这样,用户P5就获得了更好的推荐结果。

上面的计算结果中,我们按照(变形金刚–环太平洋–玩命速递)的顺序把结果推荐给用户P5。

以上是基于用户的协同过滤算法。这个算法依靠用户的历史行为数据来计算相关度。也就是说必须要有一定的数据积累(冷启动问题)。对于新网站或数据量较少的网站,还有一种方法是基于物品的协同过滤算法。


推荐系统应该采用多路召回策略 -(离线+在线)共同使用,来满足各自的不足。

离线:
  • 行为召回:基于物品的CF,但会存在冷启动问题(新用户、新商品);
  • 内容召回:基于内容的CF,即基于用户之前的浏览、搜索、历史订单计算相似的物品;
在线:
  • 实时召回:正在浏览物品,流式计算实时召回与当前相似的物品;
  • 热门召回:将最近最热的物品召回;

参考:

https://tech.meituan.com/2015/01/22/mt-recommend-practice.html

https://tech.meituan.com/2014/12/18/poi-category-recommendation-algorithm-based-on-machine-learning.html

https://tech.meituan.com/2015/11/16/meituan-search-rank.html

https://tech.meituan.com/2015/12/07/rerank-solution-offline.html

https://tech.meituan.com/2015/02/10/machinelearning-data-feature-process.html

https://tech.meituan.com/2016/12/09/feature-pipeline.html

https://tech.meituan.com/2018/12/20/head-in-l2r.html

https://mp.weixin.qq.com/s/tHgUUa8X_FIF7eyehjq0_A

https://mp.weixin.qq.com/s/GN5dH2DF9C5iBp1XcF5Bxg

https://www.cnblogs.com/chason95/articles/10276158.html

https://blog.csdn.net/livan1234/article/details/81773236

-------------欢迎各位留言交流,如有不正确的地方,请予以指正。【Q:981233589】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_夜半钟声到客船

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值