当前位置: 首页 >> 基本常识
协同过滤算法:在抖音狂给1000个小姐姐点赞的事被老婆发现了
  
  来源: www.dizhi701.cn 点击:1546

产品经理需要了解技术吗?想要!本系列文章将从最简单的概念开始,逐步解释推荐系统的开发过程和最新实践。从产品经理的角度,阐述了推荐系统所涉及的算法、技术和体系结构。本章是第二章,将通过图形和文本系统地介绍协同过滤算法。

我有一个热衷于聊天的哥哥。他被表扬了6924次,而且大部分表扬都是针对年轻漂亮的小姐妹,如下图所示。看着他推荐的颤音,看到所有的小姐妹唱歌跳舞是一种享受。他也感觉很好。然而,没过多久他就告诉我,“我再也不敢点菜了。我的妻子发现我已经为我的小妹妹们订购了1000首歌,我订购的视频也将被推荐给她。”

向用户推荐朋友观看的视频,这就是协作过滤。准确地说,它被称为用户协同过滤。

协同过滤)

协同过滤是推荐系统最重要的思想之一。在早期,协同过滤几乎等同于推荐系统。协同过滤的思想产生于1994年,并应用于邮件系统。2001年,亚马逊使用协同过滤算法推荐类似的产品。

协同过滤是一个相对简单的想法,有三种主要类型:

UserCF:相似的用户可能喜欢相同的项目。例如,有朋友的两个用户或有相似点击行为的用户被视为相似用户。如果我的兄弟和她的妻子给彼此增加了聊天的朋友,他们最喜欢的视频可能会产生相互的推荐。相同的用户可能喜欢相似的项目。这是世界杯期间沃尔玛尿布和啤酒的故事。这是因为在世界杯期间,爸爸们必须喝啤酒来看球和带孩子。爸爸们同时需要啤酒和尿布,也就是说,类似的产品可以一起销售。模型协同过滤:使用矩阵分解模型学习用户和项目的协同过滤信息。通常,这种协同过滤模型包括支持向量机、支持向量机等。这种协作过滤比前两种过滤更抽象,这里不再解释,稍后将详细描述。

下面按照文章协同过滤、用户协同过滤和模型协同过滤的顺序详细解释这些算法。

2。项目协同过滤的计算

2003年,亚马逊发表了一篇论文,解释了他们如何使用项目对项目的协同过滤算法来构建他们的“查看”功能。

下图:

这是17年前拍摄的截图。这幅画像旧纸照片一样斑驳。该图显示了购物车关联页面上的相关建议。那么,这种协同过滤推荐是如何计算的呢?

第一章提到了人工智能实践过程的三个步骤:数据、学习和决策。本文将以图书销售推荐为例,用同样的过程来解释文章的协同过滤过程。为了简单起见,假设一个图书销售平台总共有6本书要卖,6个用户要购买。

(1) data

用户的评分数据,得分1-5分。每个用户对书籍的评价如下表所示。

(2)学习算法

前面提到的ItemCF的定义是相同的用户可能喜欢相似的项目。另一方面,同一用户喜欢的商品是相似的商品。如上图所示,用户a喜欢书1和书2,这两本书很相似。然而,书籍5和6不被同一用户同时喜欢,并且没有相似性。

如果用余弦相似度来计算第一册和第二册之间的相似度,也称余弦距离,计算过程是:

回顾高中课本,我们可以知道上面的相似度计算公式实际上是用来计算第一册的分数向量(4,5,4,0,0,0)和第二册的分数向量(3,0,3,3,4,0)之间的cos夹角。

以同样的方式,书1和其他五本书之间的相似度可以分别计算为0.27、0 .79、0.32、0.99和0。每两本书计算相似度后,就可以得到所有书的相似度矩阵。

一个平台不仅有6本书和6个用户,而且我们将扩展到一般情况。计算项目的相似度实际上是计算每两个项目得分向量的余弦距离。评分向量的每个维度代表一个用户。在下图中,表格的第一行代表所有用户对项目a的评分。当有100万用户时,即每两个100万维向量之间的距离被计算。这导致了大量的计算,并且许多平台拥有超过100万的用户,因此这种低效的计算方法需要改进。

(3)预测决策

使用评分矩阵,预测决策通常有两种情况。

一种是根据相似性对最近的邻居项目进行排序和推荐。这类似于“看和看”和“买和买”的场景。在这里的例子中,我们知道书1和其他书之间的相似顺序分别是书5、书3、书4和书2。当用户点击第一本书时,他们可以按照相似的顺序从高到低推荐。

