[原]机器学习在热门微博推荐系统的应用

标签: | 发表时间:2018-01-25 14:41 | 作者:qq_40027052
出处:http://blog.csdn.net/qq_40027052

近年来,机器学习在搜索、广告、推荐等领域取得了非常突出的成果,成为最引人注目的技术热点之一。微博也在机器学习方面做了广泛的探索,其中在推荐领域,将机器学习技术应用于微博最主要的产品之一——热门微博,并取得了显著的效果提升。

热门微博推荐系统介绍

热门微博业务场景

热门微博是基于微博原生内容的个性化兴趣阅读产品。提供最新最热优质内容阅读服务,更好地保障用户阅读效率和质量,同时达到激励微博上内容作者更好的创作和推广内容。

热门微博的推荐系统主要面临以下两点挑战。

  • 大规模:需要处理微博上的海量用户和海量内容;
  • 时效性:微博内容的生产周期短,变化较快。

热门微博推荐系统算法流程

我们定制了一套完善的推荐系统框架,包括基于机器学习的多路召回与排序策略,以及从海量大数据的离线计算到高并发在线服务的推荐引擎。推荐系统主要分为三层,基础层、推荐(召回)和排序三个部分,推荐(召回)主要负责生成推荐的候选集,排序负责将多个算法策略的结果进行个性化排序。

整体的推荐技术框架如图1。

图片描述

图1 热门微博推荐技术框架

基础层:分为内容建模和用户建模两部分。内容建模主要是微博内容的语义识别,包括主题模型、实体词识别、文本分类和图片分类。用户建模对用户建立完整的画像,包括用户自然属性(性别/年龄)、用户兴趣、用户聚类和用户之间的关系(亲密度等)。

推荐层:我们通过用户行为、微博内容等进行实时判断,通过多个召回算法获取不同候选集。再对召回的候选集进行融合。具体的召回算法如下:

  • User-based协同推荐:找出与当前User X最相似的N个User,并根据N个User对某Item的打分估计X对该Item的打分。
  • Item-based协同推荐:我们计算不同mid的共现概率,取出满足一定阈值且排在top的mid作为协同mid的候选。
  • Content-based推荐:通过自然语言处理、图像识别等算法,对微博文本、图片、视频等内容打标签;通过用户行为和微博内容标签,挖掘用户的兴趣标签。基于内容标签和兴趣标签的匹配,提供基于内容的推荐候选。

排序层:每类召回策略都会召回一定的候选微博,这些候选微博去重后需要统一做排序。排序使用的模型包括逻辑回归、GBDT/FM、DNN等。排序框架大致可以分为三部分:

  • 特征工程:特征的预处理、离散化、归一化、特征组合等,生成训练模型需要的样本数据。
  • 模型工具:基于样本数据,使用不同的模型做训练、评估,生成模型训练结果。
  • 排序引擎:在线模型LOAD,提取出相对应的特征并且做特征映射,并利用机器学习排序算法,对多策略召回的推荐候选进行融合和打分重排。

热门微博的机器学习推荐

协同过滤推荐是目前业界常用的推荐算法之一。协同过滤推荐是利用users和items的关系矩阵来对user和item进行建模,从而进行推荐的一类算法。其主要分为两种:基于user的协同过滤推荐和基于item的协同过滤推荐。在热门微博业务场景下,一个item是指一条微博。下面介绍基于用户的协同过滤推荐和基于微博的协同过滤推荐两方面的实践。

图片描述

表1 User-Item关系矩阵

大规模user-based协同推荐

基于用户的系统过滤推荐的基本原理是:某用户的相似用户群喜欢什么,就给该用户推荐什么。

实践中,基于用户的系统过滤推荐过程就是以下步骤:

  • 为当前用户找到他的相似用户群;
  • 获取该用户群在历史一段时间内喜好的若干微博作为候选;
  • 计算该用户群对各个候选微博的喜好程度;
  • 将喜好程度最高的N条微博推荐给当前用户。

