美文网首页机器学习爱好者
自动机器学习框架之一_Auto-Sklearn

自动机器学习框架之一_Auto-Sklearn

作者: xieyan0811 | 来源:发表于2019-03-30 14:08 被阅读0次

     当我们做完了特征工程之后,就可以代入模型训练和预测,对于模型的选择及调参,主要根据分析者的经验。在具体使用时,经常遇到同一批数据,同一种模型,不同的分析者得出的结果相差很多。

     前面学习了几种常用的机器学习方法原理以及适用场景,对于完全没有经验的开发者,只要有足够时间,尝试足够多的算法和参数组合,理论上也能达到最优的训练结果,同理程序也能实现该功能,并通过算法优化该过程,自动寻找最优的模型解决方案,即自动机器学习框架。

     我们将在未来的三周里分别为大家介绍三个常用的机器学习框架:auto-sklearn、auto-ml 和 auto-keras。

     Auto-Sklearn主要基于sklearn机器学习库,使用方法也与之类似,这让熟悉sklearn的开发者很容易切换到Auto-Sklearn。在模型方面,除了sklearn提供的机器学习模型,还加入了xgboost算法支持;在框架整体调优方面,使用了贝叶斯优化。

    (转载请注明出处:https://www.jianshu.com/p/cd775730a1ec

    1. 安装

     Auto-sklearn需要基于python3.5以上版本,且依赖swig,因此需要先安装该库,具体方法如下:

    $ sudo apt-get install build-essential swig
    $ pip install auto-sklearn
    

     由于关于auto-sklearn的文档和例程不多,推荐下载auto-sklearn的源码,并阅读其中的example和doc,以便更多地了解auto-sklearn的功能和用法。

    $ git clone https://github.com/automl/auto-sklearn.git
    

    2. Auto-Sklearn 的优缺点

     通常情况下,我们只能依据个人的经验,基于机器性能、特征多少、数据量大小、算法以及迭代次数来估计模型训练时间,而Auto-Sklearn支持设置单次训练时间和总体训练时间,使得工具既能限制训练时间,又能充分利用时间和算力。

     Auto-Sklearn支持切分训练/测试集的方式,也支持使用交叉验证。从而减少了训练模型的代码量和程序的复杂程度。另外,Auto-Sklearn支持加入扩展模型以及扩展预测处理方法,具体用法可参见其源码example中的示例。

     其缺点是Auto-Sklearn输出携带的信息较少,如果想进一步训练只能重写代码。

    3. 举例

     本例使用96年美国大选数据,将”投票vote”作为因变量,它有只0/1两种取值,因此使用分类方法AutoSklearnClassifier,例程中将训练时间指定为两分钟,模型指定为只选择随机森机random_forest,训练后输出其在训练集上的打分score。

    import autosklearn.classification
    import statsmodels.api as sm
    
    data = sm.datasets.anes96.load_pandas().data
    label = 'vote'
    features = [i for i in data.columns if i != label]
    X_train = data[features]
    y_train = data[label]
    automl = autosklearn.classification.AutoSklearnClassifier(
    time_left_for_this_task=120, per_run_time_limit=120, # 两分钟
        include_estimators=["random_forest"])
    automl.fit(X_train, y_train)
    print(automl.score(X_train, y_train))
    # 返回结果: 0.94173728813559321
    # 谢彦技术博客
    

    4.关键参数

     Auto-sklearn支持的参数较多,以分类器为例,参数及其默认值如下图所示:

     下面介绍其常用参数,分为四个部分:

    (1) 控制训练时间和内存使用量

     参数默认训练总时长为一小时(3600),一般使用以下参数按需重置,单位是秒。

    • time_left_for_this_task:设置所有模型训练时间总和
    • per_run_time_limit:设置单个模型训练最长时间
    • ml_memory_limit:设置最大内存用量

    (2) 模型存储

     参数默认为训练完成后删除训练的暂存目录和输出目录,使用以下参数,可指定其暂存目录及是否删除。

    • tmp_folder:暂存目录
    • output_folder:输出目录
    • delete_tmp_folder_after_terminate:训练完成后是否删除暂存目录
    • delete_output_folder_after_terminate:训练完成后是否删除输出目录
    • shared_mode:是否共享模型

    (3) 数据切分

     使用resampling_strategy参数可设置训练集与测试集的切分方法,以防止过拟合,用以下方法设置五折交叉验证:

    • resampling_strategy='cv'
    • resampling_strategy_arguments={'folds': 5}

     用以下方法设置将数据切分为训练集和测集,其中训练集数据占2/3。

    • resampling_strategy='holdout',
    • resampling_strategy_arguments={'train_size': 0.67}

    (4) 模型选择

     参数支持指定备选的机器学习模型,或者从所有模型中去掉一些机器学习模型,这两个参数只需要设置其中之一。

    • include_estimators:指定可选模型
    • exclude_estimators:从所有模型中去掉指定模型

     auto-sklearn除了支持sklearn中的模型以外,还支持xgboost模型。具体模型及其在auto-sklearn中对应的名称可通过查看源码中具体实现方法获取,通过以下目录内容查看支持的分类模型:autosklearn/pipeline/components/classification/,可看到其中包含:adaboost、extra_trees、random_forest、libsvm_svc、xgradient_boosting等方法。

    相关文章

      网友评论

        本文标题:自动机器学习框架之一_Auto-Sklearn

        本文链接:https://www.haomeiwen.com/subject/jwbjbqtx.html