其他分享
首页 > 其他分享> > 美团O2O排序解决方案——线下篇

美团O2O排序解决方案——线下篇

作者:互联网

背景

针对美团90%的交易发生在移动端的业务特点,我们实现了一套适用于O2O业务的搜索排序技术方案,已在许多产品和子行业中得到应用。在之前的线上篇中,我们已经介绍了服务的框架、排序算法等。本文为线下篇,主要讲述数据清洗、特征矩阵、监控系统、模型训练和效果评估等模块。

数据清洗

数据清洗的主要工作是为离线模型训练准备标注数据,同时洗掉不合法数据。数据清洗的数据源主要有团购的曝光、点击和下单。
整个数据清洗的流程如下:

特征矩阵

特征矩阵的作用是提供丰富的特征集合,以方便在线和离线特征调研使用。

特征矩阵的生成

特征矩阵的生成框架为:
Drawing

下面我们来详细说明一下流程。
基础特征按来源可分为三部分:
1、Hive表:有一些基础特征存储在Hive标注,如POI的名字、品类、团购数等。
2、离线计算:一些特征需要积累一段时间才能统计,如POI的点击率、销量等,这部分通过积累历史数据,然后经过Map/Reduce处理得到。
3、HDFS:特征矩阵可能融合第三方服务的特征,一般第三方服务将产生的特征按照约定的格式存储在HDFS上。
数据源统一格式为: poiid/dealid/bizareaid '\t' name1:value1'\t' name2:value2...
特征合并模块,将所有来源合并为一个大文件,通过feature conf配置的特征和特征顺序,将特征序列化,然后写入Hive表。
特征监控模块每天监控特征的分布等是否异常。 特征矩阵的特征每日更新。
添加新的特征来源,只需要按照约定的格式生成数据源,配置路径,可自动添加。
添加新特征,在feature conf文件末尾添加相应的特征名,特征名字和数据源中的特征name保持一致,最后修改相应的特征Hive表结构。

特征矩阵的使用

特征矩阵的使用框架为:
Drawing

我们来详细说明一下流程。
其中特征矩阵既提供在线的特征仓库,又可提供离线的特征调研。线上服务需要大量的特征来对POI/DEAL质量打分,特征分散会造成服务取用特征很耗时,特征矩阵将特征整合,很好的解决了特征耗时的问题。一般调研一个新特征需要积累一段时间的数据,将特征放入特征矩阵,
然后和已有的数据进行融合,可方便的构造包含新特征的训练数据。下面我们分别来看一下在线、离线和特征融合的流程。

流程说明:

  1. 序列化模块通过特征配置文件从特征矩阵抽取需要的特征,调用protoBuffer Lib将特征封装成protoBuffer的格式,写入Medis。
  2. 线上通过featureLoader服务从Medis读取数据,然后通过protoBufferLib反序列化数据,取到相应的特征值。

其中,从特征矩阵取出待调研的新特征,格式化为 joinKey '\t' FeatureName:FeatureValue, 例如 12345 '\t' CTR:0.123,joinkey为poiid, 新特征为CTR,特征值为0.123。格式化后的新特征文件和标注好的rerank日志作为输入,经过Map/Reduce处理生成新的标注日志,用于模型训练。

流程说明: 特征融合模块可以指定任意一个或者多个join key,将离线特征加入在线特征列表。

监控系统

监控系统的目的是确保在线和离线任务的正常运行。监控系统按照作用范围的不同又分为线上监控和离线监控。

模型调研

模型训练

模型训练框架支持多种模型的训练,将训练数据格式化为模型需要的输入格式。修改模型训练的配置文件,就可以使用该框架训练模型了。
模型训练框架:
Drawing
其中,顶层是训练数据和测试数据的输入层,该层是原始训练和测试数据。
中间是模型训练的框架,框架支持多个配置项,包括配置模型算法、相应的参数、数据源的输入及模型的输出等。
底层是多种模型的实现,算法之前相互独立,每种算法封装成独立的jar,提供给模型训练框架使用,目前支持的算法包括GBDT[4]、FTRL[5]。
为了实现模型的快速迭代,模型训练支持在Spark上运行。

效果评估

模型的效果评估主要是对比新模型和老模型的效果,以评估结果来决定是否更新线上模型。
我们的系统支持两种效果指标的评估,一种是AUC[1],另一种是MAP。

MAP(Mean Average Precision)[2]是一种对搜索排序结果好坏评估的指标。

总结

本文重点介绍了美团排序系统离线各个部分的工作。离线工作在O2O排序服务中占据着举足轻重的地位,为线上排序效果的提升提供了强有力的支持。为了更好的优化我们的服务,我们仍在探索中不断前进。

参考

  1. Approximating area under the curve . Khan Academy.
  2. Information retrieval . Wikipedia.
  3. Pearson's chi-squared test . Wikipedia.
  4. Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of statistics, 1189-1232.
  5. 在线学习算法FTRL. CSDN blog.



发现文章有错误、对内容有疑问,都可以关注美团点评技术团队微信公众号(meituantech),在后台给我们留言。我们每周会挑选出一位热心小伙伴,送上一份精美的小礼品。快来扫码关注我们吧!

公众号二维码

标签:特征,矩阵,美团,离线,O2O,线下,监控,日志,模型
来源: https://blog.51cto.com/u_15197658/2768819