加入收藏 | 设为首页 | 会员中心 | 我要投稿 广西网 (https://www.guangxiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

协同过滤算法:在抖音狂给1000个小姐姐点赞的事被老婆发现了!

发布时间:2020-03-20 01:29:30 所属栏目:创业 来源:做站长
导读:产品经理要不要懂技术?要的!本系列文章将从最简单的概念开始,逐步讲解推荐系统的发展历程和最新实践。以产品经理的视角,阐述推荐系统涉及的算法,技术和架构。本章是第二章,将系统性地通过图文的方式介绍协同过滤算法。 我有个兄弟,是抖音的点赞狂魔

如下图,通过用户B对图书1的评分 * 未知图书与图书1的相似度来预测用户B对剩下图书的评分。如图书2的预测评分 = 图书1的评分5分 * 图书1和图书2的相似度0.27 ,从而用户B对图书2的评分是:5×0.27=1.35。同样方式计算出其他图书的评分预测。

协同过滤算法:在抖音狂给1000个小姐姐点赞的事被老婆发现了!

从上面的结果来看,用户B对其他图书评分比较低,这几本图书推荐的可能性大大减少。

物品协同过滤实际使用

这是推荐系统里最朴素的算法,因为它的计算量会随着用户和物品的数量呈指数增长,所以它并不适合在大量用户或大量物品的场景使用。在它诞生的年代,还没有大数据,这种计算方式耗费大量内存,需要做大量的优化。我尝试过用100万用户,100万物品和500万条的数据在256G内存的机器上做过尝试,计算一分钟后就宣告内存耗尽。

因为这个缺点,就需要新的算法来计算物品的协同过滤。

前面提到,计算任意两物品之间的相似度后,有两个使用场景。针对这两个场景,分别有不同的迭代算法:

  • 根据相似度排序推荐最近邻物品:使用如Word2vec,Item2vec等Embedding类的算法,将物品嵌入固定的向量空间中,再使用LSH算法(局部敏感哈希算法)取最近邻物品。这个后续文章会介绍。
  • 根据相似度预测评分推荐物品:本章后续介绍的SVD算法。

虽然这个算法使用较少了,但是物品协同过滤的思想都是一脉相乘的,理解了这个简单的cosine相似度计算方式,可以更好理解后续的迭代算法。

最后补充一下,物品协同过滤的一个缺点,或者说是协同过滤的缺点,对于一个新物品,协同过滤是无法推荐的。因为新物品用户无评分,导致它跟所有物品的相似度都是为0,这个是使用这个算法时非常需要注意的一个点。

三、用户协同过滤计算

用户协同过滤(UserCF)的计算方式跟物品协同过滤(ItemCF)的计算方式类似。不同的是由计算两两物品的相似度,转换成计算两两用户的相似度。

如下图所示:

协同过滤算法:在抖音狂给1000个小姐姐点赞的事被老婆发现了!

评分了相同图书的用户为相似用户,他们的相似度同样也用cosine相似度公式来计算。计算完相似度后,就可以根据用户间的相似性,预测用户对未评分图书进行评分预测。

但是在亚马逊上,由于用户评分的稀疏性(很多用户压根不评分),没有评分的用户无法跟其他用户计算相似性,从而导致很多用户之间没有相似度。所以2001年的时候,亚马逊选择物品协同过滤算法来做推荐,并发表了论文。这个论文也导致大家一度认为物品协同过滤优于用户协同过滤。

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

时间到了移动互联网的今天,我们更多是用点击数据,用户好友关系,通讯录或者甚至是同一个WIFI地址来计算用户协同过滤,数据稀疏性得到一定程度上的解决。现在,用户的协同过滤在信息流内容推荐,社交性的推荐系统有着很好的利用。比如抖音,因为内容更新频繁,用户协同过滤可以作为很好的召回手段,所以也就会出现老公点赞的视频会被推荐给他老婆的情景。

同样地,这里介绍的cosine相似度的算法,也不是工业界现在最佳实践的用户相似度计算方式了。用户相似度的计算,现在的最佳实践也同样也是用Embedding的方式实现。

而且,用户相似度的计算,最有效的方式不一定是通过本节中介绍的计算方式,带社交功能的APP可以通过用户的好友关系,一般的APP可以通过获取用户的通讯录实现用户协同过滤。这些方式都来的更加简单和直接。

四、模型协同过滤-矩阵分解(SVD)

对于很多没有计算机专业背景的人来说,直接理解SVD算法是很困难的。需要有高等数学,线性代数,还要理解机器学习模型中的目标函数,损失函数,梯度,正则化,最小二乘法等概念。很多文章介绍SVD都很技术,这里不准备采用技术大咖们的方式。我还是继续用图文的方式介绍,这也许是世界上最简单的理解SVD的方式。

首先介绍一下背景。

SVD算法的诞生,跟美国Netflix公司有关。这家公司中文名叫网飞,拍了大家熟悉的网剧《纸牌屋》。

协同过滤算法:在抖音狂给1000个小姐姐点赞的事被老婆发现了!

时间来到2006年,Netflix发起一个推荐系统的悬赏竞赛。他们公开了自己网站的用户数据评分数据包,并放出100万美元悬赏优化推荐算法。凡是能在Netflix现有的推荐系统基础上,把均方根误差降低10%的人,都能参与瓜分这100万美元。消息一放出,引来了无数高手参加。这场比赛中,最佳算法就是SVD。

背景介绍完了,接下来直接介绍SVD是怎么计算的。

还是跟前面那样,简单化问题:假设一个平台只有4个用户和4本图书。

(1)数据

用户对物品评分1-5分,且有以下评分记录。

协同过滤算法:在抖音狂给1000个小姐姐点赞的事被老婆发现了!

(2)学习算法

根据线性代数我们知道,一个矩阵可以分解为多个矩阵的乘积。SVD英文全称叫做Singular Value Decomposition,这个算法是个矩阵分解的通用名称,在不同领域有不同的形式。在推荐系统领域,可以简单的认为,SVD就是将一个矩阵,在一定的精度损失下,将一个矩阵分解成两个矩阵。

运用这个算法,我们可以将上图的矩阵做以下的近似分解:

(编辑:广西网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!