上述步骤中,最关键的是a。用户的相似度刻画,直接影响推荐的准确度;用户的相似用户群的规模,直接影响推荐的个性化程度。相似用户群的方案有很多,常见的有聚类、K近邻。它们的优劣对比如下。

图片描述

表2 聚类、K近邻方案对比

最终,根据我们的业务场景,选择了聚类方案。鉴于业务的特性,我们还要对聚类结果有额外的要求:每个类别内包含的优质用户数量要尽量相近。我们的解决方案是只用优质用户做训练同时保证聚类均匀,全部用户做预测。所以接下来要解决的问题是选择聚类算法、用户的向量表征、控制聚类均匀。

尽管聚类算法有很多,但它们依然基本上都还是在K-Means算法的框架下,因此我们直接选用K-Means算法。关于用数学向量表示用户。值得注意的是,当解决实际聚类问题时,一般情况下,问题对象的向量表征比聚类算法本身对最终效果影响更大。

首先,我们考虑直接用关系矩阵的行向量作为用户的向量表示。在微博推荐的场景下,item的数量是快速增长的,因此只能使用历史上一段时间内的用户-微博关系矩阵。同时,矩阵是集群稀疏的,当我们用较短历史数据训练聚类时,效果表现不好。所以,我们尽可能拉长历史来保证用户向量中包含充足的信息,然而,K-Means对高维数据的训练效率极低。我们尽量平衡训练效率和聚类效果,但效果很差,各个类别规模极其不均匀,不能满足需求。

所以,我们考虑了三个降维方案:LDA、Word2Vec、Doc2Vec。

  • LDA:虽然LDA训练出来的主题分布可以作为特征向量,但是LDA本身不强调向量间距离的概念,可与后面K-Means算法的训练过程不相匹配,所以效果不佳,淘汰。
  • Word2Vec:强调向量间的距离,适合K-means。但是当使用Word2Vec时我们要微博ID当成句子ID,微博的阅读者序列作为句子内容,用户ID作为词。按照微博的特性,这么处理的话,语料里“句子”长度的分布会非常不均匀。所以最终也没有选用。
  • Doc2Vec:强调向量间的距离,适合K-means。把用户ID当成句子ID、用户的阅读序列作为句子内容,微博ID作为词进行训练时,语料里“句子”长度的分布会均匀很多,效果较好。

所以最终选择了Doc2Vec对用户向量进行降维。然后使用低维向量进行聚类,结果明显改善,类别规模变得很均匀,符合我们的需求。

在线部分,在线部分只需要记录几小时内每个聚类下的用户群体对各个微博的行为,经过简单的加权计算、排序、取Top。当为某用户推荐时,只需查到相应的聚类ID对应的推荐列表。在线计算开销极小。

大规模item-based协同推荐

基于微博的协同过滤推荐的基本原理是:如果看了微博A的用户很大比例都去看了微博B,那么应该给只看了微博A的用户推荐微博B。这个原理的实现就是计算任意两个微博的相关性。关键点时设计相关性公式。我们迭代了三个版本的相关性公式。

第一版,我们将相关性抽象为:

图片描述

具体实现是按上述公式计算两两微博的相关性后,为每个微博按预设阈值节选可推荐相关微博。这个可以推荐相关微博列表,用于即时推荐模块。当用户点击某条微博后,在下次刷新时候会推荐该条微博的相关微博。由于微博内容实效性比较强,这种推荐方式可以捕捉用户很及时的阅读需求,所以推荐的准确率很高。然而,上述方法的召回率比较低。

第二版重点提升召回率。通过分析发现,召回率低的原因是用户-微博矩阵特别稀疏,两条微博在一个用户浏览时的共现次数特别少。所以设计了新的公式:

图片描述

在公式中我们加入了变量expo(B),表示B在用户的页面里曝光了。按新公式实现后,召回大幅度提升。

