罗远飞:自动特征工程在推荐系统中的研究

以下是罗远飞在先荐推荐系统学院第一期线上活动中的技术分享:

大家好!我是第四范式的罗远飞!‍

很高兴能有机会和大家一起交流关于自动机器学习方面的一些工作。‍我在第四范式的工作大都和自动机器学习相关,之前的精力主要集中在自动特征工程。虽然模型改进能够带来稳定的收益,但是更为困难。‍所以如果是在做一个新的业务,‍可以先尝试从做特征入手,特征工程往往能够带来更明显的收益。

AutoCross的背景

‍ ‍本次报告所提及的自动机器学习,是针对表数据的自动机器学习。‍表数据是一个经典的数据格式,它一般包含多列,列可能对应离散特征或者连续特征。‍我们不能将用于图像、语音或者NLP中的模型直接拿过来用,需要做特定的优化。‍

本次报告提及的特征组合,特指feature crossing,即两个离散特征的笛卡尔积。以“去过的餐厅”为例,我经常去麦当劳,‍那么我和麦当劳可以做为一个组合特征;再比如我去肯德基,则我和肯德基也可做为一个组合特征。

本次报告提及的自动特征工程,是指‍自动从上表数据中发现这些有效的组合特征。比如我是一位软件工程师,是一个特征;在第四范式工作,是另外一个特征。这两个特征是分成两列储存的,我们可以把‍这两列组合成一个新的特征,‍这个特征的指示性更强,更具有个性化。‍

为什么需要自动特征工程呢?

首先,特征对建模效果有着非常重要的作用。其次,客户的场景远比建模专家多,‍如我们的先荐业务有上千家媒体,我们不能给每个业务都配备一个专家,针对每一个场景人工去建模。最后,即使只有一个业务,数据也是多变的,面临的场景也是不停变化的,‍所以我们要做自动特征工程,‍不能让人力和我们的业务量呈正比。

AutoCross的相关研究

自动特征工程主要分为两大类,一类是显式特征组合,‍另一类是隐式特征组合。

显式的特征组合

显式的特征组合有两个代表性工作,分别是RMI [2]和CMI [3]。其中字母“MI”代表互信息(Mutual Information),是一个经典的特征选择的方法。‍

MI是通过统计同一个数据中,两列特征的出现频率和共现频率计算得到。但是RMI的做法是在训练集合统计一部分信息,在另外一部分成为reference数据上统计另外一部分信息,这也是“R”的来源。上图‍来自于RMI的论文[2],表示随着不同的‍组合特征加进去,然后AUC逐渐地上涨。‍CMI是另外一个经典的工作,CMI通过分析对率损失函数,结合牛顿法,计算出每个特征的重要性。

它们都取得了不错的效果。但一方面,它们只考虑二阶特征组合;另外,它们均为串行算法,每次选择一个组合特征后,都需把其他特征重新训练一遍,是O(n^2)复杂度,其中n为特征数目。‍此外,MI本身不允许一个特征下同时出现多个取值。‍

隐式的特征组合

另外一类是隐式特征组合,大家可能更熟悉一些。FM[4]和FFM[5]是枚举所有的‍二阶特征组合,它们组合方式是用低维空间中的内积去代表两个特征的组合,取得了很好的效果。‍随着DL的兴起,现在更流行基于DNN做隐式特征组合。但是它的可解释性不强,一直被大家诟病。

我们提出AutoCross[1],它具有很强的可解释性,能够做到高阶特征组合,同时具有较高的Inference效率。

AutoCross整体结构

从左往右看,‍AutoCross的输入是数据和对应的特征类型,然后经过AutoCross的Flow,‍输出一个特征生成器,能够把学到的特征处理方式应用于新数据。

‍ Flow里主要有三个部分,首先是预处理,‍然后是组合特征生成和组合特征选择的迭代过程。‍针对数据预处理,我们提出了多粒度离散化;针对怎么从指数级空间中有效的生成组合特征,‍我们用了集束搜索(Beam Search);针对如何有效且低代价地特征选择,我们提出了逐域对数几率回归(Field-wise LR)和连续小批量梯度下降(Successive Mini-batch GD)两种方法。‍

AutoCross算法

下面我们看一下每个过程所涉及的算法。‍

首先是数据预处理,数据预处理的目的是补充缺失值,并将连续特征离散化。我们观察到‍,对于连续特征,在离散化的时候,如果选择的离散化粒度不一样,其效果会差别非常大。‍甚至在一个数据集上观察到AUC有10个百分点的差异。如果对每一个数据集都手动设置最优的离散化粒度,代价比较高,也不现实。

基于此我们提出了多粒度离散化方法,同时使用多种粒度去离散化同一个特征,比如特征“年龄”,我们按照年龄间隔为5的离散化一次,年龄间隔为10的离散化一次,‍年龄间隔为20的再离散化一次,同时生成多个不同的离散化特征,让模型自动去选择最适合它的特征。

集束搜索(Beam Search)

