欢迎来到世界杯天天爱彩票_双色球天天爱彩票_天天爱彩票下载! 联系我们 网站地图

世界杯天天爱彩票_双色球天天爱彩票_天天爱彩票下载

0379-65557469

天天爱彩票不能买了
全国服务热线
0379-65557469

电话: 0379-65557469
0379-63930906
0379-63900388 
0379-63253525   
传真: 0379-65557469
地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室 

天天爱彩票不能买了

世界杯天天爱彩票-从原理到落地,七大维度读懂协同过滤引荐算法

作者:admin 发布时间:2019-08-10 19:32:02 浏览次数:109
打印 收藏 关闭
字体【
视力保护色

作者丨gongyouliu

来历 | 大数据与人工智能

导语:本文会从协同过滤思维简介、协同过滤算法原理介绍、离线协同过滤算法的工程完成、近实时协同过滤算法的工程完成、协同过滤算法运用场景、协同过滤算法的优缺陷、协同过滤算法落地需求重视的几个问题等7个方面来叙述。期望读者读完本文,能够很好地了解协同过滤的思路、算法原理、工程完成计划,而且具有依据本文的思路自己独立完成一个在实在事务场景中可用的协同过滤引荐体系的才能。

作者在《引荐体系产品与算法概述》这篇文章中简略介绍了协同过滤算法。协同过滤算法是在整个引荐体系开展史上比较知名的算法,具有无足轻重的方位,乃至在当今还在许多运用。

本篇文章作者会详细解说协同过滤引荐算法的方方面面,这儿所讲的也是作者依据多年引荐体系研究及工程实践经验的根底上总结而成,期望对咱们学习协同过滤引荐算法有所协助,供给一些学习。

在正式解说之前,先做一个简略界说。本文用“操作过”这个词来表明用户对标的物的各种操作行为,包含阅览、点击、播映、保藏、谈论、点赞、转发、评分等等。

一、协同过滤思维简介

协同过滤,从字面上了解,包含协同和过滤两个操作。所谓协同便是运用集体的行为来做决议计划(引荐),生物上有协同进化的说法,经过协同的作用,让集体逐渐进化到更佳的状况。关于引荐体系来说,经过用户的继续协同作用,终究给用户的引荐会越来越准。而过滤,便是从可行的决议计划(引荐)计划(标的物)中将用户喜爱的计划(标的物)找(过滤)出来。

详细来说,协同过滤的思路是经过集体的行为来找到某种类似性(用户之间的类似性或许标的物之间的类似性)世界杯天天爱彩票-从原理到落地,七大维度读懂协同过滤引荐算法,经过该类似性来为用户做决议计划和引荐。

现实生活中有许多协同过滤的事例及思维体现,除了前面说到的生物的进化是一种”协同过滤“作用外,我认为人类喜爱寻求相亲中的“门当户对”,其实也是一种协同过滤思维的反射,门当户对实践上是建立了相亲男女的一种“类似度”(家庭布景、身世、生活习气、待人接物、消费观、乃至价值观或许会类似),给自己找一个门当户对的伴侣便是一种“过滤”,当两边”门当户对“时,各方面的习气及价值观会更类似,未来美好的概率也会更大。假如整个社会具有这样的传统和习尚,以及在实在”事例“中”门当户对“的夫妻的确会更调和,经过”协同进化“作用,咱们会越来越认同这种办法。我个人也觉得”门当户对“是有必定道理的。

协同过滤运用了两个十分朴素的天然哲学思维:“集体的才智”和“类似的物体具有类似的性质”,集体的才智从数学上讲应该满意必定的统计学规则,是一种朝向平衡安稳态开展的动态进程,越类似的物体化学及物理组成越共同,当然体现的外在特性会更类似。尽管这两个思维很简略,也很简略了解,可是正由于思维很朴素,价值反而十分大。所以协同过滤算法原理很简略,可是作用很不错,而且也十分简略完成。

协同过滤分为依据用户的协同过滤和依据标的物(物品)的协同过滤两类算法。下面咱们对协同过滤的算法原理来做详细的介绍。

二、协同过滤算法原理介绍

上面一节简略介绍了协同过滤的思维,依据协同过滤的两种引荐算法,中心思维是很朴素的”物以类聚、人以群分“的思维。所谓物以类聚,便是核算出每个标的物最类似的标的物列表,咱们就能够为用户引荐用户喜爱的标的物类似的标的物,这便是依据物品(标的物)的协同过滤。所谓人以群分,便是咱们能够将与该用户类似的用户喜爱过的标的物的标的物引荐给该用户(而该用户未曾操作过),这便是依据用户的协同过滤。详细思维能够参阅下面的图1。