第二个是基于相似性预测分数推荐项目。如何决定是否向用户b推荐书2、书4和书6?

如下图所示,用户B在剩余图书上的分数可以通过用户B在图书1上的分数*未知图书与图书1的相似度来预测。例如,书2的预测分数=书1的分数=5 *书1和书2之间的相似度为0.27,因此书2的用户b的分数为:5 * 0.27=1.35。其他书籍的得分预测也是用同样的方法计算的。

从以上结果判断,用户B对其他书籍的评价相对较低,推荐这些书籍的可能性大大降低。

项目协同过滤的实际应用

这是推荐系统中最简单的算法,因为它的计算量会随着用户和项目的数量呈指数增长,所以不适合在用户或项目数量较多的场景中使用。在它诞生的时候,没有大数据。这种计算方法消耗大量内存,需要大量优化。我曾试图在256G内存机器上使用100万用户、100万项和500万条数据,经过一分钟的计算,内存将被宣布耗尽。

由于这个缺点,需要一种新的算法来计算项目的协同过滤。

如前所述,在计算了任意两个项目之间的相似性后,有两种使用场景。对于这两种情况,有不同的迭代算法:

根据相似性排序推荐最近邻项:使用嵌入算法(如Word2vec、Item2vec)将项嵌入到固定的向量空间,然后使用LSH算法(局部敏感哈希算法)获得最近邻项。这篇后续文章将介绍。基于相似性预测得分的推荐项目:本章后面介绍的SVD算法。

虽然这个算法很少被使用,但是协同过滤文章的想法是脉冲倍增。理解这种简单的余弦相似度计算方法可以更好地理解后续的迭代算法。

最后,我想补充一点,文章的协同过滤的一个缺点,或者协同过滤的缺点,不推荐用于新的文章。由于新项目的用户没有分数,所以它与所有项目的相似度为0,这是使用该算法时需要注意的一个非常重要的问题。

3。用户协同过滤的计算

用户协同过滤的计算方法类似于项目协同过滤的计算方法。区别在于从计算两个项目的相似度到计算两个用户的相似度。

如下图所示:

给同一本书打分的用户是相似用户,他们的相似度也是用余弦相似度公式计算的。计算相似度后,可以预测用户,根据用户之间的相似度对未分级的图书进行评分和预测。

但是在亚马逊,由于用户分数的稀疏性(许多用户根本没有分数),没有分数的用户无法计算与其他用户的相似度,导致许多用户之间没有相似度。因此,在2001年,亚马逊选择了协同过滤算法进行推荐,并发表了一篇论文。这篇论文也让人们相信,文章的协同过滤比用户的协同过滤更好。

事实上,只有最合适的算法,没有最优算法。

Operation timed out after milliseconds with 0 out of -1 bytes received

在我们得到所有的得分预测后,我们可以根据成绩推荐每本书。应当注意,由用户矩阵和项目矩阵的乘积获得的估计分数与用户的实际分数不一致,但是近似相等。对于上图中两个矩阵的绿色部分,用户的实际分数和估计分数都是近似的,有一定的误差。

在当前的实际应用中,支持向量机通常被用作协作过滤的离线召回。通常,需要推荐给用户的项目是预先离线计算并存储在HBASE。当用户有请求时,推荐的结果被直接读取并在初始安排阶段放入召回集合。

摘要

(1)协同过滤优势

协同推荐是使用最广泛的推荐算法。基于内容推荐算法,需要标记项目并创建用户肖像以进行匹配推荐。相比之下,协同过滤要简单得多。它只使用用户的行为来做出推荐,我们不需要对项目或信息进行完整的标签分析,从而避免了一些人可能难以量化和描述的概念的标签构造,并且能够很好地发现用户潜在的兴趣偏好。

(2)协同过滤的缺点

因为协同过滤依赖于用户的历史数据,当面对新用户或新项目时,当开始时没有数据或数据很少时,协同过滤算法不能给出建议。需要等待数据积累,或者其他程序来弥补缺陷,这就是常说的冷启动问题。

(3)在机器学习领域,当精确的方法难以计算或速度太慢时,人们通常选择牺牲一点精度来获得相似但非常快的结果。奇异值分解就是一个例子。

(4)没有完美的算法,只有最合适的算法。目前的做法不是使用协同过滤来提出建议,而是将它们作为一种或几种召回策略。

这篇文章最初是由菠萝王子海发表的。每个人都是产品经理。未经许可,根据CC0协议,Unsplash禁止重印

图片。

-

友情链接:
小雁塔资讯网 版权所有© www.dizhi701.cn 技术支持:小雁塔资讯网 | 网站地图