个性化推荐排序详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个性化推荐排序详解相关的知识,希望对你有一定的参考价值。

参考技术A 原文链接:https://mp.weixin.qq.com/s/lUP2BehOh7KczR3WRnOqFw

爱奇艺推荐系统介绍

我们的推荐系统主要分为两个阶段, 召回阶段和排序阶段。

召回阶段 根据用户的兴趣和历史行为,同千万级的视频库中挑选出一个小的候选集(几百到几千个视频)。这些候选都是用户感兴趣的内容, 排序阶段 在此基础上进行更精准的计算,能够给每一个视频进行精确打分,进而从成千上万的候选中选出用户最感兴趣的少量高质量内容(十几个视频)。

推荐系统的整体结构如图所示,各个模块的作用如下:

1

用户画像: 包含用户的人群属性、历史行为、兴趣内容和偏好倾向等多维度的分析,是个性化的基石

2

特征工程: 包含了了视频的类别属性,内容分析,人群偏好和统计特征等全方位的描绘和度量,是视频内容和质量分析的基础

3

召回算法: 包含了多个通道的召回模型,比如协同过滤,主题模型,内容召回和SNS等通道,能够从视频库中选出多样性的偏好内容

4

排序模型: 对多个召回通道的内容进行同一个打分排序,选出最优的少量结果。

除了这些之外推荐系统还 兼顾了推荐结果的多样性,新鲜度,逼格和惊喜度等多个维度 ,更能够满足用户多样性的需求。

2

推荐排序系统架构

在召回阶段,多个通道的召回的内容是不具有可比性的,并且因为数据量太大也难以进行更加精确的偏好和质量评估,因此需要在排序阶段对召回结果进行统一的准确的打分排序。

用户对视频的满意度是有很多 维度因子 来决定的,这些因子在用户满意度中的重要性也 各不相同 ,甚至各个因子之间还有 多层依赖关系 ,人为制定复杂的规则既难以达到好的效果,又不具有可维护性,这就需要借助机器学习的方法,使用机器学习模型来综合多方面的因子进行排序。

排序系统的架构如图所示,主要由用 户行为收集,特征填充,训练样本筛选,模型训练,在线预测排序 等多个模块组成。

机器学习的主体流程是比较通用的,设计架构并不需要复杂的理论,更多的是需要对细节,数据流和架构逻辑的仔细推敲。

这个架构设计吸取了以前的经验和教训,在通用机器学习的架构基础上解决了两个问题:

训练预测的一致性

机器学习模型在训练和预测之间的差异会对模型的准确性产生很大的影响,尤其是模型训练与在线服务时特征不一致,比如用户对推荐结果的反馈会实时影响到用户的偏好特征,在训练的时候用户特征的状态已经发生了变化,模型如果依据这个时候的用户特征就会产生非常大的误差。

我们的解决办法是,将在线服务时的特征保存下来,然后填充到收集的用户行为样本中,这样就保证了训练和预测特征的一致性。

持续迭代

互联网产品持续迭代上线是常态,在架构设计的时候,数据准备,模型训练和在线服务都必须能够对持续迭代有良好的支持。

我们的解决方案是,数据准备和模型训练各阶段解耦,并且策略配置化,这种架构使模型测试变得非常简单,可以快速并行多个迭代测试。

3

推荐机器学习排序算法演进

1

上古时期

我们第一次上线机器学习排序模型时,选用了比较简单的Logistic Regression,将重点放到架构设计上,尽量保证架构的正确性。除此之外,LR模型的解释性强,方便debug,并且通过特征权重可以解释推荐的内容,找到模型的不足之处。

在模型训练之前,我们首先解决的是 评测指标 和 优化目标 的问题。

评测指标(metrics)

线上效果的评测指标需要与长远目标相匹配 ,比如使用用户的投入程度和活跃度等。在我们的实验中,业界流行的CTR并不是一个好的评测指标,它会更偏向于较短的视频,标题党和低俗内容。

离线评测指标是按照业务来定制的 ,以便与在线评测指标匹配,这样在离线阶段就能够淘汰掉无效策略,避免浪费线上流量。

优化目标(objective)

机器学习会按照优化目标求解最优解,如果优化目标有偏差,得到的模型也存在偏差,并且在迭代中模型会不断地向这个偏差的方向学习,偏差会更加严重。

我们的方法是给样本添加权重,并且将样本权重加到loss function中,使得优化目标与评测指标尽可能的一致,达到控制模型的目的。