图1:”物以类聚,人以群分“的朴素协同过滤引荐

协同过滤的中心是怎样核算标的物之间的类似度以及用户之间的类似度。咱们能够选用十分朴素的思维来核算类似度。咱们将用户对标的物的评分(或许隐式反应,如点击、保藏等)构建如下用户行为矩阵(见下面图2),矩阵的某个元素代表某个用户对某个标的物的评分(假如是隐式反应,值为1),假如某个用户对某个标的物未发生行为,值为0。其间行向量代表某个用户对一切标的物的评分向量,列向量代表一切用户对某个标的物的评分向量。有了行向量和列向量,咱们就能够核算用户与用户之间、标的物与标的物之间的类似度了。详细来说,行向量之间的类似度便是用户之间的类似度,列向量之间的类似度便是标的物之间的类似度。

为了避免误解,这儿简略解释一下隐式反应,只需不是用户直接评分的操作行为都算隐式反应,包含阅览、点击、播映、保藏、谈论、点赞、转发等等。有许多隐式反应是能够直接取得评分的,后边会解说。假如不直接取得评分,就用0、1表明是否操作过。

在实在事务场景顶用户数和标的物数一般都是很大的(用户数或许是百万、千万、亿级,标的物或许是十万、百万、千万级),而每个用户只会操作过有限个标的物,所以用户行为矩阵是稀少矩阵。正由于矩阵是稀少的,会便利咱们进行类似度核算及为用户做引荐。

图2:用户对标的物的操作行为矩阵

类似度的核算能够选用cosine余弦类似度世界杯天天爱彩票-从原理到落地,七大维度读懂协同过滤引荐算法算法来核算两个向量 (能够是上图2中的行向量或许列向量)之间的类似度:

核算完了用户(行向量)或许标的物(列向量)之间的类似度,那么下面说说怎样为用户做个性化引荐。

2.1 依据用户协同过滤

依据上面算法思维的介绍,咱们能够将与该用户最类似的用户喜爱的标的物引荐给该用户。这便是依据用户的协同过滤的中心思维。

用户u对标的物s的喜爱度sim(u,s)能够选用如下公式核算,其间U是与该用户最类似的用户调集(咱们能够依据用户类似度找到与某用户最类似的K个用户), 是用户 对标的物s的喜爱度(关于隐式反应为1,而关于非隐式反应,该值为用户对标的物的评分), 是用户 与用户u的类似度。

有了用户对每个标的物的评分,依据评分降序摆放,就能够取topN引荐给用户了。

2.2 依据标的物的协同过滤

类似地,经过将用户操作过的标的物最类似的标的物引荐给用户,这便是依据标的物的协同过滤的中心思维。

用户u对标的物s的喜爱度sim(u,s)能够选用如下公式核算,其间S是一切用户操作过的标的物的列表, 是用户u对标的物 的喜爱度, 是标的物 与s的类似度。

有了用户对每个标的物的评分,依据评分降序摆放,就能够取topN引荐给用户了。

从上面的介绍中咱们能够看到协同过滤算法思路十分直观易懂,核算公式也相对简略,而且后边两节咱们也会阐明它易于散布式完成,一起该算法也不依靠于用户及标的物的其他metadata信息。协同过滤算法被Netflix、Amazon等大的互联网公司证明作用也十分好,也能够为用户引荐新颖性内容,所以一直以来都在工业界得到十分广泛的运用。

三、离线协同过滤算法的工程完成

尽管协同过滤算法原理十分简略,可是在大规划用户及海量标的物的场景下,单机是难以处理核算问题的,咱们有必要凭借散布式技能来完成,让整个算法能够应对大规划数据的应战。在本节,咱们依据干流的Spa知rk散布式核算渠道相关的技能来详细解说协同过滤算法的离线(批处理)完成思路,供咱们参阅(读者能够阅览参阅文献1、2、3、4了解协同过滤算法原理及工业运用),一起会在下一节解说在近实时场景下怎样在工程上完成协同过滤算法。

在这儿咱们只解说依据标的物的协同过滤算法的工程完成计划,依据用户的协同过滤思路彻底相同,不再赘述。

