论文题目: A Unified Search Federation System Based on Online User Feedback
论文地址: https://dl.acm.org/citation.cfm?id=2488198
论文发表于: KDD 2013(CCF A类会议)
论文大体内容:
对于搜索/推荐系统来说,面临一个挑战,就是怎么样才能更合理的对多路召回的结果进行merge,使得merge出来的结果更符合用户需求,更能使用户满意。本文作者基于此问题,提出一个统一的搜索merge系统,将该问题考虑为contextual bandit问题,并通过最大化平均reward来训练模型,离线效果显著,线上效果提升明显。
1. 本文来源于Yahoo lab,所以作者面临的实际问题是Yahoo的搜索排序问题。对于用户输入的query,搜索引擎会返回10条结果,其中包含webpage,location,image,ads等内容。但是具体这些各不相同的内容放在哪个位置,才能使得用户最为满意呢,这是作者实际面临的业务问题。
2. 对于搜索问题,可以抽象成这样思考:
①对于用户输入的query,产生多路召回,可以假定各路召回的结果,它们相互之间的类型结构不一样,属于异源数据;
②多路召回后,需要对各路召回结果进行merge,这个时候除了需要根据业务需求,如第一条必须是广告,或者第一条必须是wiki内容等,还需要根据用户行为来动态调整各路召回使用的数量,以及出现的位置,来最大化用户的满意度;
③因为各路召回源是异源数据,所以很难共享共同的特征,来统一走同一套rank;
④所以作者的motivation就是将多路异源数据走模型进行统一化merge,来达到更好的效果;
3. Bandit算法的基本思路
4. 由于reward的分布不确定,所以不能直接选择拥有最大期望的reward。要是一直选择最优的,容易陷入局部最优,而非全局最优,所以bandit需要选择非当前最优解,这就是exploration(探索)的步骤;最简单的bandit算法就是ε-greed,以ε的概率进行探索,剩下1-ε的概率进行选择最大reward;
5. 搜索系统中的reward由类似于skip-above的方法得到,10个结果中,点击的reward都为1,最后的一个点击前的未点击结果reward为-1,整个页面的reward就是每个结果的reward累加;
6. 整体的框架,包含online和offline,offline是使用Hadoop集群的日志,然后使用开源的online learning框架Vowpal Wabbit[1]来训练模型;
7. 作者主要使用了以下5大类的feature:
①各路召回的召回分,用于衡量召回的质量;
②召回共用的feature,如上下文等;
③搜索query的feature,包括浅层和深层语义;
④user feature,item feature,如用户偏好,item的历史ctr等;
⑤各个异源数据的独有feature,如电影是否在上映,新闻热门程度等;
实验
8. Dataset
Yahoo搜索引擎2周的真实线上数据;
9. Baselines
①随机merge;
②只出某路召回;
10. 评测方法
①线下使用平均reward;
②线下使用人工评测作为ground true对比;
③线上使用a/b测试,观察ctr和coverage;
11. 结果
基本都能够提升coverage的同时,提升ctr,但是有时候会对ctr有损;
参考资料:
[1] http://hunch.net/~vw/
以上均为个人见解,因本人水平有限,如发现有所错漏,敬请指出,谢谢!