LR是个线性分类模型,要求输入是线性独立特征。我们使用的 稠密的特征 (维度在几十到几百之间)往往都是非线性的,并且具有依赖性,因此需要对特征进行转换。

特征转换需要对特征的分布,特征与label的关系进行分析,然后采用合适的转换方法。 我们用到的有以下几种: Polynomial

Transformation,Logarithmic or Exponential Transformation,Interaction

Transformation和Cumulative Distribution Function等。

虽然LR模型简单,解释性强,不过在特征逐渐增多的情况下,劣势也是显而易见的。

1

特征都需要人工进行转换为线性特征,十分消耗人力,并且质量不能保证

2

特征两两作Interaction 的情况下,模型预测复杂度是。在100维稠密特征的情况下,就会有组合出10000维的特征,复杂度高,增加特征困难

3

三个以上的特征进行Interaction 几乎是不可行的

2

中古时期

为了解决LR存在的上述问题,我们把模型升级为Facebook的GBDT+LR模型,模型结构如图所示。

GBDT是基于Boosting 思想的ensemble模型,由多颗决策树组成,具有以下优点:

1

对输入特征的分布没有要求

2

根据熵增益自动进行特征转换、特征组合、特征选择和离散化,得到高维的组合特征,省去了人工转换的过程,并且支持了多个特征的Interaction

3

预测复杂度与特征个数无关

假设特征个数n=160决策数个数k=50,树的深度d=6,两代模型的预测复杂度对比如下,升级之后模型复杂度降低到原来的2.72%

GBDT与LR的stacking模型相对于只用GBDT会有略微的提升,更大的好处是防止GBDT过拟合。升级为GBDT+LR后,线上效果提升了约5%,并且因为省去了对新特征进行人工转换的步骤,增加特征的迭代测试也更容易了。

3

近代历史

GBDT+LR排序模型中输入特征维度为几百维,都是稠密的通用特征。

这种特征的泛化能力良好,但是记忆能力比较差,所以需要增加高维的(百万维以上)内容特征来增强推荐的记忆能力,包括视频ID,标签,主题等特征。

GBDT是不支持高维稀疏特征的,如果将高维特征加到LR中,一方面需要人工组合高维特征,另一方面模型维度和计算复杂度会是O(N^2)级别的增长。所以设计了GBDT+FM的模型如图所示,采用Factorization Machines模型替换LR。

Factorization Machines(FM)模型如下所示,具有以下几个优点:

1

模型公式

2

前两项为一个线性模型,相当于LR模型的作用

3

第三项为一个二次交叉项,能够自动对特征进行交叉组合

4

通过增加隐向量,模型训练和预测的计算复杂度降为了O(N)

5

支持稀疏特征

这几个优点,使的GBDT+FM具有了良好的稀疏特征支持,FM使用GBDT的叶子结点和稀疏特征(内容特征)作为输入,模型结构示意图如下,GBDT+FM模型上线后相比GBDT+LR在各项指标的效果提升在4%~6%之间。

典型的FM模型中使用user id作为用户特征,这会导致模型维度迅速增大,并且只能覆盖部分热门用户,泛化能力比较差。在此我们使用用户的观看历史以及兴趣标签代替user id,降低了特征维度,并且因为用户兴趣是可以复用的,同时也提高了对应特征的泛化能力。

我们主要尝试使用了L-BFGS、SGD和FTRL(Follow-the-regularized-Leader)三种优化算法进行求解:

1

SGD和L-BFGS效果相差不大,L-BFGS的效果与参数初始化关系紧密

2

FTRL,较SGD有以下优势:

(1)带有L1正则,学习的特征更加稀疏

(2)使用累计的梯度,加速收敛

(3)根据特征在样本的出现频率确定该特征学习率,保证每个特征有充分的学习

FM模型中的特征出现的频次相差很大,FTRL能够保证每个特征都能得到充分的学习,更适合稀疏特征。线上测试表明,在稀疏特征下FTRL比SGD有4.5%的效果提升。

4

当代模型

GBDT+FM模型,对embedding等具有结构信息的深度特征利用不充分,而深度学习(Deep

Neural

Network)能够对嵌入式(embedding)特征和普通稠密特征进行学习,抽取出深层信息,提高模型的准确性,并已经成功应用到众多机器学习领域。因此我们将DNN引入到排序模型中,提高排序整体质量。