为了简略起见,咱们能够将引荐进程拆解为2个阶段,先核算类似度,再为用户引荐。下面别离介绍这两个进程怎样工程完成。

3.1 核算topK类似度

本进程咱们核算出恣意两个标的物之间的类似度,有了恣意两个标的物之间的类似度,那么咱们就能够为每个标的物核算出与它最类似的K个标的物了。

假定有两个标的物 ,它们对应的向量(即图2中矩阵的列向量,别离是第i列和第j列)如下,其间n是用户数。

那么 的类似度核算,咱们能够细化如下:

公式1:核算 类似度

咱们细心看一下上述公式,公式的分子便是下图矩阵中对应的i列和j列中同一行中的两个元素(赤色矩形中的一对元素)相乘,而且将一切行上第i列和第j列的元素相乘得到的乘积相加(这儿其实只需求考虑同一行对应的i列和j列的元素都非零的状况,假如只需第i列和第j列中有一个为零,乘积也为零)。公式中分母是第i行与第i行依照上面类似的办法相乘再相加后开根号的值,再乘以第j行与第j行依照上面类似的办法相乘再相加后开根号的值。

图3:核算两个列向量的cosine余弦能够拆解为简略的加减乘及开根号运算

有了上面的简略剖析,就简略散布式核算类似度了。下面咱们就来解说,在Spark上怎样简略地核算每个标的物的topK类似度。在Spark上核算类似度,最首要的方针是怎样将上面巨大的核算量(前面现已说到在互联网公司,往往用户数和标的物数都是十分巨大的)经过散布式技能完成,这样就能够运用多台服务器的核算才能,处理大核算问题。

首要将一切用户操作过的标的物”搜集“起来,构成一个用户行为RDD,详细的数据格式如下:

其间uid是用户仅有辨认编码,sid是标的物仅有辨认编码,R是用户对标的物的评分(即矩阵中的元素)。

关于 中的某个用户来说,他操作过的标的物 和 ,必定在该用户地点的行对应的列i和列j的元素非零,依据上面核算 类似度的公式,需求将该用户对应的 的评分乘起来。这个进程能够用下面的图4来阐明。

图4:对用户U来说,将他一切操作过的标的物做笛卡尔积

当一切用户都依照图4的办法转化为标的物对及得分(图4中右边的 )时,咱们就能够对标的物对Group(聚合),将相同的对兼并,对应的得分相加,终究得到的RDD为:。这样,公式1中分子就核算出来了(上式中的Score便是公式1中的分子)。现在咱们需求核算分母,这十分简略,只需从上面的RDD中将标的物sid1等于标的物sid2的列过滤出来就能够了, 经过下图的操作,咱们能够得到一个map 。

图5:从 中过滤出 的元素,用于核算公式1中的分母

最多含有标的物的数量(m)个的元素,相对来说不大,咱们能够将 播送(broadcast)出去。

便利咱们依照公式1除以分母,终究得到 的类似度。

经过上面这些进程,公式1中的分子和分母底子都很简略核算出来了,咱们经过下图的代码(下面的broadcast便是 ),就能够核算出每组 对的类似度,终究得到的RDD为:

,其间Sim为sid1和sid2的类似度。

图6:核算每组 的类似度

有了上面的预备,下面咱们来阐明一下怎样核算每个标的物的topK最类似的标的物。

详细的核算进程能够用如下的Spark Transformation来完成。其间第三步的TopK需求咱们自己完成一个函数,求 这样的列表中评分最大的TopK个元素,完成也是十分简略的,这儿不赘述

假如咱们把每个标的物最类似的K个标的物及类似度当作一个列向量的话,那么咱们核算出的标的物类似度其实能够看作如下矩阵,该矩阵每列K个非零元素。

图7:标的物类似度矩阵

到此为止,咱们经过Spark供给的一些Transformation操作及一些工程完成上的技巧核算出了每个标的物topK最类似的标的物。该核算办法能够横向拓宽,所以再大的用户数和标的物数都能够轻松应对,最多或许需求多加一些服务器。

3.2 为用户生成引荐

有了1中核算出的标的物topK最类似的标的物,下面咱们来阐明一下怎样为用户生成个性化引荐。生成个性化引荐有两种工程完成战略,一种是当作矩阵的乘积,别的一种是依据第二节2中”依据标的物的协同过滤“中的公式来核算,这两种办法本质上是相同的,仅仅工程完成上不相同。下面咱们别离解说这两种完成计划。

