Auto-sklearn 使用手册:从入门到精通
概述
Auto-sklearn 是一个基于 scikit-learn 的自动机器学习工具,它通过元学习和贝叶斯优化等技术,自动完成机器学习流程中的模型选择和超参数调优。本文将全面介绍 Auto-sklearn 的核心功能和使用方法。
Auto-sklearn 2.0 新特性
Auto-sklearn 2.0 版本引入了多项重大改进:
- 自动配置系统:能够自动设置最佳模型选择策略
- 高效算法:采用 Successive Halving 等高效的 bandit 策略
- 元学习优化:使用不依赖元特征的 Portfolios 技术提升元学习效率
使用方式与常规版本一致,只需导入特殊模块:
from autosklearn.experimental.askl2 import AutoSklearn2Classifier
资源限制配置
合理设置资源限制是使用 Auto-sklearn 的关键:
时间与内存限制
- 内存限制:通常 3GB-6GB 足够大多数数据集使用
- 时间限制:建议总时间限制设为 1 天,单次运行限制为 30 分钟
CPU 核心使用
默认使用单核运行,可通过配置实现并行计算(后文详述)。
数据压缩管理
Auto-sklearn 会自动尝试将数据集压缩到内存限制的 1/10,通过两种方式:
- 精度降低:减少数据精度
- 子采样:对数据进行采样
可通过以下方式控制:
# 完全关闭数据预处理
AutoSklearnClassifier(dataset_compression=False)
# 指定压缩方法
AutoSklearnClassifier(
dataset_compression={"methods": ["precision", "subsample"]}
)
# 调整内存分配比例
AutoSklearnClassifier(
dataset_compression={"memory_allocation": 0.2}
)
搜索空间定制
Auto-sklearn 默认搜索广泛的模型空间,但可以自定义:
限制搜索范围
automl = autosklearn.classification.AutoSklearnClassifier(
include={
'classifier': ["random_forest"],
'feature_preprocessor': ["no_preprocessing"]
},
exclude=None
)
关闭特定预处理
- 数据预处理:包括分类特征编码、缺失值填充等
- 特征预处理:如 PCA 等特征转换
模型选择策略
Auto-sklearn 提供多种模型选择方法:
重采样策略
支持 holdout 和交叉验证等不同验证方法。
自定义评估指标
可以定义并使用自己的评估指标进行模型选择。
集成学习
Auto-sklearn 使用 Caruana 等人提出的集成选择方法构建模型集成。
集成配置参数
ensemble_size
:集成最大规模(设为0则禁用集成)ensemble_nbest
:考虑用于集成的最佳模型数量max_models_on_disc
:磁盘上保留的最大模型数
集成结果分析
show_models()
:查看最终集成模型- 支持后验集成构建(先搜索单模型,再构建集成)
结果分析
训练完成后,可通过多种方式分析结果:
基础统计
sprint_statistics()
打印数据集名称、评估指标和最佳验证分数。
性能随时间变化
performance_over_time_
返回 DataFrame,可直接用于绘图分析。
模型评估
leaderboard()
显示集成成员信息,cv_results_
返回详细结果字典。
并行计算
基本配置
默认使用单核,可通过 n_jobs
参数配置多核并行。
线程控制
建议设置环境变量控制科学计算库的线程数:
export OPENBLAS_NUM_THREADS=1
export MKL_NUM_THREADS=1
export OMP_NUM_THREADS=1
其他重要功能
支持的数据类型
- 任务类型:二分类、多分类、多标签分类、回归、多输出回归
- 输入格式:numpy 数组、pandas DataFrame、稀疏矩阵、Python 列表
- 分类特征:需显式标记为分类类型
模型持久化
遵循 scikit-learn 的模型持久化方法。
经典模式
如需使用原始论文中的 Auto-sklearn 配置:
automl = autosklearn.classification.AutoSklearnClassifier(
ensemble_size=1,
initial_configurations_via_metalearning=0,
allow_string_features=False
)
通过本文介绍,您应该已经掌握了 Auto-sklearn 的核心功能和使用方法。合理配置各项参数,可以充分发挥 Auto-sklearn 的自动化优势,大幅提升机器学习工作效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考