原文: https://tech.meituan.com/searchads_dnn.html#ref-5
我们抽取了以下几大类特征:
- 用户特征
- 人口属性:用户年龄,性别,职业等。
- 行为特征:对商户/商圈/品类的偏好(实时、历史),外卖偏好,活跃度等。
- 建模特征:基于用户的行为序列建模产生的特征等。
- 商户特征
- 属性特征:品类,城市,商圈,品牌,价格,促销,星级,评论等。
- 统计特征:不同维度/时间粒度的统计特征等。
- 图像特征:类别,建模特征等。
- 业务特征:酒店房型等。
- Query特征
- 分词,意图,与商户相似度,业务特征等。
- 上下文特征
- 时间,距离,地理位置,请求品类,竞争情况等。
- 广告曝光位次
结合美团多品类的业务特点及O2O模式独特的需求,着重介绍几个业务场景以及如何刻画:
- 用户的消费场景
- “附近”请求:美团和大众点评App中,大部分用户发起请求为“附近”请求,即寻找附近的美食、酒店、休闲娱乐场所等。因此给用户返回就近的商户可以起到事半功倍的效果。“请求到商户的距离”特征可以很好地刻画这一需求。
- “指定区域(商圈)”请求:寻找指定区域的商户,这个区域的属性可作为该流量的信息表征。
- “位置”请求:用户搜索词为某个位置,比如“五道口”,和指定区域类似,识别位置坐标,计算商户到该坐标的距离。
- “家/公司”: 用户部分的消费场所为“家” 或 “公司”,比如寻找“家”附近的美食,在“公司”附近点餐等,根据用户画像得到的用户“家”和“公司”的位置来识别这种场景。
- 多品类
- 针对美食、酒店、休娱、丽人、结婚、亲子等众多品类的消费习惯以及服务方式,将数据拆分成三大部分,包括美食、酒店、综合(休娱、丽人、结婚、亲子等)。其中美食表达用户的餐饮需求,酒店表达用户的旅游及住宿需求,综合表达用户的其他生活需求。
- 用户的行为轨迹
- 实验中发现用户的实时行为对表达用户需求起到很重要的作用。比如用户想找个餐馆聚餐,先筛选了美食,发现附近有火锅、韩餐、日料等店,大家对火锅比较感兴趣,又去搜索特定火锅等等。用户点击过的商户、品类、位置,以及行为序列等都对用户下一刻的决策起到很大作用。
面以这两类数据特征为例,介绍在Wide & Deep模型中的使用方式。
- 用户实时行为
- 行为实体 用户的实时行为包括点击商户(C_P)、下单商户(O_P)、搜索(Q)、筛选品类(S)等。商户的上层属性包括品类(Type: C_Type, O_Type)、位置(Loc: C_Loc, O_Loc)等。
- Item Embedding 对用户的行为实体构建embedding向量,然后进行Sum/Average/Weighted Pooling,和其他特征拼接在一起。实验发现,上层属性实体(C_Type, O_Type, C_Loc, O_Loc)的表现很正向,离线效果有了很明显的提升。但是C_P, O_P, Q, S这些实体因为过于稀疏,导致模型过拟合严重,离线效果变差。因此,我们做了两方面的改进:
- 使用更充分的数据,单独对用户行为序列建模。例如LSTM模型,基于用户当前的行为序列,来预测用户下一时刻的行为,从中得到当前时刻的“Memory信息”,作为对用户的embedding表示;或Word2Vec模型,生成行为实体的embedding表示,Doc2Vec模型,得到用户的embedding表示。实验发现,将用户的embedding表示加入到模型Part_2部分,特征覆盖率增加,离线效果有了明显提升,而且由于模型参数空间增加很小,模型训练的时间基本不变。
- 使用以上方法产生的行为实体embedding作为模型参数初始值,并在模型训练过程中进行fine tuning。同时为了解决过拟合问题,对不同域的特征设置不同的阈值过滤。
- 计数特征 即对不同行为实体发生的频次,它是对行为实体更上一层的抽象。
- Pattern特征 用户最近期的几个行为实体序列(例如A-B-C)作为Pattern特征,它表示了行为实体之间的顺序关系,也更细粒度地描述了用户的行为轨迹。
- 图片
- 描述 商户的头图在App商品展示中占据着很重要的位置,而图片也非常吸引用户的注意力。
- 图片分类特征 使用VGG16、Inception V4等训练图片分类模型,提取图片特征,然后加入到CTR模型中。
- E2E model 将Wide & Deep模型和图片分类模型结合起来,训练端到端的网络。
美团猜你喜欢:
原文链接:https://tech.meituan.com/recommend_dnn.html
特征种类
- User特征:用户年龄,性别,婚否,有无孩子等
- Item特征:价格,折扣,品类和品牌相关特征,短期和长期统计类特征等
- Context特征:天气,时间,地理位置,温度等
- 用户行为:用户点击Item序列,下单Item序列等
标签匹配
推荐后台日志会记录当前样本对应的User特征、Item特征与Context特征,Label日志会捕获用户对于推荐项的行为反馈。我们把两份数据按照唯一ID拼接到一起,生成原始的训练日志。
等频归一化
通过对训练数据的分析,我们发现不同维度特征的取值分布、相同维度下特征值的差异都很大。例如距离、价格等特征的数据服从长尾分布,体现为大部分样本的特征值都比较小,存在少量样本的特征值非常大。常规的归一化方法(例如 min-max, z-score)都只是对数据的分布进行平移和拉伸,最后特征的分布仍然是长尾分布,这就导致大部分样本的特征值都集中在非常小的取值范围内,使得样本特征的区分度减小;与此同时,少量的大值特征可能造成训练时的波动,减缓收敛速度。此外也可以对特征值做对数转化,但由于不同维度间特征的分布不同,这种特征值处理的方式并不一定适用于其他维度的特征。
在实践中,我们参考了Google的Wide & Deep Model[6]中对于连续特征的处理方式,根据特征值在累计分布函数中的位置进行归一化。即将特征进行等频分桶,保证每个桶里的样本量基本相等,假设总共分了n个桶,而特征xi属于其中的第bi(bi ∈ {0, ..., n - 1})个桶,则特征xi最终会归一化成 bi/n。这种方法保证对于不同分布的特征都可以映射到近似均匀分布,从而保证样本间特征的区分度和数值的稳定性。
低频过滤
过多的极为稀疏的离散特征会在训练过程中造成过拟合问题,同时增加参数的储存数量。为避免该问题,我们对离散特征进行了低频过滤处理,丢掉小于出现频次阈值的特征。