(1)经过矩阵相乘为用户生成引荐

上面图2中的矩阵是用户行为矩阵,第i行第j列的元素代表了用户i对标的物j的偏好/评分,咱们将该矩阵记为 ,其间n是用户数,m是标的物数。图7中的矩阵是标的物之间的类似度矩阵,咱们将它记为 ,这是一个方阵。和 其实都是稀少矩阵,咱们经过核算这两个矩阵的乘积(Spark上是能够直接核算两个稀少矩阵的乘积的),终究的成果矩阵就能够便运用来为用户引荐了:。其间的第i行 代表的是用户i对每个标的物的偏好得分,咱们从这个列表中过滤掉用户操作过的标的物,然后依照得分从高到低降序摆放取topN便是终究给用户的引荐。

(2) 通核算公式为用户生成引荐

标的物类似度矩阵 是稀少矩阵,最多 个非零元素(由于每个标的物只保存K个最类似的标的物),一般K取几十或许上百规划的数值,m假如是十万或许百万量级,存储空间在1G左右(例如,假如m=100万,K=100,类似度为双精度浮点数,那么 非零元素占用的空间为100万*100*8Byte=763M),彻底能够经过播送的办法将 broadcast到每个Spark核算节点中。咱们先将类似矩阵转化为下图的Map结构,再播送出去,便利运用公式核算类似度。

图8:标的物的topK类似列表运用Map数据结构来存储

有了标的物之间的类似度Map,为用户核算引荐的进程能够依据用户行为RDD,在每个Partition中,针对每个用户u核算u与每个标的物之间的偏好度(运用第二节2依据标的物的协同过滤中的公式),再取topN就得到该用户的引荐成果了。由于用户行为选用了RDD来表明,所以整个核算进程能够散布式进行,每个Partition散布在一台服务器上进行核算。详细的核算逻辑能够用下面的代码片段来完成。

图9:为每个用户核算topN引荐

讲到这儿,依据Spark渠道离线完成协同过滤算法的工程计划就讲完了。该完成计划强依靠于Spark的数据结构及散布式核算函数,或许在不同的核算渠道上(比方Flink、Tensorflow等)详细的完成办法会不相同,可是底子思路和原理是相同的,有爱好而且平常运用这些渠道的读者能够在这些核算渠道上单独完成一下,算是对自己的一个应战。

四、近实时协同过滤算法的工程完成

上面第三节中的协同过滤工程完成计划适宜做离线批量核算,比较适宜标的物添加较缓慢的场景及产品(比方电商、视频、音乐等),关于新闻、短视频这类增量十分大而且时效性强的产品(现在日头条、快手等)是不太适宜的。

那么咱们是否能够规划出一套适宜这类标的物快速添加的产品及场景下的协同过滤算法呢?实践上是能够的,下面咱们来简略说一下怎样近实时完成简略的协同过滤算法。

咱们的近实时协同过滤算法依据Kafka、HBase和Spark Streaming等散布式技能来完成,中心思维跟第三节中的类似,只不过咱们这儿是实时更新的,详细的算法流程及涉及到的数据结构见下面图10。下面咱们对完成原理做简略介绍,整个引荐进程总共分为4步。

图10:近实时依据标的物的协同过滤算法流程及相关数据世界杯天天爱彩票-从原理到落地,七大维度读懂协同过滤引荐算法结构

4.1 获取用户在一个时刻窗口内的行为

首要Spark Streaming程序从kafka读取一个时刻窗口(Window)(一般一个时刻窗口几秒钟,时刻越短实时性越好,可是对核算才能要求也越高)内的用户行为数据,咱们对同一个用户U的行为做聚合,得到上面图中心部分的用户行为列表(用户在该时刻窗口中有k次行为记载)。

趁便说一下,由于是实时核算,所以用户行为数据会实时传输到Kafka中,供后续的Spark Streaming程序读取。

4.2 依据用户在世界杯天天爱彩票-从原理到落地,七大维度读懂协同过滤引荐算法时刻窗口W内的行为及用户行为记载表更新标的物相关表CR

依据(1)中获取的用户行为记载,在这一步,咱们需求更新标的物相关表CR,这儿涉及到两类更新。

