作者简介
曹城,携程搜索部门高级研发工程师,主要负责携程搜索的个性化推荐和搜索排序等工作。
一、前言
在互联网高速发展的今天,越来越复杂的特征被应用到搜索中,对于检索模型的排序,基本的业务规则排序或者人工调参的方式已经不能满足需求了,此时由于大数据的加持,机器学习、深度学习成为了一项可以选择的方式。
携程主站搜索作为主要的流量入口之一,是用户浏览信息的重要方式。用户搜索方式多样、对接业务多样给携程主站搜索(下文简称大搜)带来了许多挑战,如:
搜索方式多样化
场景多样化
业务多样化
意图多样化
用户多样化
为了更好满足搜索的多样化,大搜团队对传统机器学习和深度学习方向进行探索。
说起机器学习和深度学习,是个很大的话题,今天我们只来一起聊聊传统机器学习中XGBoost在大搜中的排序实践。
二、XGBoost探索与实践
聊起搜索排序,那肯定离不开L2R。Learning to Rank,简称(L2R),是一个监督学习的过程,需要提前做特征选取、训练数据的获取然后再做模型训练。
L2R可以分为:
PointWise
PairWise
ListWise
PointWise方法只考虑给定查询下单个文档的绝对相关度,不考虑其他文档和给定查询的相关度。
PairWise方法考虑给定查询下两个文档直接的相对相关度。比如给定查询query的一个真实文档序列,我们只需要考虑任意两个相关度不同的文档直接的相对相关度。相比PointWise,PairWise方法通过考虑任意两个文档直接的相关度进行排序,有一定的优势。
ListWise直接考虑给定查询下的文档集合的整体序列,直接优化模型输出的文档序列,使得尽可能接近真实文档序列。
下面先简单介绍XGBoost的应用流程:
XGBoost是一个优化的分布式梯度增强库,增强树模型,灵活便捷。但对高维度的稀疏矩阵支持不是很好,另外调参确实有点麻烦。
三、特征工程实践
在传统机器学习下,特征工程显的尤为重要,不论后续模型工程做的多好,如果前期的特征工程没有做好,那么训练的结果不会有多好。所以对特征处理的总体逻辑如下:
3.1 前期数据准备
首先,我们需要进行需求分析,就是在什