推荐系统诞生的时间很早,但确实受到大家的重视。随着商家的繁荣,“选择”时代已经到来,信息和物品的丰富让用户无所适从,犹如茫茫宇宙中的一粒尘埃。推荐系统迎来爆发机会,更加贴近用户:快速更新的信息让用户需要借助群体的智慧来了解当下的热点。信息的极度膨胀带来了获取个性化信息的高成本,过滤和获取有用信息的效率低下。很多时候,很难明确表达用户的个性化需求,比如“今晚我需要在附近找一家性价比高、符合我口味的餐厅”。推荐系统的适用场景还有很多,就不一一列举了;它主要解决的问题是为用户找到合适的项目(连接和排序),并找到合理的理由来解释推荐结果。解决问题的方法是系统的价值,即建立协会,促进流动和传播,加速优胜劣汰。推荐算法是实现推荐系统目标的方法和手段。只有将算法与产品结合,并挂载在一个高效稳定的架构上,才能发挥出最大的效果。接下来说说微博推荐。微博本身的产品设计,即使没有推荐系统,也可以形成庞大的用户关系网,使信息快速传播;而衡量一个事物价值的一个简单方法就是比较看保留它和拿走它的区别。微博需要一个健康的用户关系网络来保证用户信息流的质量,要求高质量的信息快速流动,通过传播淘汰低质量的信息。微博推荐的作用就是加速这个过程,在一定情况下控制信息的流动,所以微博推荐的作用是加速器和控制器。最后,让我们回到微博推荐算法。上面说了这么多,只是为了让大家对微博推荐算法有一个更好的了解。我们的工作是把微博推荐的目标和要解决的问题抽样成一系列的数学问题,然后用各种数据工具来解决。接下来我们先用一张图来梳理一下我们使用的方法和技术,然后一一介绍。基础及关联算法层的主要功能是挖掘微博推荐所需的基础资源,解决推荐过程中的通用技术问题,完成必要的数据分析,为推荐业务提供指导。这部分常用的算法和技术如下:分词技术和核心词提取是微博内容推荐的基础,用于将微博内容转化为结构化向量,包括分词、词信息标注、内容核心词/entities词提取、语义依赖分析等。分类和反垃圾用于微博内容推荐候选分析,包括微博内容分类和营销广告/色情微博识别;内容分类采用决策树分类模型实现,共3级分类体系,148个类别;营销广告/色情微博的识别使用贝叶斯和最大熵的混合模型。聚类技术主要用于挖掘热点话题,为内容相关的推荐提供关联资源。WVT算法(词向量话题)是微博自主研发的一种聚类技术,是根据微博内容的特点和传播规律设计的。传播模型和用户影响力分析开展微博传播模型研究和用户网络影响力分析(包括深度影响力、广度影响力和领域影响力)。主要推荐算法1.基于图谱的推荐算法微博具有以下特点:用户贡献内容,通过社交渠道传播,带来信息的爆发式传播。之所以将其称为基于图的推荐算法而不是业界常见的基于内存的算法,主要是因为:我们的推荐算法设计是基于社交网络的。核心点是从社交网络入手,整合信息传播模型。综合利用各类数据,为用户提供最佳推荐结果;比如很多时候我们只是信息传播的一个关键环节,增加必要的推荐调节,改变信息传播路径,后续沿原网络传播。提要推荐(我们称之为趋势)是我们最重要的产品,结果必须包括用户关系。从Graph的宏观角度,我们的目标是建立更高价值的用户关系网络,促进优质信息的快速传播,提升feed流量质量;重要任务是关键节点挖掘、关键节点内容推荐、用户推荐。对这部分算法进行相应的梳理,如下表所示:这里的难点在于如何量化和选择图的“边”,基于多个“边”和“节点”的综合得分计算,和网络挖掘分析结果的合并。在这部分算法研发中,产生了以下数据附件产品:2.基于内容的推荐算法基于内容的推荐是微博推荐中最常用、最基础的推荐算法,其主要技术环节在于候选集的内容结构化分析和关联操作。文本页面相关推荐是基于内容的应用最广泛的地方。以此为例,简单说一下上面已经讲过的内容分析的很多要点。这里我会重点关注两个地方:内容质量分析,主要采用微博曝光收入+内容信息量/可读性的方法综合测算。微博曝光收入是根据用户群体行为来衡量内容的质量;内容信息的计算比较简单,就是微博关键词的idf信息迭代;对于内容可读性的衡量,我们做了一个小的分类模型,以可读性好的新闻语料和可读性差的口语语料作为训练样本,通过提取各种词的搭配信息,计算新微博可读性好的概率在他们中。词扩,内容基础的效果取决于内容分析的深度。微博的内容比较短,能够提取的关键信息也比较少。在做相关计算时,由于数据稀疏,很容易平衡推荐召回率和准确率;我们引入了word2vec技术来优化扩词效果,后面再利用基于词聚类的工作,实现了推荐召回率和准确率的同步提升。相关计算的技术要点在于矢量量化和测距。我们通常使用“tf*idf权重量化+余弦距离”或者“主题概率+KLD距离”两种方式。3、基于模型的推荐算法微博作为中国最大的社交媒体产品,拥有大量的用户和信息资源;这给推荐带来了两个挑战:sourcefusion和rankingcandidates极其丰富,这意味着我们有更多的选择,所以我们推荐结果的生成包括两个层:多个推荐算法的初选和sourcefusion排序的选择.为了获得更客观准确的排序结果,我们需要引入机器学习模型,学习隐藏用户群体行为背后的规律。内容动态分类和语义相关的微博UGC内容生产模式,以及信息传播和更新速度快的特点,意味着以往人工标注样本和训练静态分类模型的方法已经落伍。我们需要一个好的聚类模型,将最近的全量信息聚合成类,然后建立语义关联,完成推荐。基于模型的算法就是为了解决上述问题。下面是我们最重要的两个机器学习任务:3.1CTR/RPM(perthousandrecommendedrelationshipachievementrate)预测模型,使用的基本算法是Logistic回归,下面是我们CTR预测模型的整体架构图:这部分工作包括样本选择、数据清洗、特征提取与选择、模型训练、在线预测与排序。值得一提的是,模型训练前的数据清洗和去噪非常重要。数据质量是算法效果的上界,我们之前在这方面吃过亏。逻辑回归是一种二分类概率模型。优化的目标是最大化“样本正确分类概率的乘积值”;我们使用yahoo开发的vowpal_wabbit机器学习平台来完成模型特征值求解的优化过程。3.2LFM(LatentFactorModel):LDA,矩阵分解(SVD++,SVDFeature)LDA是2014年初的重点项目,现在已经有了不错的输出,在推荐的线上产品中也得到了应用;LDA本身就是一个非常漂亮和严谨的数学模型。下面是我们LDA题目的例子,仅供参考。至于矩阵分解,我在2013年做了相应的尝试,但是效果不是特别理想,所以没有继续投入。潜在语义模型是推荐准确率最高的单一模型。难点在于当数据规模很大时,计算效率会成为瓶颈。我们在这方面进行了一些工作,以后会有同学介绍这部分内容。混合技术三个cobbler是最好的,每个方法都有其局限性。取长补短是一种极其有效的方法。微博推荐算法主要采用以下混合技术:时间序列混合:即在推荐过程的不同时间段采用不同的推荐算法;以文字页相关推荐为例,在文字页曝光初期,基于内容+ctr预估的方法产生推荐结果。在产生足够多的可信用户点击行为后,采用基于用户的协同过滤方法得到推荐结果,如下图:这个很好的解决了使用基于内容的冷启动问题解决,充分发挥基于用户的CF的作用,达到1+1>2的效果。分层模型混合:在很多情况下,一个模型并不能很好的得到想要的效果,而分层组合往往会达到更好的效果。层级模型混合是指“将上一个模型的输出作为下一个模型的输出特征值,综合训练模型,完成推荐任务。”例如,我们在对微博首页右侧的CTR预估进行排序时,采用层次逻辑回归模型来解决不同产品之间自然缺乏特征、样本量不同、曝光带来的效果偏差等问题位置。瀑布混合:这种混合技术的思路很简单,就是在推荐候选非常丰富的情况下,通过逐层过滤得到推荐结果,运算速度快,判别率低的算法通常放在前面完成大量的考生。集的筛选;将运算慢、判别力高的算法抛到脑后,对剩余的小规模集进行精细计算。这种混合在微博推荐中被广泛使用。我们使用各种轻量级算法完成候选集的粗选,然后使用ctr估计进行细化排序。交叉混合:各种推荐算法中子技术可以在其他推荐算法中综合使用。例如,在基于内容的相关性计算中积累的距离计算方法可以很好地应用于协同过滤的量化计算。作为一个实际例子,我们成功地将研究LDA过程中积累的向量计算方法应用到用户推荐中。微博线上线下数据的特点(海量、多样、静态和动态数据混合)决定了大部分推荐商品的结果需要借助线上线下的计算来完成。从系统和算法设计的角度来看,这是一个“重”和“轻”的问题。计算分解与组合是关键。我们需要把对时间不敏感的重计算放在离线端,把对时间敏感的放在离线端。轻量级快速计算放在在线端。几种常用的方法如下图所示:Online需要简单可靠的算法才能快速得到结果;简单解释一下上图,下面的半成品有以下3种形式1)拆解计算过程的离线部分,比如基于用户的CF读取在线数据库中的用户相似度,在线计算完成基于用户的推荐。2)离线挖掘的优质候选集,如与文本页面推荐相关的内容候选集,通过索引在线获取数据后,通过相关性和ctr估计排序生成推荐结果。3)相似度高的推荐结果集,如线下计算与粉丝相似度高的用户,在线实时反馈用户行为,实时补充推荐与刚关注的用户相似的用户。静态推荐结果是指那些与时间相关性不大的推荐项目。例如,我们用户推荐的结果95%来自离线计算。机器学习模型是计算过程的顺序拆解;离线完成模型的训练,在线调用模型完成物品分类。当然,模型的实时更新也可以通过在线学习或实时特征值来完成。同时,模型在线计算时,需要注意缺失特征值的补全,保证线下和线上环境的一致性。此外,我们还有直接在线计算的推荐结果,比如首页右侧的主题推荐。由于用户对话题的需求很小,基本是排行榜的需求,但是热门微博也可以有精巧的设计,我们采用了曝光动态收益模型,通过(clickincome-exposurecost),取得了很好的效果。点击率和导流量增长了3倍以上。不同类型的推荐结果需要补充不同的推荐理由。这需要多次前端展示尝试和离线日志分析。效果评估算法的衡量方式决定了大家努力的方向。对于不同类型的推荐,最好根据产品的定位和目标,采用不同的标准体系来衡量工作成果。实际效果的评价分为用户满意度、产品级指标(如ctr)、算法级指标三个层次。我们的效果评估也会分为人工评估、线上A/B测试、线下算法效果评估。.产品指标的制定应从产品的预期目标出发,反映用户满意度。对于算法的离线评估,关键是要找到一套合理的算法评估指标来契合产品层指标,因为算法的离线评估总是在上线之前进行。这种对应关系越好,算法的优化结果就越好。转换为在线产品指标。下图是我们算法离线效果评估的架构图。常用的离线评价指标包括:RMSE、召回率、AUC、用户内多样性、用户间多样性、新颖性等。针对不同的产品,有不同的组合指标来衡量。例如,“用户之间的多样性”在用户推荐中非常重要,但热门话题可以让用户之间有很大程度的重叠。
