[推荐系统 02] 基于协同过滤的推荐算法

推荐系统 - 初识 01笔记链接

基于协同过滤(CF)的推荐算法

基于近邻的CF算法:

1. 基于用户的协同过滤(User-CF)

基本原理:根据所有用户对物品的偏好,发现与当前用户口味和偏好相似的用户群,并推荐近邻所偏好的物品。
采用KNN的算法;基于K个邻居的历史偏好信息,得到偏好相同的用户群,并为用户进行推荐。

用户A,对商品A,B,E的评价都很高,但是对C,D的评价很低,用户B,对商品A,E的评价很高,但是对C,D评价很低。那么系统就可能给用户B推荐商品B。因为A和B的行为相似。

2. 基于物品的协同过滤(Item-CF)

基于物品的协同过滤推荐的基本原理与基于用户的类似,只是使用所有用户对物品的偏好,发现物品与物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。

3.基于用户和基于物品的协同过滤该如何选择?

根据系统中用户的数量和物品的数量,一般来讲物品的个数是远远小于用户的数量的,而且物品的个数和相似度相对笔记稳定,同时基于物品的机制比基于用户的实时性更好一些。因此主流的策略一般采用基于物品。
但是在某些系统中,由于物品更新换代的速度比较快,如新闻系统,那么物品的相似度就不那么稳定,此时基于用户的效果可能更好。

4. 基于用户/物品协同过滤的推荐算法优缺点。

优点:
① 优点肯定就是不需要我们对特征进行严格的处理,即我们给这个推荐算法的特征不要求是需要算法自身理解的。(只需要通过K近邻求出用户用户或物品物品之间的相似度)
②这种算法推荐的商品具有多样化,它可以发现用户潜在的兴趣偏好。而不会只推荐给用户他平时喜欢的东西,具有探索性。
存在的问题:
① 首先最主要的问题就是,它不能冷启动。也就是他是基于历史数据的,对新系统或者新物品新用户的加入,很不友好。
② 推荐的效果依赖历史数据的多少以及准确性。
③ 对历史数据敏感,历史数据出错对推荐的准确率影响很大。
④ 对特殊品味的用户效果不佳。

5. 基于模型的协同过滤思想

基本思想:

  • 用户具有一定的特征,决定着他的偏好选择。
  • 物品具有一定的特征,影响着用户是否选择它。
  • 用户之所以选择某一个商品,是因为用户特征与物品特征相互匹配。

通俗来说就是,用模型对行为数据打标签。
举个栗子:我有个朋友喜欢在短视频APP上看小姐姐。这个短视频APP上的用户,肯定也存在很多喜欢在上面看小姐姐的用户。因此看小姐姐这个行为就可以打上标签,并且得到这个用户群。他们之间喜欢的视频就可以作为物品相互推荐。

在有显性特征时,(比如用户标签和物品标签都存在)我们可以直接匹配做出推荐;但是在没有显性特征时,我们可以根据已有的偏好数据,去发掘出隐藏的特征,这就需要用到隐语义模型(LFM)

基于模型的协同过滤推荐,就是基于样本的用户偏好信息,训练一个推荐模型,然后根据实时用户喜欢的信息进行预测新物品的得分,得分高的进行推荐。

实际上,基于近邻相当于对数据进行分类,基于模型相当于对数据进行回归(预测)。

(1)隐语义模型(LFM):

用隐语义模型来进行协同过滤的目标:本质就是利用机器学习本身模型去分析特征信息,然后预测结果。这中间,机器学习所使用到的隐藏特征是无法直接用语言接收描述的。隐藏称为隐语义模型。

基本思想:对特征进行降维。
通过矩阵分解进行降维分析:

  • 协同过滤算法非常依赖历史数据,而一般的推荐系统中,偏好的数据又往往是稀疏的;这就需要对原始数据进行降维处理;
  • 分解后的矩阵,就代表用户和物品的隐藏特征。

(2)矩阵因子分解

简单来说,我们的数据样本就是一个用户物品评分表。即每个用户都每类物品的评分,有则填,没有则不填。就等价于一个二维矩阵。
那么如果我们可以将这个评分矩阵R分解成用户特征矩阵Q 和 物品特征矩阵P 的乘积。那么我们只需要有用户特征矩阵Q和物品特征矩阵P就能够预测得到整个评分矩阵。(包括没有填的值)

而我们就是希望这个预测出来的评分矩阵要和真实的评分矩阵一样。

所以经过矩阵因子分解之后,我们的问题就转化成一个标准的优化问题,即要求解P、Q,使得目标损失函数取最小值。

然后通过设定损失函数,即预测的矩阵和真实评分矩阵作误差。再通过模型求解算法求得最优解。使得损失函数取最小。

(3)模型求解

① 交替最小二乘法(ALS)

基本思想就是,由于两个矩阵P和Q都未知,且通过矩阵乘法耦合在一起,为了使它们解耦,可以先固定Q,把P当作变量,通过损失函数最小化求P,这就是一个经典的最小二乘法;再反过来固定求得的P,把Q当作变量,求解出Q:如此交替执行,直到误差满足阈值条件或达到迭代上限。

② 随机梯度下降法

猜你喜欢

转载自blog.csdn.net/weixin_41809530/article/details/107231499