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

来源:http://www.popupad.cn 时间:03-22 13:27:42

原标题:协同过滤算法:在抖音狂给1000个幼姐姐点赞的事被妻子发现了!

产品经理要不要懂技术?要的!本系列文章将从最浅易的概念最先,逐渐讲解选举编制的发展历程和最新实践。以产品经理的视角,阐述选举编制涉及的算法,技术和架构。本章是第二章,将编制性地始末图文的方式介绍协同过滤算法。

孟村回族自治功荼融资担保公司

产品经理要不要懂技术?要的!本系列文章将从最浅易的概念最先,逐渐讲解选举编制的发展历程和最新实践。以产品经理的视角,阐述选举编制涉及的算法,技术和架构。本章是第二章,将编制性地始末图文的方式介绍协同过滤算法。

吾有个兄弟,是抖音的点赞狂魔,他的点赞次数高达6924次,而且他大众数的赞都是给那些芳华靓丽的幼姐姐们,如下图。望他的抖音选举内容,都是满现在标幼姐姐唱啊跳啊不亦笑乎,他也觉得甚爽。不过,益景不长,没众久他就跟吾说:“吾再也不敢再点了,吾妻子已经发现吾给幼姐姐们点了上1000个赞,而且清新吾点赞的视频,也会选举给她”。

把友人望过的视频选举给用户,这就是协同过滤。实在地说,叫用户协同过滤(User Collaborative Filtering)。

一、协同过滤概述(Collaborative Filtering)

协同过滤(简称CF)是选举编制最主要的思维之一。在早期,协同过滤几乎等同于选举编制。协同过滤思维产生于1994年,被用于邮件编制上。2001年,亚马逊用协同过滤算法来选举相通商品。

协同过滤的思维比较浅易,主要有三栽:

下面遵命物品协同过滤,用户协同过滤和模型协同过滤的挨次,详细注释这几栽算法。

二、物品协同过滤的计算

2003年,亚马逊发外了一篇论文,阐述了他们如何用物品协同过滤算法(Item-to-Item Collaborative Filtering),搭建他们“望了又望”功能。

如下图:

这是17年前的截图,图跟纸质老照片那样变得斑驳。图中是在购物车相关页面的相关选举。那么,这个协同过滤选举是如何做计算出来的呢?

前线第一章说到,人造智能实践过程三个步骤:数据,学习和决策。这边也将用同样的步骤,以图书出售选举为例,注释物品协同过滤的过程。为了浅易化,倘若某图书出售平台统统有6本书出售,有6个用户购买。

(1)数据

用户的评分数据,分值1-5分。每个用户对图书的评分如下图矩阵所示。

(2)学习算法

前线说到ItemCF的定义是,相通的物品能够被同个用户爱。逆过来讲,就是被同个用户爱的物品是相通商品。如上图中,图书1和图书2两本书,被用户A同时爱,这两本书具有相通性。而图书5和图书6,异国被同个用户同时爱,不具有相通性。

倘若用余弦相通度计算图书1和图书2的相通度,也叫做cosine距离,计算过程为:

回想高中时候的课本吾们就能够清新,上面的similarity计算公式,实际上就是计算书籍1的评分向量(4,5,4,0,0,0)和书籍2的评分向量(3,0,3,3,4,0)的 cos 夹角。

用同样的方式,能够算出图书1跟其他五本图书相通度别离为0.27, 0 .79,0.32,0.99和0。对每两本书计算完这个相通度后,就能够获得通盘图书的相通矩阵。

一个平台不光仅有6本图书6个用户,吾们再扩展到清淡的情况。计算物品的相通度,实际是计算每两个物品评分向量的cosine距离,评分向量的每一维,代外了一个用户,下图中,外格的第一走代外了一切用户对物品A的评分。当有100万个用户时,也就是计算每两个100万维向量的距离。如许就导致计算量很大,而且很众平台不光仅只有100万用户,因而这个矮效的计算方式必要改进。

(3)展望决策

有了评分矩阵之后,展望决策清淡有两栽场景。

