机器学习在搜索中的应用:个性化排序
AI、机器学习,是现在媒体的高频曝光词,市面上的很多应用都逐渐接入了AI的能力;搜索这样的‘古董’级产品,其实也是应用机器学习技术的先驱。
本次从搜索的一个场景——搜索结果排序,来聊聊机器学习在搜索产品中的应用。
一、为什么有机器学习排序
先从搜索的常规三步骤:query解析->召回->排序说起。
用户输入一个搜索关键词(也称为query),通过分词/语义理解后,将从系统数据库中召回大量相关的内容;接下来的问题就是如何对成百上千条的数据进行排序,把用户搜索意图最相关的内容排在前面。
1. 传统的排序方法
排序:是对一系列的数据按某些特征因子进行排名,特征的选择以及特征权重的赋予;将影响内容排序的先后,一套排序规则的确定通常需要产品专家与算法专家共同设计。
对于特征的选择,可以按内容的属性特征与文本相关特征分为两类。
内容的属性是由业务性质所决定,比如电商业务,内容属性特征就可以包括价格、销量、加购、收藏、库存、类目、品牌、上架时间、评论、商家信誉等;视频类业务就可以考虑播放时长、观看量、完播率、点赞、收藏、评论数、转发数、主题类型等。
文本相关特征,则主要是query和内容的文本属性,如query对应内容文档的BM-25、TD-IDF分值、内容文档的不同范围(如标题、简介、广告词、URL链接、描述等)的语言模型得分等,这一块主要以算法专家主导。
特征选取后,再对所有特征赋予一定权重,最后对加权的特征计算一个相关性的总分,就可以对结果进行排序,方便理解起见,把排序打分想象为以下的组合公式:
F_score = W1*X1+W2*X2+…+Wn*Xn
X就是某一项特征,W就是对应特征的权重系数,在实际应用中,通常可以由产品与算法专家们基于对实际业务的理解并结合定期的数据反馈不断进行特征与权重的调整。
2. 机器学习排序
随着业务愈发复杂,特征愈发多样,影响一次搜索的因子可能达到几十甚至上百个,每个特征因子都由人工进行调权将变得愈发困难。
那么能否把专家的经验固化为系统自动化的方式呢,机器学习排序的方式应运而出。
机器学习,是教会系统从历史数据的事实中总结经验,形成规律并对未来新的数据进行预测。
参照传统专家排序,机器学习解决排序问题的思路大致分为以下三步:定义学习目标、明确学习策略、找到达成目标的最优解。
1)定义学习目标
即系统要解决什么问题,对于搜索排序通常就是如何更好的提升结果的点击率;但是结合业务再深挖一步的话,指标选择可以更细化,比如电商则希望能提升订单的成交率,视频则看重点击后是否能提升观看时长等——不同的业务目标最终决定了机器要学习成怎样的结果。
2)明确学习策略
解决的是系统如何去学的问题,为此要给机器确定学习的范围与学习的养料。
学习的范围,即判断系统达成目标需要包含哪些因素,解决思路其实与经典排序的特征因子选择的思想同出一源。
让我们再回看上文提到的排序打分公式F_score=W1*X1+W2*X2+…+Wn*Xn,特征的个数及其意义,就组成了系统学习的范围框架;在选择特征因子这个过程中,特征的设计都可以由业务专家们提供指导;当特征因子的组合能愈发表征我们的学习目标,模型效果往往愈发逼近业务期望。
比如我们现在要优化电商业务的搜索,假定目标是提升搜索带来的下单转化率,那么可以考虑从如下四个维度构建影响目标效果的特征:
- 用户特征,即用户静态属性,如性别、年龄、学历、地域、收入、婚姻状况等。
- 行为特征,通常是看用户的历史行为,如上一次的搜索词、近一周有过点击次数最多的搜索词、加购的商品、收藏点赞的商品、近一周浏览访问最多的频道/商铺,考虑复购因素还可以纳入一段时间(如一个月或三个月)有过购买次数的商品类目等。
- 交易特征,即关注用户的消费偏好,如近期(一周/一个月)消费金额、消费频次,是否分期用户、是否会员等。
- 商品特征,即商品本身属性,如上文提到的价格、库存、类目、品牌、评价、销量(通常要考虑时间衰减性,计算一定时间周期如一周的数量)等。把这些与业务属性相关的因素梳理好,结合文本相关特征,也就大致把机器学习的边界框定了下来。
学习的养料,即训练模型的数据,我们需要从学习目标与学习范围出发,为机器构造适合学习的内容。
特征敲定了,接下来就是把数据来源拿过来——数据采集,如商品交易数据源头在订单系统,另外如行为数据,则需要对前端进行埋点采集;这可能会需要与多个业务系统对接或者从数据仓库中取数,在系统对接之前,一定要先确定数据的口径是否与特征意义保持一致。
3)找到达成目标的最优解
最后一步其实就是建模的过程,包括模型选择、模型训练、模型评估;有了特征数据,算法工程师可以依据经验选择某类机器学习的模型,对特征进行组合与学习,最终完成对目标的求解。
以上是机器学习排序构建的思路,下面将用白话的方式简要介绍排序学习的算法原理,不关注技术算法的同学可以略过~
二、LearningToRank
LearningToRank(LTR)是一种用来解决排序问题的算法框架思想,本质上属于有监督学习的过程,感兴趣的同学可以参考文献1、2等进一步研究。
1. 学习方式分类
LTR按学习方式的不同分为三类,单文档方法(Pointwise)、文档对方法(Pairwise)和文档列表方法(Listwise)三类。
1)Pointwise
单文档方法是对于给定的查询query,某一单个文档结果与查询的关联程度,例如查询‘华为’,点击了华为手机,那么只有华为手机是与搜索词’华为’关联的,华为平板电脑、华为手表都是该查询词的负样本。
2)Pairwise
文档对方法考虑的是对于给定查询词query,返回的结果中两个文档对之间的相对相关度,比如搜‘炸鸡’,返回结果的相关性‘KFC’>’麦当劳’,以“炸鸡,(KFC>麦当劳)”这样的组合方式对机器进行训练,最终的序列是考虑了两两相关度比较之后的结果。
3)Listwise
文档列表方法考虑的是给定查询下的文档集合的整体序列,直接优化模型输出的文档序列,使得其尽可能接近真实文档序列。
2. 模型实现
基于上述排序学习的思想,目前部分模型在原生框架中已经集成了对L2R的实现。
1)树模型
树模型可以理解为是一系列的if-else规则的组合,通过每一个特征的决策来影响最终结果的判断输出,其中的典型代表是XGBoost / LightGBM。
XGBoost / LightGBM模型本身已支持对排序问题的训练,通过设置模型中的参数即可直接训练LTR问题。(XGBoost是处理分类/回归的通用模型,并不是为解决排序问题而提出,在这里不得不惊叹其不愧为机器学习界的大杀器~)。
2)TF-RANKING
这是谷歌公司在2018年提出的基于TensorFlow的LTR解决方案,严格来说其并非一种模型而是一个框架;其中包括一整套学习到排名的算法,可自定义损失函数及模型评估指标,对Pairwise和Listwise都提供支持。
三、小结
排序是搜索流程中最重要的问题之一,是最终直接面向用户的环节;排序结果的好坏很大程度上影响用户体验和商业转化,也因此排序流程很早就开始引入机器学习的方式来进行优化。
当然客观的说,机器学习也并非是优化这一问题的最佳方式,某些业务通过专家规则的方式依然有很好的效果。
搜索排序是伴随着我们的业务发展将不断优化的工作。
参考链接:
[1]https://zhuanlan.zhihu.com/p/93196423
[2]https://blog.csdn.net/ld326/article/details/81609783
[3]https://mp.weixin.qq.com/s/UpN7tAMjbFLSPcDYsWaykg
[4]https://blog.csdn.net/weixin_44220002/article/details/85212636
作者:策略伽;公众号:策略伽
本文作者 @策略伽 。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!