DNN+GBDT+FM的ensemble模型架构如图所示,FM层作为模型的最后一层,即融合层,其输入由三部分组成:DNN的最后一层隐藏层、GBDT的输出叶子节点、高维稀疏特征。DNN+GBDT+FM的ensemble模型架构介绍如下所示,该模型上线后相对于GBDT+FM有4%的效果提升。

1

DNN模型

(a)使用全连接网络,共三个隐藏层。

(b)隐藏节点数目分别为1024,512和256。

(c)预训练好的用户和视频的Embedding向量,包含基于用户行为以及基于语义内容的两种Embedding。

(d)DNN能从具有良好数学分布的特征中抽取深层信息,比如embedding特征,归一化后统计特征等等。

(e)虽然DNN并不要求特征必须归一化,不过测试发现有些特征因为outlier的波动范围过大,会导致DNN效果下降。

2

GBDT模型

(a)单独进行训练,输入包含归一化和未归一化的稠密特征。

(b)能处理未归一化的连续和离散特征。

(c)能根据熵增益自动对输入特征进行离散和组合。

3

FM融合层

(a)FM模型与DNN模型作为同一个网络同时训练。

(b)将DNN特征,GBDT输出和稀疏特征进行融合并交叉。

4

使用分布式的TensorFlow进行训练

5

使用基于TensorFlow Serving的微服务进行在线预测

DNN+GBDT+FM的ensemble模型使用的是Adam优化器。 Adam结合了The Adaptive Gradient Algorithm(AdaGrad)和Root Mean Square Propagation(RMSProp)算法。具有更优的收敛速率,每个变量有独自的下降步长,整体下降步长会根据当前梯度进行调节,能够适应带噪音的数据。实验测试了多种优化器,Adam的效果是最优的。

5

工业界DNN ranking现状

1

Youtube于2016年推出DNN排序算法。

2

上海交通大学和UCL于2016年推出Product-based Neural Network(PNN)网络进行用户点击预测。PNN相当于在DNN层做了特征交叉,我们的做法是把特征交叉交给FM去做,DNN专注于深层信息的提取。

3

Google于2016年推出Wide And Deep Model,这个也是我们当前模型的基础,在此基础上使用FM替换了Cross Feature LR,简化了计算复杂度,提高交叉的泛化能力。

2

阿里今年使用attention机制推出了Deep Interest Network(DIN)进行商品点击率预估,优化embedding向量的准确性,值得借鉴。

4

总结

推荐系统的排序是一个经典的机器学习场景,对于推荐结果影响也十分重大,除了对模型算法的精益求精之外,更需要对业务的特征,工程的架构,数据处理的细节和pipeline的流程进行仔细推敲和深入的优化。

Ranking引入DNN仅仅是个开始,后续还需要在模型架构,Embedding特征,多样性,冷启动和多目标学习中做更多的尝试,提供更准确,更人性化的推荐,优化用户体验。

产品学习之个性化推荐和热度算法详解

今日头条的走红带动了个性化推荐的概念,自此之后,内容型的产品,个性化算法就逐渐从卖点变为标配。

伴随着机器学习大数据之类的热词和概念,产品的档次瞬间提高了很多。而各种推荐算法绝不仅仅是研发自己的任务,作为产品经理,必须深入到算法内部,参与算法的设计,以及结合内容对算法不断调教,才能让产品的推荐算法不断完善,最终与自己的内容双剑合璧。

本文以新闻产品为例,结合了我之前产品从零积累用户的经验,整理了作为PM需要了解的基本算法知识和实操。

算法的发展阶段

个性化推荐不是产品首次发布时就能带的,无论是基于用户行为的个性化,还是基于内容相似度的个性化,都建立在大量的用户数和内容的基础上。产品发布之初,一般两边的数据都有残缺,因此个性化推荐也无法开展。

所以在产品发展的初期,推荐内容一般采用更加聚合的热度算法,顾名思义就是把热点的内容优先推荐给用户。虽然无法做到基于兴趣和习惯为每一个用户做到精准化的推荐,但能覆盖到大部分的内容需求,而且启动成本比个性化推荐算法低太多。

因此内容型产品,推荐在发布初期用热度算法实现冷启动,积累了一定量级以后,才能逐渐开展个性化推荐算法。

热度算法

1、热度算法基本原理

需要了解的是,热度算法也是需要不断优化去完善的,基本原理:

