导读:大家好,今天分享的题目是 AutoML 在表数据中的研究与应用。对于 AutoML,大家听到比较多的可能是神经网络结构搜索 ( NAS,Neural Architecture Search ),NAS 主要应用于图像,而我们的工作主要应用于解决表数据 ( Tabular Data ) 中的建模问题。目前 NAS 在表数据中的研究较少,有兴趣的小伙伴可以尝试。
第四范式 AutoML Tables 的效果
我们选取了10个 Kaggle 比赛数据,分别通过第四范式 AutoML Tables 和 Google Cloud AutoML Tables 产生结果并提交,然后分别计算每种方法的在整个排行榜中的相对排名,如图所示,第四范式的 AutoML 在表数据上的效果大部分要优于 Google Cloud AutoML,其中图中青色代表第四范式,蓝色代表 Google,柱状图越高表示效果越好。
下面我主要从五个方面进行介绍:
- AutoML Tables 的背景
- AutoML Tables 的自动特征工程
- AutoML Tables 的自动参数寻优
- 第四范式 AutoML Tables 的落地案例
- 对未来工作的展望
▌AutoML Tables 的背景
1. 什么是机器学习?
Tom Mitchell 在1997年《机器学习》的教材中讲到,定义如下:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
2. 什么是 AutoML?
- 机器学习步骤
以现实中的场景“反欺诈”为例,介绍下机器学习的步骤。
① 形式化的定义问题
② 收集数据
③ 特征工程
④ 模型的训练
⑤ 模型的评估
⑥ 部署和应用(如果效果达到目标)
上述所有的工作基本都是由机器学习的专家来完成的。该过程可能是一个迭代的过程,需要根据模型的效果,多次选择数据、特征和调整模型等。
- AutoML 做什么?
AutoML ( Automated Machine Learning ) 是利用机器来完成机器学习步骤中的某部分工作,而不是全部由专家来完成。目前,在相当多的领域缺乏有机器学习背景的开发人员。因此,利用 AutoML 可以使得机器学习更好的应用到更多的行业、更快地造福于社会。
现在 AutoML 主要侧重于特征工程、模型训练和模型评估,对于问题的形式化研究较少。
3. 什么是 AutoML for Tables?
通常大家对于 AutoML 的印象更多来自于 Google 的 NAS 方面的文章,例如自动在 CIFAR10 或者 ImageNet 上搜索网络结构。这些通常是应用于图像数据的。
AutoML for tables 的工作主要是面对通过业务逻辑拼接成的宽表,不涉及图像数据或者 NLP。图中示例的数据集是来自 UCI 的数据,主要预测是否给客户贷款,是否有风险,用到的特征有年龄、工作、教育、资产等。
▌AutoML Tables 自动特征工程
根据前面提到的机器学习的 pipeline,我们先介绍 AutoML Tables 的自动特征工程。在参加竞赛中,大家会提到一个说法“特征决定了效果的上限,模型只是决定趋近于这个上限的程度”。在我们的实际工作中,特征也是一个提升空间更大的地方。
自动特征工程主要是由下面几个模块组成:
- 自动拼表
- 自动特征生成
- 自动特征选择
- 自动特征增强
1. 自动拼表
现实中完成一个业务场景的任务,是需要很多张表的。例如一张表描述用户信息,一张表描述商品信息,还有一张表描述其他的补充信息(例如上下文,浏览记录等)。
2. 自动特征生成
在自动特征生成中,我们主要是有下面四类的算子:
① 一元算子
基于特征做线性和非线性的变换,例如归一化、log 变换等。n 个特征,复杂度是 O(n)。
② 二元操作算子
例如加减乘除,笛卡尔积等。n 个特征,进行二元操作,则复杂度为 O(n2)。
③ group-by 算子
Group-by operator 是比较特殊的一种算子,它需要先做 partition,然后做 aggregation。此外,如果牵扯到时序性 ( 时序可能放在 group by,或者放在 window function ),算子的复杂度会比较高,同时需要小心穿越。
④ 高阶的算子 ( high-order )
例如有 k 阶,则从 n 个特征中选择 k 个进行操作,数量为 Cnk,再从这些特征中进行选择的话,就是指数的指数级,指数空间的搜索问题很难。
3. 自动特征选择
特征是不是越多越好?答案是否定的。一方面有的特征是有害的,另一方面特征较多对于系统性能都会增加要求。所以,在自动生成了很多特征后,我们需要考虑如何从自动生成的特征中选取有效的特征。
首先,最直观的做法是将特征放入模型中,如果模型效果好就保留,效果不好就舍弃。这个方法有两个问题,一是如果应用到全量数据,进行计算会比较贵;另一个是一个特征本身没有用,和其他的特征组合有用。
经典的特征选择主要有 Filter、Wrapper、Embedded 三种方式,可以去查看相关的资料。我们做的工作的目标是快速地,低代价的进行特征选择。这次主要介绍一个 PFI ( permutation feature importance ) 特征重要性的方法和 ( field-wise logistic regression ) 的方法。
- PFI ( permutation feature importance ) 方法
下面举例来介绍 PFI 方法,假设我们有10个特征待评估,首先进行一个模型训练,得到了模型的效果评估值 ( performance ) AUC 为0.8。然后,固定9个特征不变, shuffle 第一个特征,再次进行模型训练,得到新的评估值 AUC 为0.7。判定特征的重要性为两次的差值0.8-0.7,为0.1。重复上面的过程,如针对第二个特征,固定除这个特征外的9个特征,只是对第二个特征进行 shuffle,这个时候模型为0.75,则第二个特征的重要性为0.8-0.75,为0.05。该方法既可以做特征重要性,亦可做特征可解释性。该方法的动机是,特征越重要,对其扰动后,模型的效果抖动越大。
推荐阅读:叶紫网