一栽是根据相通度排序选举比来邻物品。相通于“望了还望”,“买了还买”场景。在这边的例子中,吾们清新图书1和其他图书的相通度排序别离是图书5,图书3,图书4和图书2。当用户点击了图书1时,就能够遵命相通挨次从高到矮选举。

第二栽是根据相通度展望评分选举物品。如何决策要不要给用户B选举图书2,图书4和图书6呢?

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

从上面的终局来望,用户B对其他图书评分比较矮,这几本图书选举的能够性大大缩短。

物品协同过滤实际操纵

这是选举编制里最质朴的算法,由于它的计算量会随着用户和物品的数目呈指数添长,因而它并不正当在大量用户或大量物品的场景操纵。在它诞生的年代,还异国大数据,这栽计算方式消耗大量内存,必要做大量的优化。吾尝试过用100万用户,100万物品和500万条的数据在256G内存的机器上做过尝试,计算一分钟后就宣告内存耗尽。

由于这个弱点,就必要新的算法来计算物品的协同过滤。

前线挑到,计算肆意两物品之间的相通度后,有两个操纵场景。针对这两个场景,别离有差别的迭代算法:

固然这个算法操纵较少了,但是物品协同过滤的思维都是一脉相乘的,理解了这个浅易的cosine相通度计算方式,能够更益理解后续的迭代算法。

末了添添一下,物品协同过滤的一个弱点,或者说是协同过滤的弱点,对于一个新物品,协同过滤是无法选举的。由于新物品用户无评分,导致它跟一切物品的相通度都是为0,这个是操纵这个算法时专门必要仔细的一个点。

三、用户协同过滤计算

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

如下图所示:

评分了相通图书的用户为相通用户,他们的相通度同样也用cosine相通度公式来计算。计算完相通度后,就能够根据用户间的相通性,联系我们展望用户对未评分图书进走评分展望。

但是在亚马逊上,由于用户评分的稀奇性(很众用户压根不评分),异国评分的用户无法跟其他用户计算相通性,从而导致很众用户之间异国相通度。因而2001年的时候,亚马逊选择物品协同过滤算法来做选举,并发外了论文。这个论文也导致行家一度认为物品协同过滤优于用户协同过滤。

其实只有最正当的算法,异国最优的算法。

时间到了移动互联网的今天,吾们更众是用点击数据,用户友人相关,通讯录或者甚至是联相符个WIFI地址来计算用户协同过滤,数据稀奇性得到肯定水平上的解决。现在,用户的协同过滤在新闻流内容选举,外交性的选举编制有着很益的行使。比如抖音,由于内容更新屡次,用户协同过滤能够行为很益的召回方法,因而也就会展现老公点赞的视频会被选举给他妻子的情景。

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

而且,用户相通度的计算,最有效的方式纷歧定是始末本节中介绍的计算方式,带外交功能的APP能够始末用户的友人相关,清淡的APP能够始末获取用户的通讯录实现用户协同过滤。这些方式都来的更添浅易和直接。

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

对于很众异国计算机专科背景的人来说,直接理解SVD算法是很难得的。必要有高等数学,线性代数,还要理解机器学习模型中的现在标函数,亏损函数,梯度,正则化,最幼二乘法等概念。很众文章介绍SVD都很技术,这边禁绝备采用技术大咖们的方式。吾照样不息用图文的方式介绍,这能够是世界上最浅易的理解SVD的方式。

最先介绍一下背景。

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

时间来到2006年,Netflix发首一个选举编制的悬赏竞赛。他们公开了本身网站的用户数据评分数据包,并放出100万美元悬赏优化选举算法。凡是能在Netflix现有的选举编制基础上,把均方根偏差降矮10%的人,都能参与瓜分这100万美元。新闻一放出,引来了众数高手参添。这场比赛中,最佳算法就是SVD。

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

照样跟前线那样,浅易化题目:倘若一个平台只有4个用户和4本图书。

(1)数据

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

(2)学习算法

