基于遗传规划的自动机器学习
自动机器学习(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优化的部分
如图 1 所示,TPOT 希望从整体上自动优化机器学习的工作流 。在 TPOT 中,一个工作流被定义为一棵树,树上每一个非叶子节点为操作(Operator)节点,叶子节点则为数据节点。数据集从叶子节点流入,经过操作节点进行变换,最终在根节点处进行分类/回归,图 2 给出了一个例子。
▲ 图2:基于树表示的工作流的一个例子
TPOT 一共定义了 4 种操作节点类型(见图 3),分别是预处理、分解/降维、特征选择以及学习模型。这些操作的底层实现均是基于 Python 的机器学习库 scikit-learn。
▲ 图3:TPOT操作节点类型
有了以上基于树的表示,TPOT 直接利用遗传规划(具体来说,是 Python 库 DEAP 中的 GP 实现)对工作流进行优化。在搜索过程中,任一工作流首先在训练集上训练,然后在独立的验证集上评估(另一种更为耗时的选项是交叉验证)。在搜索结束后,TPOT 将返回最好的工作流所对应的代码。
TPOT 的一个潜在问题在于可能会产生过于复杂的工作流,从而导致过拟合。针对这个问题,论文 [2] 对 TPOT 作出了拓展,将工作流复杂度(即包含的操作节点个数)作为第二个优化目标,提出了 TPOT-Pareto,其使用了类似于 NSGA 中所采用的选择算子。
▲ 图4:部分实验结果
论文 [1] 和 [2] 在很多任务上对 TPOT 和 TPOT-Pareto 进行了评估,实验结果(图 4 给出了在 UCI 数据集上的部分实验结果,其中 Random Forest 包含了 500 棵决策树,TPOT-Random 采用了随机搜索而不是 GP)表明了 TPOT 系的方法在很多任务上都能取得不错的效果。
▲ 图5:工作流复杂度对比
图 5 给出了不同方法得到的模型的复杂度,可以看出 TPOT-Pareto 确实能得到更为精简的工作流。一个比较有趣的问题是采用随机搜索的 TPOT-random 在很多任务上(以更高的工作流复杂度)也能够达到 TPOT 以及 TPOT-Pareto 相当的效果。
TPOT 项目已经开源,且仍在开发迭代中,目前整个社区相当活跃,已经有了 4000+ 的 star 和 680+ 的 fork。
TPOT项目地址:
https://ift.tt/2b9XOFK
参考文献
[1] Olson, Randal S., et al. "Automating biomedical data science through tree-based pipeline optimization." European Conference on the Applications of Evolutionary Computation. Springer, Cham, 2016.
[2] Olson, Randal S., et al. "Evaluation of a tree-based pipeline optimization tool for automating data science." Proceedings of the Genetic and Evolutionary Computation Conference 2016. ACM, 2016.
没有评论:
发表评论