协同过滤

简介: 人以群分,你是什么人就看到什么世界

要说提到推荐系统中,什么算法最名满天下,我想⼀定是协同过滤。在很多场合,甚⾄有⼈把协同过滤和推荐系统划等号,可⻅⼆者的关系多么紧密。


协同过滤的重点在于“协同”,所谓协同,也就是群体互帮互助,互相⽀持是集体智慧的体现,协同过滤也是这般简单直接,历久弥新。


什么是协同过滤


当你的推荐系统度过了只能使⽤基于内容的推荐阶段后,就有了可观的⽤户⾏为了。这时候的⽤户⾏为通常是正向的,也就是⽤户或明或暗地表达着喜欢的⾏为。这些⾏为可以表达成⼀个⽤户和物品的关系矩阵,或者说⽹络、或者说是图,都是⼀个东⻄。


这个⽤户物品的关系矩阵中填充的就是⽤户对物品的态度,但并不是每个位置都有,需要的就是把那些还没有的地⽅填起来。这个关系矩阵是协同过滤的命根⼦,⼀切都围绕它来进⾏。协同过滤是⼀个⽐较⼤的算法范畴。通常划分为两类:

1.基于记忆的协同过滤(Memory-Based);

2.基于模型的协同过滤(Model-Based)。


基于记忆的协同过滤,现在看上去极其简单,就是记住每个⼈消费过什么东⻄,然后给他推荐相似的东⻄,或者推荐相似的⼈消费的东⻄。基于模型的协同过滤则是从⽤户物品关系矩阵中去学习⼀个模型,从⽽把那些矩阵空⽩处填满。


我们就围绕这两个类别的协同过滤展开。今天我先来说的是基于记忆的协同过滤的⼀种——基于⽤户,或者叫做User-Based,UsertoUser。


基于⽤户的协同过滤

背后的思想

你有没有过这种感觉,你遇到⼀个⼈,你发现他喜欢的书、喜欢的电影也基本上都是你喜欢的,从此以后,你就想⽼是想问他:还有什么好推荐的,最近⼜看了什么书,最近⼜看了什么电影?甚⾄不惜和他撞衫,和他穿⼀个⻛格的⾐服。


这个感觉⾮常地⾃然直接,它就是基于⽤户的协同过滤背后思想。详细来说就是:先根据历史消费⾏为帮你找到⼀群和你⼝味很相似的⽤户;然后根据这些和你很相似的⽤户再消费了什么新的、你没有⻅过的物品,都可以推荐给你。


这就是我们常说的⼈以群分,你是什么⼈,你就会遇到什么⼈,所以说,要谨慎交友啊。


这其实也是⼀个给⽤户聚类的过程,把⽤户按照兴趣⼝味聚类成不同的群体,给⽤户产⽣的推荐就来⾃这个群体的平均值;所以要做好这个推荐,关键是如何量化“⼝味相似”这个看起来很直接简单的事情。这关系到⼀个⽤户会跟哪些⼈在同⼀个房间内,万⼀进错了房间,影响就会不好。


原理

我们来说⼀说基于⽤户的协同过滤具体是怎么做的。前⾯说过,核⼼是那个⽤户物品的关系矩阵,这个矩阵是最原始的材料。

第⼀步,准备⽤户向量,从这个矩阵中,理论上可以给每⼀个⽤户得到⼀个向量。


为什么要说是“理论上”呢?因为得到向量的前提是:⽤户爸爸需要在我们的产品⾥有⾏为数据啊,否则就得不到这个向量。


这个向量有这么三个特点:

1.向量的维度就是物品的个数;

2.向量是稀疏的,也就是说并不是每个维度上都有数值,原因当然很简单,这个⽤户并不是消费过所有物品,废话嘛,连我们压箱底的都给⽤户推荐了,那当然不⽤再推荐什么了;

3.向量维度上的取值可以是简单的0或者1,也就是布尔值,1表示喜欢过,0表示没有,当然因为是稀疏向量,所以取值为0的就忽略了。


第⼆步,⽤每⼀个⽤户的向量,两两计算⽤户之间的相似度,设定⼀个相似度阈值或者设定⼀个最⼤数量,为每个⽤户保留与其最相似的⽤户。


这⾥两两计算相似度如何计算,市⾯上有很多相似度计算⽅法,你也可以⾃⼰设计,我们在后⾯的⽂章⾥会逐⼀介绍,这⾥先略过不提。


第三步,为每⼀个⽤户产⽣推荐结果。

把和他“臭味相投”的⽤户们喜欢过的物品汇总起来,去掉⽤户⾃⼰已经消费过的物品,剩下的排序输出就是推荐结果,是不是很简单。具体的汇总⽅式我们⽤⼀个公式来表示。

image.png

这个公式也是很简单的。等号左边就是计算⼀个物品i和⼀个⽤户u的匹配分数,等号右边是这个分数的计算过程,分⺟是把和⽤户u相似的n个⽤户的相似度加起来,分⼦是把这n个⽤户各⾃对物品i的态度,按照相似度加权求和。


这⾥的态度最简单就是0或者1,1表示喜欢过,0表示没有,如果是评分,则可以是0到5的取值。整个公式就是相似⽤户们的态度加权平均值。

目录
相关文章
|
4天前
|
机器学习/深度学习 搜索推荐 算法
协同过滤算法
协同过滤算法
90 0
|
4天前
|
搜索推荐 算法
推荐系统中的协同过滤介绍
推荐系统中的协同过滤介绍
19 0
|
6月前
|
算法 搜索推荐 数据挖掘
143 协同过滤的实现
143 协同过滤的实现
28 0
|
搜索推荐 测试技术
推荐系统:协同过滤
可以根据产品元数据计算的,提供制定推荐的选择,推荐与用户过往购买过的产品相关性最相似的产品,今天我们来聊聊如何通过利用用户和产品之间的相似性提供建议的方法。 协同过滤是一种利用用户和产品之间的相似性提供建议的方法。协同过滤分析相似的用户或相似评级的产品,并根据此分析推荐用户。
139 0
|
监控 搜索推荐 Python
推荐系统的PMF - 概率矩阵分解和协同过滤(二)
推荐系统的PMF - 概率矩阵分解和协同过滤(二)
128 1
推荐系统的PMF - 概率矩阵分解和协同过滤(二)
|
搜索推荐 算法
推荐系统的PMF - 概率矩阵分解和协同过滤(一)
推荐系统的PMF - 概率矩阵分解和协同过滤(一)
256 1
推荐系统的PMF - 概率矩阵分解和协同过滤(一)
|
人工智能 搜索推荐 算法
推荐系统 (协同过滤)
推荐系统 (协同过滤)
推荐系统 (协同过滤)
|
机器学习/深度学习 算法 搜索推荐
|
搜索推荐 算法 C++
推荐算法——相似性推荐和协同过滤
推荐算法——相似性推荐和协同过滤
456 0
推荐算法——相似性推荐和协同过滤
推荐系列(三):协同过滤
协同过滤 为了解决基于内容过滤的一些限制,协同过滤同时使用用户和项目之间的相似性来提供推荐。这样会允许偶然的推荐出现; 也就是说,协同过滤模型可以基于类似用户B的兴趣向用户A推荐项目。此外,可以自动学习embedding特征,而不依赖于手工设计的特征。
1037 0