基于遗传规划的自动机器学习机器学习
自动机器学习(Automated/Automatic Machine Learning, AutoML)做为近年来逐渐兴起的热门研究领域,旨在下降机器学习的门槛,使其更加易用。性能
通常而言,一个完整的机器学习(特别是监督式机器学习)工做流一般包含如下部分,数据清洗,特征工程,模型选择,训练测试以及超参数调优。每一道工序都有至关多的实现选项,且工序之间相互影响,共同决定最终的模型性能。学习
对于机器学习使用者而言,针对具体任务设计实现合适的工做流并不容易,在不少状况下可能会耗费大量的时间进行迭代。AutoML 的目标即是尽量地使以上的过程自动化,从而下降使用者的负担。测试
本次咱们要同你们分享的是近年来在 AutoML 领域内比较有影响力的一个工做,基于树表示的工做流优化(Tree-based Pipeline Optimization Tool, TPOT)。优化
TPOT 的做者为 Randal S. Olson 等人,相关文献为 [1] (2016 EvoStar Best Paper) 和[2] (2016 GECCO Best Paper),咱们在这里将两篇文献的内容统一为你们做介绍。设计
▲ 图1:机器学习工做流中被TPOT优化的部分blog
如图 1 所示,TPOT 但愿从总体上自动优化机器学习的工做流 。在 TPOT 中,一个工做流被定义为一棵树,树上每个非叶子节点为操做(Operator)节点,叶子节点则为数据节点。数据集从叶子节点流入,通过操做节点进行变换,最终在根节点处进行分类/回归,图 2 给出了一个例子。ip
▲ 图2:基于树表示的工做流的一个例子ci
TPOT 一共定义了 4 种操做节点类型(见图 3),分别是预处理、分解/降维、特征选择以及学习模型。这些操做的底层实现均是基于 Python 的机器学习库 scikit-learn。工作流
▲ 图3:TPOT操做节点类型
有了以上基于树的表示,TPOT 直接利用遗传规划(具体来讲,是 Python 库 DEAP 中的 GP 实现)对工做流进行优化。在搜索过程当中,任一工做流首先在训练集上训练,而后在独立的验证集上评估(另外一种更为耗时的选项是交叉验证)。在搜索结束后,TPOT 将返回最好的工做流所对应的代码。