第三版,我们试图解决关系矩阵稀疏的问题。在微博场景中,很多微博是相似的,但是它们拥有不同的微博ID。这会天然地造成矩阵稀疏,从而相关性计算不准确。举个例子:

图片描述

假设B i和B j是描述的同一个内容,且R ABi和R ABj都略低于阈值,那么B i和B j是不能作为A的协同推荐微博的,这显然是不合理的。

为了解决这个问题,我们改进了算法。首先将相似微博B i和B j聚合成B,然后计算相关性。流程如下:

图片描述

改进后,覆盖率有得到了进一步的提升。

热门微博的机器学习排序

机器学习排序是搜索、广告、推荐等业务场景的核心算法,对业务效果有着极大的影响。通常的做法,是基于曝光日志、点击日志等采集各种特征,建模用户点击率。在热门微博业务中,以下是我们在排序算法方面的一些有效的实践。

大规模特征组合

影响机器学习排序效果的一个核心因素就是特征。特别是当使用线性模型时(如逻辑回归),对模型效果影响较大的,是特征组合,也就是特征的表达能力。

图片描述

图2 排序模型的特征空间

如图2所示,排序模型可被认为是建立在物料、用户、环境的三维特征空间。每个维度上,从零点向外的方向代表从具体到泛化。例如,物料轴从零点开始,分别为物料按mid(微博id)、细粒度标签、粗粒度标签、作者、形式划分等。

根据热门微博中的实践,总结出了特征组合的一些设计经验和原则:

  • 越逼近零点的特征越有效,但是要考虑稀疏性。
  • 跨轴的特征组合,会产出更加个性化的特征,特别是用户和物料的组合。

多目标机器学习排序

通常的ctr预估排序,只以点击率为目标。而热门微博业务会有多个目标,所以需要考虑多目标的排序。实践表明,多个目标之间往往没有很强的正相关关系。因此,如何在排序模型中兼顾多个目标,使得每个目标都有增长,就非常重要。在热门微博的机器学习排序中,我们实验了两种方法:

  • 每个目标各自使用一个模型,做模型融合。例如热门微博需要考虑转发、评论和赞,分别训练预估转发率模型、预估评论率、预估赞率的模型,以这三个模型的预测结果,做加权后,做为排序分数。

图片描述

图3 多目标机器学习模型的融合

模型融合后,以提升所有正向行为的概率为总目标,给各个模型分配以不同的权重。该方法的优点在于,分别建模不同的目标,以快速的多组实验来调整权重,以找到权重参数的更优解。缺点在于需要同时训练多个模型,开发成本高。

  • 所有目标使用一个模型,在标注正样本时,考虑多个目标。例如对于转发和赞,在标注正样本时,给予不同的权重,使它们综合体现在模型目标中。如表3,每行为一条训练样本,根据业务需要,把转发、评论、赞的权重分别设置为1、2、5。

图片描述

表3 通过样本标注不同权重,一个模型兼顾多个目标

该方法通过对不同正向行为给予不同权重,将多目标问题转化为单目标问题。它的优点在于,一个模型同时兼顾了多个目标,使不同目标的权重体现在损失函数中,参与模型优化求解,便于平衡多个目标的效果。

  • 分片线性模型

互联网行业的机器学习算法,广泛使用了线性模型。线性模型的缺点,在于无法充分利用数据中的非线性规律。

热门微博下,不同用户的点击率以及行为偏好是有差异的,不同物料领域下的点击率也是有差异的,因此我们考虑使用基于用户、基于领域的先验知识,构造分片的线性模型。

另外,热门微博的分片线性模型结合了多目标的优化。根据不同人群的行为偏好,在分片时设置不同的多目标权重。

分片线性模型:

图片描述

其中π i为分片的作用范围,对应分片内为1,其他为0。

