Yang Cheng

行万里路,读万卷书

机器学习在个性化推荐中的应用

| Tags: Machine Learning, Recommender Systerm

摘要: 以两个典型案例说明机器学习作为生产力, 如何适应需求, 推动业务发展

引子

  • 受众: 技术杂志的读者,受过计算机教育但是领域比较泛。要求有简单的数学基础和机器学习的背景知识。
  • 主题:不讲机器学习算法是什么,讲学习算法如何和应用场景结合的问题
  • 逻辑: 发现问题-分析问题-解决问题

正篇

双11对消费者来说是一场空前的购物狂欢,对技术人员来说更像一场盛大的技术嘉年华。

2013年以前,天猫的推荐一直采用传统的协同过滤的启发式公式方法,特别是item based 方法,item based 算法在描述商品与商品相似度方面是非常优秀的,但是当我们遇到如下两个问题时,便捉襟见肘了:1) 当商品之间的关系可以由多个维度来描述,比如用户行为和文本相似性,如何来融合这些维度算法的权重?2) 当需要基于用户的实时数据(通常有数十个维度),预测用户的偏好,如何确定这些特征的权重?

今年,我们大量的采用了机器学习算法提升用户体验,有效的改善了当前的业务现状, 同时利用大数据的优势,产生了新的生产力。

在典型的业务场景中,机器学习主要用于购物链路的导购:

  • 交易前类目品牌购买预测
  • 交易中相似和搭配购买推荐
  • 交易后回路引流

在双11场景中,机器学习在预热期、活动中、活动结束后3个时间段发挥不同的作用。

  • 在预热期主要用于引导用户关注品牌定制双11;引导将商品加入购物车和收藏夹加快购物效率;同时搜集用户购买意向,预测用户在类目和品牌的购买倾向。
  • 在活动中对用户进行个性化引导,一方面利用历史数据,算法学习出用户的偏好和意图,使得一进入天猫页面给与最直接的个性化冲击。比如在首页的个性化品牌,我的双11页面的品牌活动,无线会场的个性化等等。 另一方面,发挥集体智慧优势挖掘商品、品牌或者类目之间的关联关系,帮助用户寻找更合适的相似替换商品、提供更加合理的购买搭配。比如:在下架页的相似推荐,加入购物车后的搭配推荐。
  • 活动结束后,调整算法模型,平衡日常模型和活动模型的效果。即要剔除异常数据使得日常推荐体验不下降, 又要起到清尾货保证活动部分延续性的作用。

可以看到机器学习应用的业务场景繁多, 业务目标不一样,算法的设计也会千差万别, 因此,下面的内容不会涉及到全部的应用场景,而是通过两个基本的机器学习案例来讨论天猫是如何根据业务场景来设计机器学习算法的。 以下的文章结构安排如下:先讨论用户的偏好预测和在线点击率预估两个案例,然后综合两个案例介绍天猫如何应对大规模的机器学习的挑战。

机器学习是如何工作的

如何在复杂的场景中抓住算法设计的核心,是机器学习应用的主要挑战。 在应用层面上,业务目标决定算法形态。 比如当业务强调浏览深度的时候,算法上目标上就需要偏向与高质量的集合形式候选的推荐, 定义多维度的质量或者抽取提炼体现质量维度的特征等; 如果业务强调召回降低基尼系数,算法上要控制流量,在准确率和召回率之间找到业务平衡点,融入尾部优势的特征,调整正负样本比率和样本的权重等。

尽管业务变幻莫测, 我们还是能抽丝剥茧, 找到机器学习算法上的是抽象一致的本质。 天猫推荐在机器学习实践中使用的主要技术是:

  • 分类/回归模型
  • 自动化参数
  • 多模型融合
  • 海量数据和分布式

以例为证:

用户的偏好预测

电商领域的偏好一般是指用户长期积累起来的购物行为惯性。所以在预测偏好时,通常会选用大粒度,更抽象的维度去预测, 我们会在离线预测用户品牌和类目的购买偏好。类目偏好和品牌偏好类似,所以这里只以品牌偏好为例子。

  • 问题1:给定用户U和品牌列表L,从中选择N个品牌作为列表候选。
  • 问题2:给定用户U和品牌列表L,预测当天用户U对品牌B的产生行为的可能性。通常行为指的是点击、购买、收藏等

如果假设用户对品牌的感知是独立的,那么问题1可以简化成TOPN的问题,问题2的TOPN解可以作为问题1的答案。 我们通过构造分类模型来预测用户对品牌的偏好程度,求解问题。

  • 数据。数据的真实性和充分性决定了算法的效果, 如何挑选数据是机器学习算法最重要的第一步。 在Netflix影视推荐中,可以用用户电影评分做预测。 在天猫业务中这种常用的显式表达的数据是缺失的, 我们只能利用隐式的用户行为推测偏好。一种方法是以用户对品牌产生行为的类型、次数和时间衰变映射到得分,然后再转化成评分预测问题。 另一种是直接预估行为(如:点击)的可能性,直接预测法在此场景中效果更好。

  • 模型。模型是算法的计算核心。对某个样例,如果X表示<用户,品牌>对,Y表示用户是否点击品牌。我们的基础模型是通过逻辑回归预测 用户对品牌的点击可能性,逻辑回归的基本假设是:

其中w是的模型的参数,它的解是:

