本次分享的主题为推荐系统中模型训练及运用流程的标准化。在推荐系统中,点击率(CTR)预估模型是最关键且最复杂的部分。不论是采用线性模型还是流行的深度学习模型,在模型结构确定后,模型迭代的关键在于特征的选择与处理。因此,如何科学地管理特征变得尤为重要。
在实践中,我们对特征的采集、配置、处理流程及输入方式进行了标准化:通过配置文件和代码模板管理特征的声明及追加,特征的选取及预处理等流程。由于所有特征处理相关的配置都在同一份配置文件中定义,这样可以保证离线训练和在线预测时特征处理方式的一致性。
我们的产品“天天快报”涵盖了首页及数十个子频道,需要对每个频道进行召回和排序模型的构建。为了高效管理众多频道,我们需要一个系统来统一管理和处理所有特征和模型。
推荐系统的主要流程是从海量内容中挑选出适合用户的少量文章。这一过程包括三个主要步骤:
常用的推荐模型包括LR(逻辑回归)、FM(因子分解机)、DNN(深度神经网络)、W&D(Wide & Deep)、DeepFM、DIN等。推荐系统通常需要以下几个模块:
排序系统主要通过特征处理和模型训练来实现。以用户ID为例,在线预测时,首先将用户ID填入变量中,通过哈希函数转换为整数类型,再输入模型。同时,记录特征以备训练样本使用。离线训练时,结合用户行为数据形成带有标签的样本,用于模型训练。
推荐系统中的模型需要不断迭代优化。日常工作中的挑战包括:
为解决上述痛点,我们设计了一套基于CSV格式的特征处理标准。该标准旨在减少人工编码量,便于查看和维护,并易于迭代。CSV文件中每一行定义一个特征,包括特征名称、类型、位置、处理方式等信息。
在旧流程中,每次添加新特征都需要编写多个代码段。新的流程中,只需在CSV文件中定义变量处理方式,通过Python脚本和代码模板自动生成新C++程序,简化了流程。
通过标准化特征类型,我们抽象出四种标准类型(整型、稀疏整型、字符串、稀疏字符串),并将其封装在一个基类中,确保在线特征和离线特征的一致性。
系统支持两种训练样本格式:libsvm和稀疏张量数组。通过CSV文件生成相应的训练样本,提供多种训练方式,支持不同模型的训练。
通过CSV文件配置监控函数,实时监控特征的变化情况,及时发现异常。
在特征处理过程中,过滤异常样本并设置合理的权重,确保样本质量。
通过标准化特征处理流程,我们大大减少了人工编码量,提高了工作效率,降低了人为引入错误的可能性。推荐系统中特征处理的标准化体现在特征类型的标准化和特征处理过程的标准化两方面。