在热门微博业务中,分片为不同的人群(80 / 90后、男 / 女)。

分片的多目标模型(以指数加权为例):

图片描述

其中π i为分片的作用范围,ω ij为i个分片内第j个目
标模型的参数,δ ij为第i个分片内第j个目标模型的指数权重。

机器学习效果评估

对于协同过滤推荐,我们设计了一个量度m,来模拟估计上线后实际效果。假设有N+1天的历史行为日志。首先,用1-N天的用户-微博矩阵,为每一个用户计算出第N+1天协同推荐的候选微博集合C。然后将第N+1天的真实曝光微博集合E与C做交集,得到集合Ec;将第N+1天的真实点击微博集合A与C做交集,得到集合Ac。最后计算Ac/Ec作为量度。

对于排序算法,采用了离线AUC评估和线上的ABTest评估。

机器学习应用于热门微博推荐系统后,业务指标和用户体验都得到了显著提高。

总结和展望

我们将机器学习相关技术应用于热门微博业务,并结合业务特色对算法做了进一步的拓展。

推荐算法方面,基于用户的协同过滤推荐我们使用user embedding+Kmeans方案来平衡算法效果、离线计算规模和线上响应速度。基于微博的协同过滤推荐我们升级了两次相关度计算公式,来解决行为稀疏和重复内容的导致的数据稀疏的问题。

排序算法方面,大规模特征组合在特征工程实践中总结的一些规律和原则,多目标机器学习排序是为了兼顾多个业务目标而做的尝试和探索,分片线性模型是结合热门微博业务知识完善线性模型的结构和效果。

未来推荐和排序算法仍有很大的提升空间,在以下两方面:

  • 深度学习和embedding应用于热门微博推荐;
  • 海量uid应用于热门微博排序模型,进一步提升模型个性化。

作者简介:
侯雷平,微博资深算法工程师,主要负责机器学习算法在热门微博个性化排序、个性化推荐等业务中的应用。毕业于南开大学,熟悉推荐系统、广告系统。研究方向是机器学习排序、自然语言处理、个性化推荐等。
苏传捷,微博算法工程师,AI lab项目成员。主要研究方向是推荐系统、自然语言处理。曾负责文本分类、实体识别、用户建模以及特征工程。目前专注于深度学习与增强学习在推荐系统的应用和创新。
朱红垒,微博兴趣流研发技术负责人,算法总监。毕业于哈尔滨工业大学,目前负责热门微博、同城、访客等微博兴趣流业务的技术研发工作。主要技术方向为机器学习、推荐系统、自然语言处理、大数据等。


图片描述

作者:qq_40027052 发表于2018/1/25 14:41:49 原文链接
阅读:441 评论:0 查看评论

相关 [机器学习 微博 推荐系统] 推荐:

[原]机器学习在热门微博推荐系统的应用

- - CSDN人工智能
近年来,机器学习在搜索、广告、推荐等领域取得了非常突出的成果,成为最引人注目的技术热点之一. 微博也在机器学习方面做了广泛的探索,其中在推荐领域,将机器学习技术应用于微博最主要的产品之一——热门微博,并取得了显著的效果提升. 热门微博是基于微博原生内容的个性化兴趣阅读产品. 提供最新最热优质内容阅读服务,更好地保障用户阅读效率和质量,同时达到激励微博上内容作者更好的创作和推广内容.

5-机器学习启蒙- 商品推荐系统1

- - 神刀安全网
有大量的商品和用户,想要推荐一部分商品给用户. 怎么通过机器学习结合你和别人的历史购物记录做出适合你的推荐. 亚马逊重点关注商品推荐,另一个推荐系统流行的例子是2006-2009. 年主办的比赛,100万美金奖励推荐电影系统. 我们在哪里能见到推荐系统. 来看一些推荐系统起到重要作用的领域. 个性化正在改变我们关于世界的经验.

大数据/数据挖掘/推荐系统/机器学习相关资源

