开源自动机器学习(AutoML)框架盘点

开发十年,就只剩下这套Java开发体系了 >>>   hot3.png

自从Google推出了能自动设计神经网络自我进化的AutoML论文后,我便开始持续关注这个领域

到目前为止,从网上显示的信息来看,深度学习这块大多没有实现的源码,还出于理论和论文阶段,而机器学习领域则产生了一些在一定程度上可以自动化的工具。

目前,在github上能实现一定程度auto ml的主要有如下几类:

1.tpot
    https://github.com/rhiever/tpot
    工作流程:
    开源自动机器学习(AutoML)框架盘点_第1张图片
    

    1.分析数据集的多项式特征(线性回归等);

    2.分析数据集的主成份(PCA);

    3.将多项式特征与主成份分析结果合并起来;

    4.使用GP算法反复迭代,选取交叉熵最小的组合;

    5.使用随机森林对结果分类;

    输出结果:

    最佳模型组合及其参数(python文件)和最佳得分

    优劣:

    tpot在数据治理阶段采用了PCA主成份分析,在模型选择过程中可以使用组合方法,分析的过程比起其他工具更科学,并能直接生成一个写好参数的python文件,但输出可参考的结果较少,不利于进一步分析。

2.auto_ml
    https://github.com/ClimbsRocks/auto_ml

    工作流程:

    1.首先自动将所有字段归一化;

   2.自动尝试选用tree-based models (DecisionTree, RandomForest, XGBoost/GradientBoosted trees, etc.), and regression models (LinearRegression, LogisticRegression, Ridge)等模型;

    3.系统不会自动筛除相关性较高的字段,所以需要自行手工预处理;

    4.自动将数据集划分为10等分,分别对每个子集计算特征值;

    5.random forest会报告广泛适用的特征,而regression models则会返回这些特征的权重;

    6.在树模型中,根据特征标准差的变化,得到特征的权重;

    7.深度学习模型作为插件(可选),使用深度学习模型学习特征,然后再使用Gradient Boosting作为预测,通常能让精度提高5%

    输出结果:

    最佳模型名称,字段的权重及得分情况,模型具体错误及得分情况

    优劣:

    auto_ml并未使用PCA和组合方法,所以分析速度很快,得到的分析结果也很详细,但分析方法较为单一,导致过拟合的风险也会增大;auto_ml也是目前唯一引入了深度学习做分析的框架,值得一试。

3.machineJS
    https://github.com/ClimbsRocks/machineJS

    machineJS其实与auto_ml都是同一个作者,这个家伙有点飘忽不定,一会说要放弃auto_ml,但实际观察发现auto_ml的热度要高于machineJS,所以这里就不再废话了。

4.auto_sklearn
    https://github.com/automl/auto-sklearn

    工作流程:

    开源自动机器学习(AutoML)框架盘点_第2张图片

     使用穷举法在有限的时间内逐个尝试最优模型,上图是它的架构体系,看的出来他的工作逻辑是目前的开源框架中最复杂的一款,步骤就不细说了,大体过程应该是与Tpot相似的

    输出结果:

    计算过程以及最终模型的准确率

    优劣:

    穷举法简单粗暴,但也是最靠谱的,如果时间充裕的情况下可以加大预算周期不断让机器尝试最优解,但输出结果太少,基本上对进一步数据分析的帮助不大

    不过据说auto-sklearn赢得了2017年的一次 AutoML Challenge,它的更新频率也很高,值得关注!

5.Parris

    https://github.com/jgreenemi/Parris

    严格来说Parris并不算是一款自动化机器学习的工具,而是当你确定好模型后的一款自动化调参工具

    不过调参也是很费神的,能自动化也不错!那就记下来吧。

6.ATM

    https://github.com/HDI-Project/ATM

    又新发现一款 ,mark一下,回头再补充内容 

大家还有什么好的自动化机器学习工具欢迎来拍砖!

你可能感兴趣的:(开源自动机器学习(AutoML)框架盘点)