自动机器学习框架auto-sklearn基础编程案例

1. 引入

德国科学家在2015年时,在NIPS会议上发表了关于“自动机器学习框架”的方法(参考2),并开源了一个叫做auto-sklearn的项目(参考1)。在2020年,他们又对这个auto-sklearn框架进行了优化(参考3)。

初步看来,auto-sklearn能自动选择sklearn中不同模型,并最终找出最优的ensemble多模型集成学习方案。

2. 安装

参考4中给出了安装方法,需要python3.6以上的版本。

  1. ubuntu上的安装步骤
sudo apt-get install build-essential swig python3-dev
pip3 install auto-sklearn

auto-sklearn依赖swig,所以要先安装swig,这是个多语言编程兼容的库。

  1. 使用conda安装
conda install gxx_linux-64 gcc_linux-64 swig

参考4中还给出了使用docker等进行安装的更多安装方式,这里不再赘述。

3. 代码示例

下面给出一个简单的示例代码(来源于auto-sklearn源码中的example,简单修改并增加注释),代码含义及关键参数解释见注释。

# step-01: 导入第三方库
import sklearn.datasets
import sklearn.metrics
import autosklearn.classification

# step-02: 使用sklearn加载breast_cancer数据集
X, y = sklearn.datasets.load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test =  sklearn.model_selection.train_test_split(X, y, random_state=1)
print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
# (426, 30) (143, 30) (426,) (143,)

# step-03: 训练模型
automl = autosklearn.classification.AutoSklearnClassifier(
    time_left_for_this_task=120, # 寻找合适模型的总时间(按秒计算)
    per_run_time_limit=30, # 留给每个模型运行、调优的时间(按秒计算)
    tmp_folder='tmp/autosklearn_classification_example_tmp', # 配置文件、log文件存储路径
)
automl.fit(X_train, y_train, dataset_name='breast_cancer')


# step-04: 最终给出的ensemble模型的细节
print(automl.show_models())


# step-05: Accuracy
predictions = automl.predict(X_test)
print("Accuracy score:", sklearn.metrics.accuracy_score(y_test, predictions))

上面第4步这里给出出了最终ensemble的模型,包括extra_tree,mlp,random_forest,gradient_boosting,以及他们的参数细节,看上去还是挺复杂的。最终在测试集上的准确率为 0.951048951048951。

4. 模型持久化

可使用joblib对auto-sklearn给出的ensemble模型做持久化,示例代码如下:

import joblib as jl

jl.dump(automl, 'automl.jl')
m2 = jl.load('automl.jl')
predictions = m2.predict(X_test)
print("Accuracy score:", sklearn.metrics.accuracy_score(y_test, predictions))

5. 关于auto-sklearn更多有价值的参考

auto-sklearn项目描述和官网上给出的tutorial都比较少,查了不少参考资料后,发现的好资料如下:

  1. api文档:https://automl.github.io/auto-sklearn/master/index.html

  2. 原理:两篇文章,参考2,参考3

  3. 样例代码:https://github.com/automl/auto-sklearn/tree/master/examples

6. 总结

本文给出了安装、使用auto-sklearn的简单案例,以及更多有价值的参考资料。

机器学习的实际应用过程中,会花掉大量时间做模型选择,参数调优,多模型集成学习ensemble。

auto-sklearn能把上面提到这些比较耗时的体力活都自动做完,这也是它最大的优势。

当然,从笔者的实验看来,auto-sklearn最终得到的模型,持久化后size都比较大,哪怕只在简单数据集上进行训练。

7. 参考

  1. https://github.com/automl/auto-sklearn
  2. https://proceedings.neurips.cc/paper/2015/file/11d0e6287202fced83f79975ec59a3a6-Paper.pdf
  3. https://arxiv.org/abs/2007.04074
  4. https://automl.github.io/auto-sklearn/master/installation.html

你可能感兴趣的:(Machine,Learning,Python,机器学习,深度学习,人工智能,python)