首要,用户U在时刻窗口W内的一切k次行为 ,咱们对标的物两两组合(本身和本身做笛卡尔积)并将得分相乘更新到CR中,比方 组合,它们的得分 相乘 更新到CR表中rowkey为 的行中。的得分score更新为score+ )。其次,关于用户U在时刻窗口W中的行为还要与用户行为表UAction中的行为两两组合(做笛卡尔积)选用前面介绍的相同的战略更新到CR表中,这儿为了避免组合过多,咱们能够只挑选时刻在必定范围内(比方2天内)的标的物对组合,然后削减核算量。

这儿说一下,假如用户操作的某个标的物现已在行为表UAction中(这种状况一般是用户对同一个标的物做了屡次操作,昨日看了这短视频,今日刷到了又看了一遍),咱们需求将这两次相同的行为兼并起来,详细上咱们能够将这两次行为中得分高的赋值给行为表中该标的物的得分,一起将操作时刻更新为最新操作该标的物的时刻。一起将时刻窗口W中该操作行为剔除去,不参上面说到的时刻窗口W中的操作行为跟UAction表中相同的操作行为的笛卡尔积核算。

4.3 更新用户的行为记载HBase表:UAction

依据(1)获取中的用户行为记载,当(2)处理完之后,将行为记载刺进用户行为表UAction中。为了核算简略便利及保存用户最近的行为,用户行为表中咱们能够只保存最近N条(能够挑选的参数,比方20条)行为,一起只保存最近一段时刻内(比方5天)的行为。

4.4 为用户生成个性化引荐

有了上面(1)、(2)、(3)步的根底,终究一步是为用户做引荐了,咱们对核算进程简略阐明如下:

用户U对标的物的评分 能够选用如下公式核算。

其间t是用户操作过的标的物, 是该用户对标的物t的得分(即图10中UAction数据结构中的评分r), 是标的物t和标的物s之间的类似度,能够选用如下公式核算,这儿 便是标的物相关表CR中(t,s)对应的得分, 和 类似。

当咱们核算完了用户U跟一切标的物的得分之后,经过对得分降序摆放取topN就能够作为U的引荐了。当标的物量很大(特别是新闻短视频类产品)时,实时核算仍是压力十分大的,这时咱们能够选用一个简略的技巧,咱们事先从CR表中过滤出跟用户行为表中至少有一个标的物t有交集的标的物s(即标的物对 得分不为零),只针对这部分标的物核算 ,再从这些标的物中挑选得分最大的topN引荐给用户。为什么能够这么做呢?由于假如某个标的物s与用户行为标的物调集无交集,那么依据核算 的公式, 必定为0,这时核算出的 也必定为0。

上面针对一个用户怎样实时核算协同过滤做了解说,那么在一个时刻窗口W中有若干个用户都有操作行为,这时能够将用户均匀分配到不同的Partition中,每个Partition为一批用户计引荐。详细流程能够参阅下面图11。为每个用户核算好引荐后,能够插一份到HBase中作为一个副本,别的还能够经过Kafka将引荐成果同步一份到CouchBase集群中,供引荐Web服务为用户供给线上引荐服务。

图11:在同一时刻窗口W中为多个用户生成个性化引荐

近实时的协同过滤首要用于对时效性要求比较高的产品形状,比方新闻、短视频等运用。这些运用标的物更新快,用户耗费一个标的物(读一篇文章、看一段短视频)所花的时刻较短,这类运用一般是用于添补用户的碎片化时刻的。而关于电商、视频等产品,近实时的协同过滤不是有必要的。

上面咱们解说的仅仅近实时协同过滤的一种完成计划,其实近实时协同过滤有许多可行的完成计划,咱们的完成计划跟参阅文献6中的covisitation counts计划思路本质上是共同的。读者也能够阅览参阅文献5,腾讯给出了别的一个运用Storm来实时完成协同过滤的计划,思路是十分值得学习的。别的参阅文献6中Google完成了一个新闻的协同过滤算法,经过MinHash算法依据用户行为来近实时核算用户类似度,终究经过类似依据用户的协同过滤的算法来为用户引荐。参阅文献7、8也对怎样增量做协同过滤给出了共同的办法和思路。

五、协同过滤算法的运用场景

协同过滤是十分重要的一类引荐算法,咱们在第三、第四节介绍了批处理(离线)协同过滤和近实时协同过滤的工程完成计划,信任咱们对怎样依据Spark及HBase技能完成协同过滤有了比较明晰的认知。那么协同过滤算法能够用于哪些引荐事务场景呢?它首要的及延伸的运用场景有如下3类:

5.1 彻底个性化引荐(范式)

