机器学习在热门微博推荐中的应用

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

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

热门微博推荐系统介绍

热门微博业务场景

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

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

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

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

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


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

b29371748dd086e38acb47d028853077c50fe841

图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是指一条微博。下面介绍基于用户的协同过滤推荐和基于微博的协同过滤推荐两方面的实践。

74587a485662cd003d0d6d50bcad2aa8be92f4c7

表1 User-Item关系矩阵

大规模user-based协同推荐

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

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

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

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

7bfca6673f5aed1f5e4044c2853179b46bf4f8f0

表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。这个原理的实现就是计算任意两个微博的相关性。关键点时设计相关性公式。我们迭代了三个版本的相关性公式。

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

1bf431c3d09eb9fa0d72ae6bff70c59e2f56d340

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

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

9d3cd9637e078bd966ac7dfff47f0aa83c53bc91

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

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

928fed7a5c826c7a2b5b2c40ec4b28ef721ad5aa

假设Bi和Bj是描述的同一个内容,且RABi和RABj都略低于阈值,那么Bi和Bj是不能作为A的协同推荐微博的,这显然是不合理的。

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

4ba092b82825cdd4ee317df18464b6493e2c8077

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

热门微博的机器学习排序

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

大规模特征组合

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

2f2f1320279e3c00e1f93e6a2424d5b45d1f89c7

图2 排序模型的特征空间

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

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

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

多目标机器学习排序

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

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

03eb918ffb7bd379a06ad2155dd5b7e5e1a8949c

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

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

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

c2a8ab778c2ae5ec1f1aa7fa08330fbedf8377b0

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

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

  • 分片线性模型

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

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

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

分片线性模型:

fc2f46a2681bac4d74fe2b22048934478016c95d

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

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

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

cad1f3e20031f5f94db78dffbb4f505019475c51

其中π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应用于热门微博排序模型,进一步提升模型个性化。
原文发布时间为:2018-02-7
本文作者:侯雷平、苏传捷、朱红垒
本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“ 数据派THU ”微信公众号
相关文章
|
1月前
|
机器学习/深度学习 存储 算法
决策树和随机森林在机器学习中的应用
在机器学习领域,决策树(Decision Tree)和随机森林(Random Forest)是两种非常流行且强大的分类和回归算法。它们通过模拟人类决策过程,将复杂的数据集分割成易于理解和处理的子集,从而实现对新数据的准确预测。
69 10
|
11天前
|
机器学习/深度学习 数据采集 算法
深入了解机器学习:从入门到应用
【10月更文挑战第6天】深入了解机器学习:从入门到应用
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与机器学习在医疗诊断中的应用
【9月更文挑战第32天】随着科技的不断发展,人工智能和机器学习已经在许多领域得到了广泛应用。在医疗领域,它们正在改变着医生和患者的生活。通过分析大量的医疗数据,AI可以帮助医生更准确地诊断疾病,预测患者的病情发展,并提供个性化的治疗方案。本文将探讨人工智能和机器学习在医疗诊断中的具体应用,包括图像识别、自然语言处理和预测分析等方面。我们还将讨论AI技术面临的挑战和未来的发展趋势。
|
8天前
|
机器学习/深度学习 数据采集 数据挖掘
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
因果推断方法为特征工程提供了一个更深层次的框架,使我们能够区分真正的因果关系和简单的统计相关性。这种方法在需要理解干预效果的领域尤为重要,如经济学、医学和市场营销。
23 1
特征工程在营销组合建模中的应用:基于因果推断的机器学习方法优化渠道效应估计
|
12天前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
30 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
13天前
|
机器学习/深度学习 数据采集 自然语言处理
【机器学习】大模型驱动下的医疗诊断应用
摘要: 随着科技的不断发展,机器学习在医疗领域的应用日益广泛。特别是在大模型的驱动下,机器学习为医疗诊断带来了革命性的变化。本文详细探讨了机器学习在医疗诊断中的应用,包括疾病预测、图像识别、基因分析等方面,并结合实际案例进行分析。同时,还展示了部分相关的代码示例,以更好地理解其工作原理。
17 3
【机器学习】大模型驱动下的医疗诊断应用
|
6天前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
14 2
|
6天前
|
机器学习/深度学习 存储 算法
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
16 1
|
7天前
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
26 2
|
7天前
|
机器学习/深度学习 数据可视化 数据挖掘
机器学习中空间和时间自相关的分析:从理论基础到实践应用
空间和时间自相关是数据分析中的重要概念,揭示了现象在空间和时间维度上的相互依赖关系。本文探讨了这些概念的理论基础,并通过野火风险预测的实际案例,展示了如何利用随机森林模型捕捉时空依赖性,提高预测准确性。
15 0
机器学习中空间和时间自相关的分析:从理论基础到实践应用