实际过程中我们转化成标准型,加入L1,L2正则化之后求解。 考虑到逻辑回归归根结底是广义的线性模型,而实际的数据分布是非常复杂的非线性关系。我们采用了一些非线性的方法, 比如对特征非线性离散化,条件组合, 有限核变换等等,这些方法需要对数据有正确的认识才能取得好的效果。 同时也会采用非线性模型的方法,在阿里集团中混合逻辑回归是最常见的方法,该方法是Mixture of expert的一种简单变种, 这方面的资料非常丰富,这里就不再展开。

  • 特征。在特征层面,按用途上分成两种,一种是warm-start特征,解决数据充分时候准确的问题。主要是品牌id,用户id。 另一种cold-start特征,解决用户数据缺失、品牌数据缺失的问题。这些特征通常是集合性特征,比如品牌的主题内容,类目, 用户等级等等。 从从属上看,特征分析全局特征,用户特征,品牌特征,用户品牌关联特征, 其中用户品牌关联特征起关键的作用。有一些特征是专门设计过的,比如正对用户等级比较高,购买能力比较强的用户会和品牌的档次结合组合成特征;对冲着折扣找便宜的用户,折扣力度和热门程度一起也会形成组合特征;考虑业务本身的特征,我们不希望热门的品牌局部过热导致基尼系数过高和客服服务质量的下降, 此时我们会更突出个性化, 引入用户权重和品牌权重。

当然,没有万能的模型,不论是朴素逻辑回归模型还是混合逻辑归回模型,都会有它的缺点。 逻辑回归对高维非线性数据不理想,混合逻辑回归区域划分参数过度敏感容易过拟合。 在个性化实践中也Learning To Rank也应用比较广泛。在品牌偏好计算中,通常不关心具体的数值大小, 更加关心的是相对的偏好关系。Pairwise的学习方式,把浏览,点击,收藏,加入购车,购买等用户行为用偏序关系连接在一起,个性化程度也更强; 同时,为了是算法即拟合双11的突变性又延续日常的模型, 我们以日常模型为先验, 训练双11的模型,采用了双模型加权的方法。

品牌偏好对应的业务场景非常多, 但是大致分成情感化连接和新颖性发现两个部分。用户品牌偏好只解决了情感化连接的部分,我们同样也会通过挖掘品牌和品牌之间的联系, 让用户发现新品牌,算法会预测用户对新品牌的偏好程度,提高惊喜度。

在线点击率预估

通常用户对推荐结果的点击行为是衡量推荐结果质量的重要指标之一, 在推荐中会直接预估用户的对推荐候选的点击率。 我们根据应用场景,把点击率预估可以分成两个部分。

  • 离线点击率预估。离线部分是数据层面上的复用, 可用于快速业务接入和系统低延时的响应。
  • 在线点击率预估。在线部分是模型层面上的复用, 用于更精准的用户个性化。

核心算法和用户偏好预测基本上一致,不同的是在线点击率预估结合实时和历史的数据, 机器学习已经不是纯算法问题,已经演变成算法系统。本节将忽略算法的细节,重点是讲述商品在线点击率预估的算法架构。

推荐系统结构图

(这张图重新画下,注意只要一个框架图,不能太过具体)

系统流程是:

  1. 用户通过业务层发送请求
  2. 推荐服务请求用户引擎获取用户特征。包括一下几件事:
    • 计算实时意图, 计算用户实时类目、品牌、标签等偏好等等
    • 页面场景分析,来源页和当前页的上下文情景等等
    • 获取用户历史偏好:包括人物画像,历史行为记录,内容标签等等
    • 预测用户心智和状态
  3. 推荐引擎合成检索请求并获取推荐候选列表, 此时候选列表通过离线计算粗排基本有序
  4. 获取候选用户特征和商品特征,按需做组合和变换等操作, 生成最终模型特征
  5. 计算引擎根据模型预估点击率,对结果排序。模型分两个部分:
    • 离线学习的模型, 按天更新模型,适用相对稳定的场景。
    • 在线学习在研发阶段, 实时更新,适用变化比较快的场景。
  6. 推荐引擎对结果再加工,投送到目标资源位。主要的加工包括:
    • 低质量候选过滤。
    • 多样性控制
    • 时效性混新
    • 探索和开发
    • 业务逻辑混入等等

可以看到机器学习算法作为一个算法系统在整个推荐系统发挥重要的作用。 从理解用户意图、预测用户的行为、实体关联网络挖掘到 综合所有因子给用户推荐最合适的候选的排序, 再到不同质候选混合,多逻辑混排, 跨终端推荐,…, 机器学习深入各各环节。

总结

通过以上两个案例,大致了解和算法计算框架和系统骨架, 但是绝对不是机器学习应用的全部。 在个性化推荐实践中面临巨大的挑战, 还需要不断的实践和探索. 比如:

  • 目标上:提供多准则推荐算法, 支持多维度的评价指标; 实质性提升用户体验,提供更加有弹性和甚至不打扰的结果。
  • 特征上:结合上下文信息, 深化对用户和候选的理解;利用更多的外围数据,建立实体知识体系;面对动态数据,捕捉用户意图漂移和商品的生命演化。
  • 模型上:尝试新的非线性算法模型,从不同的维度训练算法模型,利用各模型的优点组合新算法。
  • 规模上:面对的是不断增长的海量数据,亿级的特征,开发快速高效的大规模和伸缩性并发算法。
  • 工程上: 推荐系统是一个非常复杂的系统,机器学习算法需要结合复杂系统, 融入到系统中提供高效稳定的结果。