- - 互联网分析沙龙
Share my personal resources,本文贡献者为Zhe Yu. 各种书~各种ppt~更新中~ http://pan.baidu.com/s/1EaLnZ. 机器学习经典书籍小结 http://www.cnblogs.com/snake-hand/archive/2013/06/10/3131145.html.

LibRec 2.0.0 正式版发布: 基于机器学习的大数据推荐系统

- - 开源中国社区最新新闻
LibRec: 基于机器学习的大数据推荐系统. LibRec 是领先的推荐系统Java开源算法工具库,覆盖了70余个各类型推荐算法,有效解决评分预测和物品推荐两大关键的推荐问题. 推荐系统是机器学习和大数据技术的经典实际应用,旨在提供高效准确的个性化物品推荐,是现代Web应用的重要组件. 项目结构清晰,代码风格良好,测试充分,注释与手册完善.

Min-Hash和推荐系统

- - xlvector - Recommender System
前几年看Google News Recommendation的那篇Paper,对里面提到的MinHash的算法基本没有注意,因为之前的习惯都是只注意论文的模型那块,至于怎么优化模型一般都只是扫一眼. 不过最近看了大量的Google Paper,发现Google在实现一个算法方面确实有很多独到之处. 其实,Min-Hash是LSH(Locality Sensitive Hash)的一种,我之前对LSH的了解仅仅限于知道它能把两个相似的东西Hash成两个汉明距离接近的2进制数.

推荐系统实战

- - 博客园_首页
推荐算法:基于特征的推荐算法. 推荐算法准确度度量公式:. 其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合. 集合相似度度量公式(N维向量的距离度量公式):. 其中,N(u)表示用户u有过正反馈的物品集合. 其中,S(u,k)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣.

推荐系统杂谈

- - 后端技术杂谈 | 飒然Hang
推荐系统是近些年非常火的技术,不管是电商类软件还是新闻类app,都号称有精准的推荐系统能给你推送你最感兴趣的内容. 现象级的资讯类app“今日头条”就得益于此成为了势头非常猛的一款产品. 本文就针对推荐系统讲述一些相关概念和实践经验. 首先需要明确的就是推荐系统的目标,一般来说不外乎以下几个:. 用户满意性:首当其冲的,推荐系统主要就是为了满足用户的需求,因此准确率是评判一个推荐系统好坏的最关键指标.

机器学习五步走

- - 我爱机器学习
经常会有人问“我该如何在机器学习方面更进一步,我不知道我接下来要学什么了. 一般我都会给出继续钻研教科书的答案. 每当这时候我都会收到一种大惑不解的表情. 但是进步确实就是持续的练习,保持较强的求知欲,并尽你可能的完成具有挑战性的工作. 因为他是为数不多的几种可以让你真真让你获取坚实知识的媒介. 是的,你可以选择选一门课,注册MOOC,参加一些讨论班.

机器学习之路

- - 我爱机器学习
自从答应简二毛博士将自己的机器学习历程和心得分享给大家至今,转眼间半年已经过去了,感谢简博士分享和开源精神的鼓舞,这也正是本系列关于机器学习介绍博客的动力来源. 之前有些网友,师弟们问我,学习机器学习怎么入手,从看什么书开始. 如果你只愿意看一本书,那么推荐Bishop的PRML,全名Pattern Recognition and Machine Learning. 这本书是机器学习的圣经之作,尤其对于贝叶斯方法,介绍非常完善.

机器学习算法Boosting

- - 标点符
机器学习通常会被分为2大类:监督学习和非监督学习. 在监督学习中,训练数据由输入和期望的输出组成,然后对非训练数据进行预测输出,也就是找出输入x与输出y之间的函数关系F:y = F(x). 根据输出的精确特性又可以分为分类和回归. 分类和回归的区别在于输出变量的类型. 定量输出称为回归,或者说是连续变量预测.