新闻热度分 = 初始热度分 用户交互产生的热度分 – 随时间衰减的热度分

Score = S0 + SUsers) – STime

新闻入库后,系统为之赋予一个初始热度值,该新闻就进入了推荐列表进行排序;随着新闻不断被用户点击阅读,收藏,分享等,这些用户行为被视作帮助新闻提升热度,系统需要为每一种新闻赋予热度值;同时,新闻是有较强时效性的内容,因此新闻发布之后,热度必须随着新闻变得陈旧而衰减。

新闻的热度就在这些算法的综合作用下不断变化,推荐列表的排序也就不断变化。

2、初始热度不应该一致

上面的算法为每一条入库的新闻赋予了同样的热度值,但在现实使用后发现行不通,例如娱乐类别比文化类别受欢迎程度本身就高很多;或者突发了严重的灾害或事故;或是奥运会期间,体育类别的关注度突然高了起来;而此时如果还是每条新闻给同样的热度就不能贴合实际了。

解决办法就是把初始热度设置为变量:

1)按照新闻类别给予新闻不同的初始热度,让用户关注度高的类别获得更高的初始热度分,从而获得更多的曝光。

例如:

2)对于重大事件的报道,如何让它入库时就有更高的热度,我们采用的是热词匹配的方式。

即对大型新闻站点的头条,Twitter热点,竞品的头条做监控和扒取,并将这批新闻的关键词维护到热词库并保持更新;每条新闻入库的时候,让新闻的关键词去匹配热词库,匹配度越高,就有越高的初始热度分。

这样处理后,重大事件发生时,Twitter和门户网站的争相报道会导致热词集中化,所有匹配到这些热词的新闻,即报道同样事件的新闻,会获得很高的初始热度分。

3、用户行为分规则不是固定不变的

解决了新闻入库的初始分之后,接下来是新闻热度分的变化。先要明确用户的的哪些行为会提高新闻的热度值,然后对这些行为赋予一定的得分规则。

例如对于单条新闻,用户可以点击阅读(click),收藏(favor),分享(share),评论(comment)这四种行为,我们为不同的行为赋予分数,就能得到新闻的实时用户行为分为:

SUsers) = 1*click + 5*favor + 10*comment + 20*share

这里对不同行为赋予的分数为1,5,10,20,但这个值不能是一成不变的;当用户规模小的时候,各项事件都小,此时需要提高每个事件的行为分来提升用户行为的影响力;当用户规模变大时,行为分也应该慢慢降低,因此做内容运营时,应该对行为分不断调整。

当然也有偷懒的办法,那就是把用户规模考虑进去,算固定用户数的行为分,即:

SUsers) 1*click + 5*favor + 10*comment + 20*share/ DAU * N(固定数)

这样就保证了在不同用户规模下,用户行为产生的行为分基本稳定。

4、热度随时间的衰减不是线性的

由于新闻的强时效性,已经发布的新闻的热度值必须随着时间流逝而衰减,并且趋势应该是衰减越来越快,直至趋近于零热度。换句话说,如果一条新闻要一直处于很靠前的位置,随着时间的推移它必须要有越来越多的用户来维持。


我们要求推荐给用户的新闻必须是24h以内,所以理论上讲,衰减算法必须保证在24h后新闻的热度一定会衰减到很低,如果是线性衰减,当某些新闻突然有大量用户阅读,获得很高的热度分时,可能会持续排名靠前很久,让用户觉得内容更新过慢。

参考牛顿冷却定律,时间衰减因子应该是一个类似于指数函数:

TTime) = e ^ k*T1 – T0))

其中T0是新闻发布时间,T1是当前时间。

而由于热度的发展最终是一个无限趋近于零热度的结果,最终的新闻的热度算法也调整为:

Score = ( S0Type) + SUsers)) / TTime

5、其他影响因素

很多新闻产品会给用户不在推荐此类的选项,这些功能不仅适用于个性化推荐,对热度算法也有一定的作用。

新闻的推送会造成大量的打开,在计算热度的时候需要排除掉相关的影响。类似于这样的因素,都会对热度算法产生影响,因此热度算法上线后,依然需要不断地调教

建议把所有的调整指标做成可配项,例如初始热度分,行为事件分,衰减因子等,从而让产品和运营能实时调整和验证效果,达到最佳状态。

基于内容的推荐算法

