协同过滤算法:在抖音狂给1000个小姐姐点赞的事被老婆发现了(什么是抖音的用户协同过滤算法)

产品经理需要懂技术吗?想要!本系列文章将从最简单的概念开始,逐步讲解推荐系统的发展过程和最新实践。从产品经理的角度,阐述了推荐系统涉及的算法、技术和架构。本章是第二章,将通过图文系统介绍协同过滤算法。
我有一个哥哥,他是Tik Tok的赞美狂热者。他的赞次数高达6924次,大部分赞都是给那些年轻漂亮的小姐姐们的,如下图。看看他推荐的Tik Tok的内容。里面都是小姐姐唱歌跳舞。他也觉得很幸福。然而好景不长。没多久他就跟我说:“我不敢再点了。老婆发现我给小姐姐们点了1000个赞,知道我喜欢的视频,就会推荐给她”。
把朋友看过的视频推荐给用户,这就是协同过滤。准确的说,叫用户协同过滤。
1.协同过滤概述协同过滤是推荐系统最重要的思想之一。在早期,协同过滤几乎等同于推荐系统。协同过滤的思想产生于1994年,并被应用于邮件系统。2001年,亚马逊使用协同过滤算法推荐类似商品。
协同过滤的思想相对简单,主要有三种类型:
用户协同过滤(UserCF):相似的用户可能喜欢相同的项目。比如两个有朋友的用户或者有相似点击行为的用户,就被视为相似用户。例如,如果我的兄弟和他的妻子互相添加Tik Tok好友,他们各自喜欢的视频可能会导致相互推荐。物品协同过滤(ItemCF):相似的物品可能被同一用户喜欢。这就是世界杯期间沃尔玛尿布和啤酒的著名故事。在这里,世界杯期间,奶爸需要喝啤酒看球,还要带着宝宝。啤酒和纸尿裤是奶爸同时需要的,也就是同类产品可以一起卖。协同过滤:利用矩阵分解模型学习用户和文章的协同过滤信息。一般这种协同过滤模型包括SVD、SVD等。这个协同过滤比前两个更抽象,这里就不解释了,后面会详细描述。下面按照项目协同过滤、用户协同过滤、模型协同过滤的顺序详细讲解算法。
二。项目协同过滤的计算。2003年,亚马逊发表了一篇论文,解释了他们如何使用商品对商品的协同过滤算法来构建他们的“看一看”功能。
如下图:
这是17年前的截图。画面斑驳如旧纸照片。图为购物车关联页面中的相关推荐。那么,这个协同过滤推荐是怎么计算出来的呢?
如第一章所述,人工智能的实践过程有三个步骤:数据、学习和决策。这里将以图书销售推荐为例,用同样的步骤来说明文章协同过滤的过程。为简单起见,假设一个图书销售平台共有6本书出售,6个用户购买。
1)数据
用户的评分数据,分值1-5分。每个用户对该书的评分显示在下面的矩阵中。
(2)学习算法
说到ItemCF的定义,相似的物品可能是同一个用户喜欢的。另一方面,被同一用户喜欢的项目是相似的商品。如上图所示,图书1和图书2同时被用户A喜欢。这两本书相似。但是,Book 5和Book 6不是同时被同一个用户喜欢的,所以不相似。
如果用余弦相似度来计算书1和书2的相似度,也叫余弦距离,计算过程是:
回顾高中的课本可以知道,上面的相似度计算公式实际上是计算第一册的分数向量(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万维向量之间的距离。这就导致计算量很大,很多平台的用户都在百万以上,这种低效的计算方式需要改进。
(3)预测决策。
使用评分矩阵,预测决策通常有两种情况。
一种是根据相似度推荐最近邻项目。类似于“看着看着”“买着买着”的场景。在这个例子中,我们知道第一本书和其他书的相似度顺序分别是第五本书、第三本书、第四本书和第二本书。当用户点击第一本书时,他们可以按照类似的顺序从高到低推荐它。
二是根据相似度预测得分推荐项目。如何决定是否向用户B推荐图书2、图书4、图书6?
如下图所示,用户B对其余书籍的评价是由用户B对书籍1的评价*未知书籍与书籍1的相似度预测出来的。例如,图书2的预测得分=图书1的得分为5 *图书1和图书2的相似度为0.27,那么用户B对图书2的得分为50.27=1.35。用同样的方法计算其他书的评分预测。
从以上结果来看,用户B对其他书籍的评分相对较低,推荐这些书籍的可能性大大降低。
实用文章的协同过滤
这是推荐系统中最简单的算法,因为它的计算量会随着用户数和项目数呈指数级增长,所以不适合用户数或项目数较多的场景。在它诞生的时代,还没有大数据。这种计算方法消耗大量内存,需要大量优化。我试过在256G内存的机器上使用100万个用户,100万个项目,500万条数据。经过一分钟的计算,我宣布内存耗尽。
由于这个缺点,需要一种新的算法来计算项目的协同过滤。
如前所述,计算任意两个项目的相似度后,有两种使用场景。这两种情况有不同的迭代算法:
根据相似度排序推荐最近邻项目:使用Word2vec、Item2vec等嵌入算法将项目嵌入到固定的向量空间中,然后使用LSH算法(局部敏感哈希算法)得到最近邻项目。这篇后续文章将介绍。根据相似性预测得分推荐项目:本章后面介绍的SVD算法。虽然很少用到这种算法,但是协同过滤文章的思路都是一脉相承的。了解这种简单的余弦相似度计算方法,可以更好的理解后续的迭代算法。
最后,文章的协同过滤的缺点,或者协同过滤的缺点,不能被推荐给新的文章。因为新条目的用户没有评分,所以它和所有条目的相似度都是0,这是使用这个算法时需要注意的一点。
三。用户协同过滤的计算。用户协同过滤(UserCF)的计算方法类似于项目协同过滤(ItemCF)。不同的是,通过计算两个项目的相似度,转化为计算两个用户的相似度。
如下图所示:
给同一本书打分的用户是相似用户,他们的相似度也是用余弦相似度公式计算的。计算相似度后,我们就可以根据用户之间的相似度来预测用户对未评分书籍的评分。
但是在亚马逊上,由于用户评分的稀疏性(很多用户根本不评分),不评分的用户无法计算与其他用户的相似度,导致很多用户之间没有相似度。于是在2001年,亚马逊选择协同过滤算法做推荐,并发表了论文。这篇论文也导致了大家认为文章的协同过滤优于用户的协同过滤。
其实只有最适合的算法,没有最优的算法。
到了移动互联网的今天,我们用点击数据、用户好友、通讯录甚至同一个WIFI地址来计算用户协同过滤,一定程度上解决了数据稀疏性。现在,用户协同过滤在信息流内容推荐和社交推荐系统中得到了很好的应用。比如在Tik Tok,因为内容更新频繁,用户协同过滤可以作为很好的回忆方式,所以也会出现老公喜欢的视频会推荐给老婆的场景。
同样,这里介绍的余弦相似度算法也不是业内用户相似度计算的最佳实践。用户相似度的计算,现在最好的做法,也是通过嵌入来实现的。
而且,计算用户相似度最有效的方法,不一定是通过本节介绍的计算方法。具有社交功能的app可以利用用户的好友关系,一般的app可以通过获取用户的通讯录来实现用户协同过滤。这些方式更简单直接。
四。模型协同过滤-矩阵分解(SVD)对于很多没有计算机专业背景的人来说,直接理解SVD算法是非常困难的。要求有高等数学和线性代数,要了解机器学习模型中的目标函数、损失函数、梯度、正则化、最小二乘法等概念。很多文章介绍SVD技术性很强,这里不准备采用技术大咖的方式。我会继续用图文介绍,这可能是世界上最容易理解SVD的方法了。
首先介绍一下背景。
奇异值分解算法的诞生与网飞有关。这家中文名为网飞的公司拍摄了大家熟悉的网剧《纸牌屋》。
2006年,网飞发起了一场推荐系统的奖励竞赛。他们公布了自己网站的用户数据评分数据包,并悬赏100万美元优化推荐算法。谁能在网飞现有推荐系统的基础上,将均方根误差降低10%,谁就能参与瓜分这100万美元。消息一发布,就吸引了无数专家到场。在这个竞赛中,最好的算法是SVD。
介绍完了,我们直接介绍一下SVD是怎么计算的。
和之前一样,简化问题:假设一个平台只有4个用户,4本书。
1)数据
给用户文章打1-5分,有以下评分记录。
(2)学习算法
根据线性代数,我们知道一个矩阵可以分解成多个矩阵的乘积。SVD的英文全称是奇异值分解。这种算法是矩阵分解的俗称,在不同的领域有不同的形式。在推荐系统领域,可以简单的认为SVD就是在损失一定精度的情况下,将一个矩阵分解成两个矩阵。
使用该算法,我们可以近似地分解上图的矩阵,如下所示:
其中,用户矩阵部分代表了每个用户的偏好在二维隐藏语义空间中的映射。同样,条目矩阵表示每本书的特征在二维隐藏语义空间中的映射。这两个矩阵是模型的结果。这样我们在训练模型的时候,只需要训练用户矩阵中的8个参数,项目矩阵中的8个参数。计算量大大减少。
模型训练的过程,简单来说就是通过最小二乘法将用户的评分数据迭代到矩阵中,直到均方误差优化到最小。以上结果是Spark的ML库的ALS模块直接计算出来的。
具体的目标函数、损失函数和算法的梯度等。详细涉及很多机器学习知识点,这里就不介绍了。技术解读的文章很多。需要进一步了解的同学可以搜索一下。

其他教程

photoshop操作界面主要由什么组成(photoshop软件界面包括哪些部分)

2022-8-29 23:05:37

其他教程

冯提莫直播用的什么声卡(冯提莫会唱歌吗)

2022-8-29 23:07:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索