彻底个性化引荐是为每个用户引荐不相同的标的物引荐列表,咱们在第二节中所解说的两类协同过滤算法便是彻底个性化引荐的办法,所以协同过滤能够用于该场景中。咱们在第三、第四节中也十分明确地给出了从工程上完成彻底个性化引荐的思路。

下图是电视猫电影猜你喜爱引荐,这是一类彻底个性化引荐范式,这类引荐能够依据协同过滤算法来完成。

图12:电视猫彻底个性化引荐:电影猜你喜爱

5.2标的物相关标的物引荐(范式)

尽管第二节没有直接讲标的物相关标的物的算法,可是讲到了怎样核算两个标的物之间的类似度(即图2中评分矩阵的列向量之间的类似度),咱们运用该类似度能够核算某个标的物最类似的K个标的物(在第三节1中咱们给出了完成标的物类似性的工程完成,在第四节4中咱们也给出了近实时核算标的物类似度的完成计划)。那么这K个最类似的标的物就能够作为该标的物的相关引荐。

下图是电视猫类似影片引荐,是一类标的物相关标的物引荐范式,这类引荐能够依据协同过滤算法中心进程中的标的物topN类似度核算来完成。

图13:电视猫标的物相关标的物引荐:类似影片

5.3其他运用办法及场景

在协同过滤算法的解说中,咱们能够将用户或许标的物用向量表明(用户行为矩阵中的行向量和列向量),有了用户和标的物的向量表明,咱们就能够对用户和标的物做聚类了。

对用户聚类后,当然能够用于做引荐,将同一类中其他用户操作过的标的物引荐给该用户便是一种可行的引荐战略。一起,用户聚类后,也能够用于做lookalike类的商业化(如广告)测验。

对标的物聚类后,也能够用于做标的物相关引荐,将同一类中的其他标的物作为相关引荐成果。别的,标的物聚类后,这些类能够作为专题供修改或许运营团队来作为一种内容分发的资料。

六、协同过滤算法的优缺陷

前面临协同过滤算法做了比较齐备的解说,也说到了协同过滤算法的一些特色,这儿咱们简略罗列一些协同过滤算法的优缺陷,便利咱们更进一步深化了解协同过滤算法。

长处

协同过滤算有许多长处,总结下来最大的长处有如下几个:

(1) 算法原理简略、思维朴素

早年面的几节解说中不难看出,协同过滤算法的完成十分简略,只需懂简略的四则混合运算,了解向量和矩阵的底子概念就能够了解算法的原理。估量在整个机器学习范畴,没有比这个算法更直观简略的算法了。

协同过滤的思维是简略的”物以类聚“、”人以群分“的思维,信任咱们都能够了解,正由于思维朴素,所以算法原理简略。

(2) 算法易于散布式完成、能够处理海量数据集

咱们在第三、第四节别离解说了协同过滤算法的离线和实时工程完成,咱们应该很简略看到,协同过滤算法能够十分简略运用Spark散布式渠道来完成,因而能够经过添加核算节点很简略处理大规划数据集。

(3) 算法全体作用很不错

协同过滤算法是得到工业界验证过的一类重要算法,在Netflix、Google、Amazon及国内大型互联网公司都有很好的落地和运用。

(4) 能够为用户引荐出多样性、新颖性的标的物

前面讲到协同过滤算法是依据集体才智的一类算法,它运用集体行为来做决议计划。在实践运用中现已被证明能够很好的为用户引荐多样性、新颖性的标的物。特别是当集体规划越大,用户行为越多,引荐的作用越好。

(5) 协同过滤算法只需求用户的行为信息,不依靠用户及标的物的其他信息

早年面的算法及工程实践中咱们能够知道,协同过滤算法只依靠用户的操作行为,不依靠详细用户相关和标的物相关的信息就能够做引荐,往往用户信息和标的物信息都是比较复杂的半结构化或许非结构化的信息,处理起来很不便利。这是一个极大的优势,正由于这个优势让协同过滤算法在工业界大放异彩。

缺陷

除了上面介绍的这些长处外,协同过滤算法也存在一些缺乏的方面,详细来说,在下面这些点,协同过滤算法存在软肋,有提高和优化的空间。

(1) 冷发动问题

协同过滤算法依靠用户的行为来为用户做引荐,假如用户行为少(比方新上线的产品或许用户规划不大的产品),这时就很难发挥协同过滤算法的优势和价值,乃至底子无法为用户做引荐。这时能够选用依据内容的引荐算法作为弥补。