现在,你的内容产品顺利度过了早期阶段,拥有了几万甚至十几万级别的日活。这时候,你发现热度算法导致用户的阅读内容过于集中,而个性化和长尾化的内容却鲜有人看,看来是时候开展个性化推荐,让用户不仅能读到大家都喜欢的内容,也能读到只有自己感兴趣的内容。

个性化推荐一般有两种通用的解决方案,一是基于内容的相关推荐,二是基于用户的协同过滤。

由于基于用户的协同过滤对用户规模有较高要求,因此更多使用基于内容的相关推荐来切入。

这里引入一个概念叫新闻特征向量来标识新闻的属性,以及用来对比新闻之间的相似度。我们把新闻看作是所有关键词(标签)的合集,理论上,如果两个新闻的关键词越类似,那两个新闻是相关内容的可能性更高。

新闻特征向量是由新闻包含的所有关键词决定的。得到新闻特征向量的第一步,是要对新闻内容进行到关键词级别的拆分。

1、分词

分词需要有两个库,即正常的词库和停用词库。正常词库类似于一本词典,是把内容拆解为词语的标准;停用词库则是在分词过程中需要首先弃掉的内容。

停用词主要是没有实际含义的,例如“The”,“That”“are”之类的助词;表达两个词直接关系的,例如“behind”“under”之类的介词,以及很多常用的高频但没有偏向性的动词,例如“think”“give”之类。显而易见,这些词语对于分词没有任何作用,因此在分词前,先把这些内容剔除。

剩下对的内容则使用标准词库进行拆词,拆词方法包含正向匹配拆分,逆向匹配拆分,最少切分等常用算法,这里不做展开。

因为网络世界热词频出, 标准词库和停用词库也需要不断更新和维护,例如蓝瘦香菇套路满满之类的词语,可能对最终的效果会产生影响,如果不及时更新到词库里,算法就会一脸懵逼了。

因此,推荐在网上查找或购买那些能随时更新的词库,各种语种都有。

2、关键词指标

前面已经说过,新闻特征向量是该新闻的关键词合集,那关键词的重合度就是非常重要的衡量指标了。

那么问题来了,如果两条新闻的关键词重合度达到80%,是否说明两条新闻有80%的相关性呢?

其实不是,举个例子:

1)一条广州摩拜单车投放量激增的新闻,主要讲摩拜单车的投放情况,这篇新闻里摩拜单车是一个非常高频的词汇,新闻在结尾有一句最近广州天气不错,大家可以骑单车出去散心。因此广州天气这个关键词也被收录进了特征向量。

2)另外一条新闻广州回南天即将结束,天气持续好转,这篇新闻结尾有一句天气好转,大家可以骑个摩拜单车出门溜溜啦,新闻里面广州天气是非常高频的词汇,摩拜单车尽管被收录,但只出现了一次。

这两个新闻的关键词虽然类似,讲的却是完全不同的内容,相关性很弱。如果只是看关键词重合度,出现错误判断的可能性就很高;所以特征向量还需要有第二个关键词的指标,叫新闻内频率,称之为TFTerm Frequency),衡量每个关键词在新闻里面是否高频。

那么问题来了,如果两条新闻的关键词重合度高,新闻中关键词的频率也相差无几,是否说明相关性很强呢?

理论上是的,但又存在另外一种情况:如果我们新闻库里所有的新闻都是讲广州的,广州天气,广州交通,广州经济,广州体育等,他们都是讲广州相关的情况,关键词都包含广州,天河,越秀,海珠(广州各区)等,并且有着类似的频率,因此算法很容易将它们判断为强相关新闻。

从地域角度讲,这种相关性确实很强,但从内容类别层面,其实没有太多相关性,如果我是一个体育迷,你给我推荐天气,交通之类的内容,就没多大意义了。

因此引入第三个关键词的指标,即关键词在在所有文档中出现的频率的相反值,称之为IDFInverse Document Frequency)。

为什么会是相反值?因为一个关键词在某条新闻出现的频率最大,在所有文档中出现的频率越小,该关键词对这条新闻的特征标识作用越大。

这样每个关键词对新闻的作用就能被衡量出来即TFIDF=TF * IDF,这也就是著名的TF-IDF模型。

3、相关性算法

做完分词和关键词指标后,每一篇新闻的特征就能用关键词的集合来标识了:


其中word012……n是新闻的所有关键词,tfidf012……n则是每个关键词的tfidf值。