根据线性代数吾们清新,一个矩阵能够分解为众个矩阵的乘积。SVD英文全称叫做Singular Value Decomposition,这个算法是个矩阵分解的通用名称,在差别周围有差别的样式。在选举编制周围,能够浅易的认为,SVD就是将一个矩阵,在肯定的精度亏损下,将一个矩阵分解成两个矩阵。

行使这个算法,吾们能够将上图的矩阵做以下的近似分解:

其中,用户矩阵片面代外着每个用户的偏益在一个二维隐语义空间上的映射。同样地,物品矩阵代外着每本图书的特性在一个二维隐语义空间上的映射。这两个矩阵也就是模型的终局。如许,吾们训练模型的时候,就只必要训练用户矩阵中的8个参数和物品矩阵中的8个参数即可。大大缩短了计算量。

模型训练的过程,浅易地说,就是始末最幼二乘法,不息将用户评分数据迭代入矩阵中计算,直到把均方偏差优化到最幼。上图的终局是吾始末Spark的ML库ALS模块直接计算的。

算法的详细现在标函数,亏损函数和梯度等,详述则涉及很众机器学习知识点,这边就不作介绍了。技术方面有很众解读文章,必要进一步理解的同学,能够搜索相关文章浏览。

(3)展望决策

始末模型训练,吾们得到用户矩阵Q和物品矩阵P后,通盘用户对通盘图书的评分展望能够始末R = PQ来获得。如上图中,用户A的向量(1.40,-1.18)乘以物品2的向量(2.19,0.73)则可得用户A对物品1的评分展望为:1.40×(-1.18) 2.19×0.73=2.21。

对一切的用户和物品都实走相通操作,能够得到通盘用户对通盘物品的评分。如下图右侧矩阵:

得到通盘的评分展望后,吾们就能够对每本图书进走择优选举。必要仔细的是,用户矩阵和物品矩阵的乘积,得到的评分预估值,与用户的实际评分不是全等相关,而是近似相称的相关。如上图中两个矩阵绿色片面,用户实际评分和预估评分都是近似的,有肯定的偏差。

在现在的实际行使中,SVD清淡行为协同过滤的离线召回操纵。清淡地,将必要给用户选举的物品挑前离线计算益,存在HBASE中,在用户有乞求的时候,直接读取选举的终局,放入初排阶段的召回荟萃。

总结

(1)协同过滤益处

协同选举是行使最普及的选举算法。基于内容选举的算法,必要给物品打上标签和给用户建用户画像,才能实现匹配选举。相比之下,协同过滤浅易了很众。它是仅操纵用户走为的进走选举,吾们不必要对物品或新闻进走完善的标签化分析,避免了一些人能够难以量化描述的概念的标签构建,又能够很益地发现用户的湮没有趣偏益。

(2)协同过滤弱点

由于协同过滤倚赖用户的历史数据,面对新的用户或者新的物品,在最先的时候异国数据或数据较少时,协同过滤算法无法做出选举。必要等数据积累,或者其他方案进走弥补弱点,也就是常说的冷启动的题目。

(3)机器学习周围,当准确的方式不走难以计算或者速度太慢的时候,往往会选择殉难一点精度,达到差不众但专门迅速的造就。SVD就是其中的一个例子。

(4)异国完善的算法,只有最正当的算法。现在的实践,也不是单纯用协同过滤来做选举,而是将他们行为其中的一个或几个召回策略来操纵。

本文由 @菠萝的海王子原创发布于人人都是产品经理。未经允诺,阻止转载

题图来自Unsplash,基于CC0制定

北京时间16日晚,英超第26轮,热刺客场3:2险胜阿斯顿维拉。热刺两度落后,孙兴慜帮球队打入反超进球后,又在第94分钟奉献绝杀,帮助热刺取得近4场英超联赛的客场首胜。

原标题:伍德潜伏期战7队接触球员名单曝光 霍弗德加里纳利接触时间超长

原标题:智慧留学—录取世界大学排名第 14 美国加州大学洛杉矶分校!


发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?