别的,关于新入库的标的物,由于只要很少的用户操作行为,这时相当于用户行为矩阵中该标的物对应的列底子都是零,这时无法核算出该标的物的类似标的物,一起,该标的物也不会出现在其他标的物的类似列表中,因而无法将该标的物引荐出去。这时,能够选用人工的战略将该标的物在必定的方位曝光,或许强行以必定的份额或许概率参加引荐列表中,经过搜集该标的物的行为处理该标的物无法被引荐出去的问题。

在第七节咱们会愈加详细介绍协同过滤的冷发动处理计划。

(2) 稀少性问题

关于现代的互联网产品,用户基数大,标的物数量多(特别是新闻、UGC短视频类产品),一般用户只对很少数的标的物发生操作行为,这是用户操作行为矩阵是十分稀少的,太稀少的行为矩阵核算出的标的物类似度往往不行精准,终究影响引荐成果的精准度。

协同过滤算法尽管简略,可是在实践事务中,为了让它有较好的作用,终究对事务发生较大的价值,咱们在运用该算法时需求留意如下问题。

7.1 是选用依据用户的协同过滤仍是选用依据标的物的协同过滤

在互联网产品中一般会选用依据标的物的协同过滤,由于关于互联网产品来说,用户相关于标的物改变更大,用户是添加较快的,标的物添加相对较慢(这也不是必定的,像新闻、短视频类运用标的物也是增速巨大的),运用依据标的物的协同过滤算法作用更安稳。

7.2 对时刻加权

一般来说,用户的爱好是跟着时刻改变的,越是长远的行为对用户当时的爱好奉献越小,依据该考虑,咱们能够对用户的行为矩阵做时刻加权处理。将用户评分加上一个时刻赏罚因子,对长远的行为进行必定的赏罚,可行的赏罚计划能够选用指数衰减的办法。例如,咱们能够选用如下的公式来对时刻做衰减,咱们能够挑选一个时刻作为基准值,比方当时时刻,下式中的n是标的物操作时刻与基准时刻相差的天数(n=0时,w(0)=1)。

7.3 关于用户对标的物的评分

在实在事务场景中,用户不必定对标的物评分,或许只要操作行为。这时能够选用隐式反应的办法来做协同过滤,尽管隐式反应的作用或许会差一些。

但一起,咱们是能够经过一些办法和技巧来直接取得隐式反应的评分的,首要有如下两类办法,经过这两类办法取得评分,是十分直观的,作用必定比隐式反应直接用0或许1好。

尽管许多时分用户的反应是隐式的,但用户的操作行为是多样化的,有阅览、点击、点赞、购买、保藏、共享、谈论等等,咱们能够依据用户这些隐式行为的投入度(投入的时刻本钱、资金本钱、交际压力等,投入本钱越大给定越高的分数)对这些行为人为打分,比方阅览给1分,点赞给2分,转发给4分等等。这样咱们就能够针对用户不同的行为生成差异化的评分。

关于像音乐、视频、文章等,咱们能够记载用户在消费这些标的物上所花的时刻来核算评分。拿视频来说,假如一个电影总时长是100分钟,假如用户看了60分钟就退出了,那么咱们就能够给用户打6分(10分制,由于用户看了60%,所以打6分)。

7.4 类似度核算

咱们在前面解说协同过滤算法时需求核算两个向量的类似度,本文前面选用的是cosine余弦类似度。其实,核算两个向量类似度的办法十分多,cosine余弦是被证明在许多场景作用都不错的一个算法,但并不是一切场景cosine余弦都是最好的,需求针对不同场景做测验和比照。在这儿,咱们简略罗列一些常用的类似度核算的办法,供咱们参阅。

(1) cosine余弦类似度

前面现已花了很大篇幅解说了cosine的核算公式,这儿不赘述。需求提一点的是,针对隐式反应(用户只要点击等行为,没有评分),向量的元素要么为1要么为0,直接用cosine余弦公式作用不是很好,参阅文献5针对隐式反应给出了一个更好的核算公式(见下面图14),其间 是用户u对标的物p的评分(关于隐式反应,评分是0或许1,可是参阅文献5针对用户不同的隐式反应给出了不同的评分,而不是一概用1,比方阅览给1分,保藏给3分,共享给5分等, 取用户u对标的物p一切的隐式反应行为中得分最高的)。

图14:一种优化后的核算隐式反应类似度的公式,类似cosine余弦公式