两个新闻的相似度就能通过重合的关键词的tfidf值来衡量了。根据之前所学的知识,几何中夹角余弦可以用来衡量两个向量的方向的差异性,因此在我们的算法中使用夹角余弦来计算新闻关键词的相似度。夹角越小,相似度越高。

有了关键词和各关键词的tfidf之后,就可以计算新闻的相似度了。假设两条新闻的特征列表如下:

可以看到两条新闻有5个重合的关键词:广州,摩拜单车,太阳,天河和市长,因此两条新闻的相关性由这5个关键词决定,计算方式如下:

得出两条新闻的相关性最终值;用同样的方法能得出一条新闻与新闻库里面所有内容的相关性。

4、用户特征

得到新闻特征以后,还需要得到用户特征才能对两者进行匹配和推荐,那怎么获得用户特征呢?

需要通过用户的行为来获得,用户通过阅读,点赞,评论,分享来表达自己对新闻内容的喜爱;跟热度排名类似,我们对用户的各种行为赋予一定的喜爱分,例如阅读1分,点赞2分,评论5分等,这样新闻特征跟用户行为结合后,就能得到用户的特征分。



而随着用户阅读的新闻数越来越多,该用户的标签也越来越多,并且越发精准。

从而当我们拿到新闻的特征后,就能与用户的关键词列表做匹配,得出新闻与用户阅读特征的匹配度,做出个性化推荐。

5、其他运用

除了个性化推荐,基于内容的相关性算法能精准地给出一篇新闻的相关推荐列表,对相关阅读的实现非常有意义。此外,标签系统对新闻分类的实现和提升准确性,也有重要的意义。

6、优缺点

基于内容的推荐算法有几个明显优点:

对用户数量没有要求,无论日活几千或是几百万,均可以采用;因此个性化推荐早期一般采用这种方式。

每个用户的特征都是由自己的行为来决定的,是独立存在的,不会有互相干扰,因此恶意刷阅读等新闻不会影响到推荐算法。

而最主要的缺点就是确定性太强了,所有推荐的内容都是由用户的阅读历史决定,所以没办法挖掘用户的潜在兴趣;也就是由于这一点,基于内容的推荐一般与其他推荐算法同时存在。

基于用户的协同推荐

终于,经过团队的努力,你的产品已经有了大量活跃用户了,这时候你开始不满足于现有的算法。虽然基于内容的推荐已经很精准了,但总是少了那么一点性感。因为你所有给用户的内容都是基于他们的阅读习惯推荐的,没能给用户不期而遇的感觉。

于是,你就开始做基于用户的协同过滤了。

基于用户的协同过滤推荐算法,简单来讲就是依据用户A的阅读喜好,为A找到与他兴趣最接近的群体,所谓人以群分,然后把这个群体里其他人喜欢的,但是A没有阅读过的内容推荐给A

举例我是一个足球迷,系统找到与我类似的用户都是足球的重度阅读者,但与此同时,这些足球群体中有一部分人有看NBA新闻的习惯,系统就可能会给我推荐NBA内容,很可能我也对NBA也感兴趣,这样我在后台的兴趣图谱就更完善了。

1、用户群体划分

做基于用户的协同过滤,首先就要做用户的划分,可以从三方面着手:

1)外部数据的借用

这里使用社交平台数据的居多,现在产品的登录体系一般都借用第三方社媒的登录体系,如国外的FacebookTwitter,国内的微信、微博,借用第三方账户的好处多多,例如降低门槛,方便传播等,还能对个性化推荐起到重要作用。

因为第三方账户都是授权获取部分用户信息的,往往包括性别,年龄,工作甚至社交关系等,这些信息对用户群划分很有意义。

此外还有其他的一些数据也能借用,例如IP地址,手机语种等。

使用这些数据,你很容易就能得到一个用户是北京的还是上海的,是大学生还是创业者,并依据这些属性做准确的大类划分。

比如一篇行业投资分析出来后,上海创业圈这个群体80%的用户都看过,那就可以推荐给剩下的20%

2)产品内主动询问

常见在产品首次启动的时候,弹框询问用户是男是女,职业等,这样能对内容推荐的冷启动提供一些帮助。但总体来说,性价比偏低,只能询问两三个问题并对用户的推荐内容做非常粗略的划分,同时要避免打扰到用户;这种做法算是基于用户个性化的雏形。

3)对比用户特征

