【前言】机器学习模型的开发是一个耗时且需要专家驱动的工作流程,整个流程一般包括数据采集、数据预处理与分析、模型的选择与训练以及调优等步骤。自动化机器学习(Automatic Machine Learning,简称AML)的思想源自对上述工作流程的自动化向往: 是否能够通过自动化的方式选择并训练机器学习模型。如果说模型是对数据的学习,那么自动化机器学习则是对上述工作流程的学习。将自动化应用于模型的开发过程中,不仅能加速整个分析的进展,同时也能降低使用者的学习成本。
– 【背景】 –
在进一步了解自动化机器学习的概念之前,我们先来看下现在的做法是什么,以及其中有哪些步骤是可以通过自动化实现。
一般来说,为了得到有效的模型设计方案,会经过以下几个步骤:
1. 对数据特征的探索
对数据的特征进行探索的过程也被称为特征工程。“数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”从侧面反映了特征工程在整个学习模型开发周期中的重要性。有效的特征工程不仅能使模型达到更好的效果,往往也使其具有更好的解释性。一般来说,特征工程包括特征提取与选择,特征的构建两个部分。对样本数据的特征工程不仅要求较高的专业知识,同时是整个模型开发生命周期中重要的一环。
2. 数据的可视化
数据可视化,是指将原始数据通过可视的、交互的方式进行展示,从而形象、直观地表达数据蕴含的信息和规律。数据的可视化提供了对数据内部规律的直观描述,同样是对数据特征探索中重要的组成部分。
3. 对不同的模型的尝试,对模型的超参数调整
针对不同的业务目标,我们获取到的数据往往具有较大的差异性。如何在不同的数据分布上选用合适的模型一般需要大量的尝试。
4. 对模型效果的检验
模型效果的检验依赖于学习曲线、ROC 曲线等诊断图的生成。对诊断图绘制的包装可以降低使用者的学习成本。
基于上述常见的步骤,自动化机器学习的目标一般包括以下几点:
1. 半自动化的特征工程以及绘图功能
对自变量与因变量之间关系的分析,对各项指标的统计等任务自动化。另外,对特征的处理以及特征的构建等任务的半自动化,都可以降低整个工作所需要的时间成本。
2. 自动化的模型选择以及模型超参的调节过程
在风险控制领域一般会采用信用评分卡模型进行风险的评估。其原理是将模型特征经过WOE编码方式离散化之后运用logistic回归模型进行的二分类。在信用评分卡的建模过程会把主要的精力集中于对各个特征与目标变量之间关系的分析,在此基础上对自变量做筛选和编码,以达到较好的模型预测效果。但自动化学习提供了另外一种思路和参考方案:对特征的处理与模型的选择和优化的过程基于模型本身,从模型评分的角度衡量学习到知识的有效性。
在选择自动化学习工具的决策上,我们希望能够满足以下几点要求:
- 集成常用机器学习库(scikit-learn、xgboost等)
- 能够输出模型的pipeline
- 能够动态配置模型和参数的搜索域
基于以上几点原因,在参考了多个开源的自动化机器学习工具后,我们选择了TPOT作为自动化机器学习工具。
– 【TPOT简介】 –
TPOT是一款基于Python的自动选择、优化机器学习模型和参数的工具,其主要的工作流程如下:
TPOT的使用极其简单,只用声明相应的学习任务(分类或者回归),并在对应的训练样本上进行模型训练即可。
TPOT内部使用遗传算法完成对学习任务的选择和优化过程,其核心思想是:将要解决的问题模拟成一个生物进化的过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰掉适应度较低的解,增加适应度较高的解。在对样本群的不停的迭代过程中得到近优解。一般的,遗传算法包括以下几个步骤:
1. 编码与适应函数的定义
适应函数的定义取决于学习目标,对样本的编码方式取决于学习目标的解空间。TPOT会根据scikit-learn中的Transformer和Estimator对单个学习任务进行编码。针对不同的机器学习目标(分类或者回归),可以选择不同的适应度函数(Accuracy或者MSE等)
2. 选择:为了产生更好的种群,遗传算法使用了适者生存的淘汰标准,即拥有更高的评分的pipeline具有更大的几率存活下去。
3. 交叉:通过交换父类样本的编码从而产生子类的过程。
4. 变异:个体的某个编码片段或者某个编码点发生突变的过程。
– 【TPOT的缺点】 –
主要缺陷有以下2点:
1. 训练成本太大。
从TPOT的工作流可以看到,TPOT本身就是对多个学习任务进行训练、评价、进化或淘汰的过程。其训练时间除了模型本身的训练开销外,还有在整个学习任务群上进行遗传迭代的时间。
2. 训练得到的pipeline的可解释性较差
遗传算法本身没有较好的理论依据,其训练的过程体现的是对优秀样本的青睐,但优胜者是否具有可行的解释是一个需要衡量的问题。
基于以上两点缺陷,我们对自动化机器学习的定位是: 将数据科学家从部分耗费时间的任务(数据的分布分析、绘图、模型超参调节以及模型评估等)中解放出来,使其可以将更多精力投入到更重要的目标(特征工程、模型的衡量等)上去。
– 【目前进展】 –
对自动化机器学习系统的构建作为业余时间项目还处于构思&需求收集阶段。根据对自动化机器学习的定位,我们对系统的构建会在集成模型的自动化选择与优化的前提下,将更多的精力放置于对常见数据分析手段的自动化、数据分布以及模型检验过程的可视化等过程中。此外,也欢迎更多对本项目感兴趣的童鞋参与进来。