auto-sklearn手册
手册
本手册从几个方面说明了如何使用auto-sklearn。并且 尽可能引用的例子来解释某些配置。官网首页.官网中文翻译
例子
auto-sklearn 下面的例子演示几个 方面的用法,他们都位于github:
时间和内存限制
auto-sklearn 的一个重要功能时限制内存与时间的使用。特别是对于大型数据集,算法可能要花费花几个小时进行计算,因此如何在一段时间后停止并进行评估是极其重要的,因为这是在合理的时间内取得进展的重要手段.因而资源限制则必须做到时间与模型数量之间的权衡.
虽然auto-sklearn减轻了手动超参数优化,但是用户自己仍然需要设置内存与时间限制.对与大多数数据集而言,主流现代计算机上的能够提供的内存上限一般是3GB或者6GB,这绝对足够auto-sklearn使用了。而对于时间设置,这里很难给出明确的指导方针,如果可能的话,一个好的默认值一般是一天的总时间限制,而一次运行的时间限制最好为30分钟.
可以在进一步的指导方针 auto-sklearn /问题/ 142 。
设置 Searchspace
设置 auto-sklearn searchspac,而非使用所有可用的内容。 下面的示例展示了如何只使用随机森林算法以及不适用数据的预处理算法。
>>> import autosklearn.classification
>>> automl = autosklearn.classification.AutoSklearnClassifier(
>>> include_estimators=["random_forest", ], exclude_estimators=None,
>>> include_preprocessors=["no_preprocessing", ], exclude_preprocessors=None)
>>> automl.fit(X_train, y_train)
>>> predictions = automl.predict(X_test)
注意: 用于识别算法与与处理算法的字符串后面不能跟着 ‘.py’。
对于一个完整列表请查看源代码( autosklearn /管道/组件/ ):
设置内存限制
ml_memory_limit(int)可选:
设置结果后会限制机器学习算法所使用的内存,单位为MB.当算法的内存使用超过该数字时,该算法将会被停止.*不过,一般内存消耗不大,不建议使用该选项),按照官网的建议,一般3GB或者6GB的主流个人计算机已经足够autosklearn使用了,所以一般不需要设置该函数.
关掉预处理
预处理在 auto-sklearn中共 分为数据预处理和 特征预处理功能两个功能。 数据预处理包括一个对分类特征的独热编码,对缺失值的处理,以及对特征和样本的归一化处理,这些步骤目前是无法关闭的.特征预处理则是一个单一的transformer(sklearn中对特征处理算法的称呼与机器学习算法 估计器estimator相对应),其实现了特征选择与将特征转换到不同空间(PCA).如前面的代码所示,这可以通过 include_preprocessors=[“no_preprocessing”, ]来关闭.
重采样策略
可以找到例子使用维持和交叉验证 auto-sklearn /example
并行计算
自动sklearn支持在共享文件系统上共享数据共享并行执行。在这种模式下,SMAC算法通过每次迭代后将其写入磁盘,共享其模型的训练数据。在每次迭代开始时,SMAC都会加载所有新发现的数据点。在示例目录中可以找到一个示例。
在默认模式下,自动sklearn已经使用了两个CPU核心。第一个用于模型构建,第二个用于构建一个集成,每次一个新的机器学习模型已经完成培训。示例目录中的文件example_UNK.py 描述了如何在每次只使用一个CPU内核的情况下按顺序运行这些任务。
此外,根据安装scikit-learn numpy, 模型建立过程可以使用所有的核心。 这样的行为并不是 auto-sklearn 故意设计的 ,它最有可能是由于numpy被安装 从 pypi 作为一个二进制的轮子( 在这里看到的 )(上面这句话,我也看不太懂)。 执行 export OPENBLAS_NUM_THREADS = 1
应该能够禁用这种行为并使numpy 一次只使用一个核心。
持久化模型 (模型的保存与加载)
auto-sklearn 主要是对scikit-learn的封装。 因此,它可以遵循scikit-learn中的 持久性的例子 。
简单的auto-sklearn
为了获得 符合 高效和健壮的自动化机器学习 的 简单有效的 auto-sklearn 可以设置 ensemble_size = 1
和 initial_configurations_via_metalearning = 0
:
>>> import autosklearn.classification
>>> automl = autosklearn.classification.AutoSklearnClassifier(
>>> ensemble_size=1, initial_configurations_via_metalearning=0)
根据一般验证集的表现,很多算法的集合总能得到当前数据集的最佳性能。将元学习的初始配置设置为零,使得自动sklearn使用常规的SMAC算法来表示新的超参数配置。