如前文所述,假设有n个原始特征,‍那么可能的k阶特征有O(n^k)个,这是‍一个指数级增长的过程。‍如何在这个空间中有效地去搜索、生成、组合特征呢?如果都生成,在计算和存储上都不太可行。‍

我们借鉴集束搜索(Beam Search)的方法来解决该问题。它的工作原理是,先生成一部分二阶组合特征,‍然后用效果好的二阶组合特征去衍生三阶组合特征,并非生成所有的三阶组合特征,相当于一种贪心的搜索方法。

逐域对数几率回归(Field-wise LR)

我们通过多粒度离散化对数据进行预处理,之后通过集束搜索缩减搜索空间。

但生成的特征依然数量众多,怎么才能快速、低代价地从生成特征中选出有效的特征呢?对此,我们提出了逐域对数几率回归(Field-wise LR)算法,固定已选特征对应的模型参数,‍然后计算候选特征中哪个特征‍加进来,能够最大程度的提升模型效果。这样做能够显著节约计算、通信和存储上的开销。‍

‍连续小批量梯度下降(Successive Mini-batch GD)

为了进一步降低特征评估成本,我们又提出了连续小批量梯度下降Successive Mini-batch GD)方法。在小批量梯度下降的迭代过程中,逐渐淘汰不显著的候选特征,并给予较重要的特征更多批的数据,以增加其评估准确性。

AutoCross-System优化

下面介绍我们在系统上做的一些优化。

缓存特征权重

从算法上来看,我们的‍系统是一个指数空间的搜索问题,即使能够降低其复杂度,它的运算代价依然很大。因此我们会对数据采样,并序列化压缩存储。

‍ 之后,当运行逐域对数几率回归时,系统会把已经计算过的特征权重缓存下来。如果按照以前的方法,我们需要先从参数服务器上获取已经生成特征的权重,‍这一步会带来网络开销;获取之后要做运算,并生成该特征及预测 ,这一步会产生计算开销;‍生成特征之后,再存储到硬盘中,进一步会产生存储成本。‍但是,我们把之前的那些特征的权重都给缓存下来,通过直接查表,就能够降低网络、计算、存储的开销。‍

在线计算

除了缓存特征权重之外,我们还进行了在线计算。我们在做特征生成的同时,有独立的线程去序列化数据和生成特征。

数据并行

此外,数据并行也是系统优化的常用方法。系统的每个进程中都有一份计算图,并通过主节点,‍或者参数服务器,保证它们之间有序地在进行各个操作。‍

AutoCross实验

下图是我们的实验结果。‍

这里的baseline有两个。‍我们首先看AutoCross产生的特征对LR的帮助。当我们把AutoCross的特征放进LR之后,其效果变化很明显(第1行和第2行)。‍同时,我们对比了AutoCross和CMI两种方法(见第2行和第4行)。经过对比后发现, ‍AutoCross始终优于CMI。‍

为验证AutoCross产生的特征是否会对深度模型有帮助,‍我们同样把AutoCross的特征和W&D模型结合(见第3行)。我们发现,当我们把特征‍给W&D之后,‍W&D模型也取得了‍很不错的效果,在10个数据集上效果均能和当前最好的深度学习模型相媲美。

参考文献

[1] Yuanfei, Luo, Wang Mengshuo, Zhou Hao, Yao Quanming, Tu WeiWei, Chen Yuqiang, Yang Qiang, and Dai Wenyuan. 2019. “AutoCross: Automatic Feature Crossing for Tabular Data in Real-World Applications.” KDD.

[2] Rómer Rosales, Haibin Cheng, and Eren Manavoglu. 2012. Post-click conversion modeling and analysis for non-guaranteed delivery display advertising. WSDM.

[3] Olivier Chapelle, Eren Manavoglu, and Romer Rosales. 2015. Simple and scalable response prediction for display advertising. TIST.

[4] Rendle, Steffen. "Factorization machines." 2010. ICDM.

[5] Yuchin Juan, Yong Zhuang,Wei-Sheng Chin, and Chih-Jen Lin. 2016. Field-aware factorization machines for CTR prediction. In ACM Conference on Recommender Systems.

[6] Huifeng Guo, Ruiming Tang, Yunming Ye, Zhenguo Li, and Xiuqiang He. 2017. DeepFM: a factorization-machine based neural network for CTR prediction. IJCAI.

第四范式先荐
第四范式先荐

个性化推荐专家“先荐”带你解锁推荐系统!

https://www.tuijianxitong.cn/
理论推荐算法推荐系统自动机器学习特征工程
2
相关数据
第四范式机构

第四范式成立于2014年,是国际领先的人工智能平台提供商,利用机器学习技术,帮助企业提升效率、降低风险,获得更大的商业价值。第四范式坚持以“Empower AI Transformation and Inspire AI For Everyone”为企业愿景,依托于AutoML、迁移学习等技术与企业级人工智能PaaS平台,不断推动人工智能快速、规模化的产业落地。目前,第四范式已在银行、保险、政务、能源、智能制造、零售、医疗、证券等领域积累超过上万个AI落地案例,助力各行各业AI创新变革。

https://www.4paradigm.com/
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

推荐文章
暂无评论
暂无评论~