(2) 皮尔森相关系数(Pearson correlation coefficient)

皮尔森相关系数是一种线性相关系数。皮尔森相关系数是用来反映两个变量线性相关的程度的统计量。详细核算公式如下面图15,其间 和 是两个向量, 和 是这两个向量的均值。参阅文献9中有对怎样运用皮尔逊相关系数做协同过滤的介绍,感爱好的读者能够参阅学习。

图15:皮尔逊相关系数的核算公式

(3) Jaccard coefficient

Jaccard系数用于核算两个调集之间的类似度,也比较适宜隐式反应类型的用户行为,假定两个标的物 ,操作过这两个标的物的用户别离为:和 ,那么Jaccard系数的核算公式如下:

7.5 冷发动问题

前面在讲协同过滤算法的缺陷时讲到协同过滤算法会存在严峻的冷发动问题,首要体现在如下3个方面:

(1) 用户冷发动

所谓用户冷发动便是新用户没有太多的行为,咱们无法为他核算个性化引荐。这时可行的引荐战略是为这类用户引荐抢手标的物、经过人工编列筛选出的标的物。或许用户只要很少的行为,协同过滤作用也欠好,这时能够选用依据内容的引荐算法弥补。

(2)标的物冷发动

所谓标的物冷发动便是新的标的物参加体系,没有用户操作行为,这时协同过滤算法也无法将该标的物引荐给用户。可行的处理计划有三个:

首要,这类标的物能够经过人工曝光到比较好的引荐位(如主页)上,在尽短的时刻内取得足够多的用户行为,这样就能够“发动”协同过滤算法了。这儿有个比较大的问题是,假如该标的物不是干流的标的物、不行抢手的话,放在好的位子不但占用资源一起对用户体会还欠好。

其次,在引荐算法上做一些战略,能够将这类新的标的物以必定的概率稠浊在用户的引荐列表中,让这些标的物有足够多的曝光,在曝光进程中搜集用户行为,一起该办法也能够提高用户引荐的多样性。

终究,这类标的物也能够经过依据内容的引荐算法来分发出去,作者在《依据内容的引荐算法》中现已讲过世界杯天天爱彩票-从原理到落地,七大维度读懂协同过滤引荐算法内容引荐,这儿不再赘述。

(3)体系冷发动

所谓体系冷发动,便是该产品是一个新开发不久的产品,还在开展用户初期阶段,这时协同过滤算法底子无法起作用,最好选用依据内容的引荐算法或许直接运用修改编列一些多样性的优质内容作为引荐备选引荐。

至此,协同过滤引荐算法底子讲完了,在终究咱们做一个简略总结。本文对协同过滤算法原理、工程实践进行了介绍,在工程实践上既解说了批处理完成计划,一起也解说了一种近实时完成计划。而且对协同过滤的产品形状及运用场景、优缺陷、在落地协同过滤算法中需求留意的问题进行了介绍。期望本文能够协助读者更深化地了解协同过滤引荐算法。参阅文献中的资料从学术上、工业界都对协同过滤算法原理、实践从不同视角及场景进行了论说,具有十分大的参阅价值,值得咱们阅览学习。

参阅文献

1. Item-based collaborative filtering recommendation algorithms

2. item-based top-n recommendation algorithms

3. Collaborative filtering for implicit feedback datasets

4. Amazon.com reecommendations: Item-to-item collaborative filtering

5. TencentRec- Real-time Stream Recommendation in Practice

6. Google news personalization:Scalable online collaborative flitering

7. Forgetting mechanisms for incremental collaborative filtering

8. Scalable collaborative filtering using incremental update and local link prediction

9. GroupLens:An Open Architecture for Collaborative Filtering of Netnews

(*本文为 AI科技大本营转载文章,转载请微信原作者)

60+技能大咖与你相约 2019 AI ProCon!大会早鸟票已售罄,优惠票3.5折限时速抢进行中......2019 AI开发者大会将于9月6日-7日在北京举办,这一届AI开发者大会有哪些亮点?一线公司的大牛们都在重视什么?AI职业的风向是什么?2019 AI开发者大会,倾听大牛共享,聚集技能实践,和万千开发者共生长。

版权所有:洛阳市建设工程咨询有限责任公司 联系人:李经理 电话: 地址:洛阳市洛龙区开元大道219号2幢1-2522、2501、2502、2503、2504、2505室
版权所有 世界杯天天爱彩票 湘ICP备164786013号-8