前文已经提到过,新闻的特征加用户的阅读数据能得到用户的特征,那就可以通过用户特征的相似性来划分群体。

2、内容推荐实施

我们结合一个很小的实例来了解用户协同过滤的原理,包括如何计算用户之间的相似性和如何做出推荐。

假设有ABCDE5个用户,他们各自阅读了几篇新闻并做出了阅读,赞,收藏,评论,分享操作,我们对这几种行为赋予的分数分别为1分、2分、3分、4分和5分,这样用户对每条新闻都有自己的得分,其中“-”表示未阅读,得分如下:

接下来,我们需要给用户E推荐4,5,6中的哪一篇?

用户的阅读特征向量由用户所有的阅读数据决定,我们以用户E阅读过的新闻数据作为参考标准,来找到与E最相似的用户。


多维向量的距离需要通过欧几里得距离公式来计算,数值越小,向量距离约接近。

算出结果:

.distance(E,A)=4.123 (用户A没有阅读news2,因此news2的数据不能用来计算与用户E的相似度,这里取1,3

.distance(E,B)=3.162

.distance(E,C)=3.742

.distance(E,D)=1.414

因此得出结果:用户D是与用户E阅读喜好最接近的那个,应该优先归为同一类用户。最终结论根据用户D的阅读数据,优先推荐news4

3、内容选取

我们通过阅读特征向量把用户做群体划分后,接下来就是如何获取新闻推荐的优先级。

上面的例子里面只需要选出一个相似用户,并且用户A,B,C,D都只阅读news4,5,6中的一条,所以比较简单,但现实情况中,同一个用户群体阅读的新闻多且随机,用户交互更是错综复杂,如何得出推荐新闻的优先级呢?

假设用户X在系统归属于群体A,这个群体有n个用户,分别为A0A1A2……An,这些用户的集合用S(X,n)表示。

首先,我们需要把集合中所有用户交互过(阅读,评论等)的新闻提取出来

需要剔除掉用户X已经看过的新闻,这些就不用再推荐了,剩下的新闻集合有m条,用NX,m)来表示

对余下的新闻进行评分和相似度加权的计算,计算包括两部分,一是用户XSX,n) 每一个用户的相似性,二是每个用户对新闻集NX,m)中每条新闻的喜好,这样就能得到每条新闻相对于用户X的最终得分

NX,m)中的新闻列表按照得分高低的顺序推荐给用户

4、优缺点

相比于基于内容的推荐算法,基于用户的协同过滤同样优缺点明显。

优点主要在于对分词等算法的精确度无太大要求,推荐都是基于用户的行为数据去不断学习和完善;同时能发现用户的潜在阅读兴趣,能制造惊喜

而缺点则是启动的门槛高,用户量不够时几乎无法开展;并且学习量不够时推荐结果较差。

总结

关于个性化推荐的算法,在网上有很多资料,也有很多其他的实现方法,因为笔者了解也有限,所以也不敢描述。如有兴趣可以自行搜索。

热度和个性化推荐算法,作为大部分内容型产品的核心卖点之一,依然在不断地进化和完善中。没有哪种算法是完美的,甚至没有哪种算法是一定优于其他的,在实际使用中,很多产品都是多算法结合去做好内容推荐。

而产品经理在算法的实施中,绝对不是一句我们要做个性化推荐就完事的,必须深入算法内部,对算法的原理做深入了解,然后结合自己的产品特征来部署和优化。

因此我站在产品经理的角度,整理了这一篇初步的算法相关的介绍,如有对文中内容感兴趣的,欢迎探讨!如有描述不当之初,敬请指正,感激不尽!

最后,需要对我的团队表示感谢,飞哥在算法的研究中打了头阵并给出了细致的分享,宗荣对算法进行了无数轮的调整和优化,凯华在关键词的部署和效果验证中付出了很多心血……喜欢那些日子里大家一起从零开始学习和实现算法,让推荐效果越来越好。

 

 

来源:PMCAFF


以上是关于个性化推荐排序详解的主要内容,如果未能解决你的问题,请参考以下文章

阅读笔记联邦学习实战——联邦个性化推荐案例

贝叶斯个性化排序(BPR)算法小结

没登录网页也能个性化推荐?一文详解浏览器指纹

携程个性化推荐算法实践

分类模型与排序模型在推荐系统中的异同分析

2.2w字长文详解推荐系统之数据与特征工程,码起来慢慢看