auto-sklearn手册
手冊(cè)
本手冊(cè)從幾個(gè)方面說(shuō)明了如何使用auto-sklearn。并且 盡可能引用的例子來(lái)解釋某些配置。官網(wǎng)首頁(yè).官網(wǎng)中文翻譯
例子
auto-sklearn 下面的例子演示幾個(gè) 方面的用法,他們都位于github:
- Holdout
- 交叉驗(yàn)證
- 并行計(jì)算
- 按照時(shí)序使用
- 回歸
- 連續(xù)和分類數(shù)據(jù)
- 使用自定義指標(biāo)
時(shí)間和內(nèi)存限制
auto-sklearn 的一個(gè)重要功能時(shí)限制內(nèi)存與時(shí)間的使用。特別是對(duì)于大型數(shù)據(jù)集,算法可能要花費(fèi)花幾個(gè)小時(shí)進(jìn)行計(jì)算,因此如何在一段時(shí)間后停止并進(jìn)行評(píng)估是極其重要的,因?yàn)檫@是在合理的時(shí)間內(nèi)取得進(jìn)展的重要手段.因而資源限制則必須做到時(shí)間與模型數(shù)量之間的權(quán)衡.
雖然auto-sklearn減輕了手動(dòng)超參數(shù)優(yōu)化,但是用戶自己仍然需要設(shè)置內(nèi)存與時(shí)間限制.對(duì)與大多數(shù)數(shù)據(jù)集而言,主流現(xiàn)代計(jì)算機(jī)上的能夠提供的內(nèi)存上限一般是3GB或者6GB,這絕對(duì)足夠auto-sklearn使用了。而對(duì)于時(shí)間設(shè)置,這里很難給出明確的指導(dǎo)方針,如果可能的話,一個(gè)好的默認(rèn)值一般是一天的總時(shí)間限制,而一次運(yùn)行的時(shí)間限制最好為30分鐘.
可以在進(jìn)一步的指導(dǎo)方針 auto-sklearn /問(wèn)題/ 142 。
設(shè)置 Searchspace
設(shè)置 auto-sklearn searchspac,而非使用所有可用的內(nèi)容。 下面的示例展示了如何只使用隨機(jī)森林算法以及不適用數(shù)據(jù)的預(yù)處理算法。
>>> 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)注意: 用于識(shí)別算法與與處理算法的字符串后面不能跟著 ‘.py’。
對(duì)于一個(gè)完整列表請(qǐng)查看源代碼( autosklearn /管道/組件/ ):
- 分類器
- 回歸
- 預(yù)處理器
設(shè)置內(nèi)存限制
ml_memory_limit(int)可選:
設(shè)置結(jié)果后會(huì)限制機(jī)器學(xué)習(xí)算法所使用的內(nèi)存,單位為MB.當(dāng)算法的內(nèi)存使用超過(guò)該數(shù)字時(shí),該算法將會(huì)被停止.*不過(guò),一般內(nèi)存消耗不大,不建議使用該選項(xiàng)),按照官網(wǎng)的建議,一般3GB或者6GB的主流個(gè)人計(jì)算機(jī)已經(jīng)足夠autosklearn使用了,所以一般不需要設(shè)置該函數(shù).
關(guān)掉預(yù)處理
預(yù)處理在 auto-sklearn中共 分為數(shù)據(jù)預(yù)處理和 特征預(yù)處理功能兩個(gè)功能。 數(shù)據(jù)預(yù)處理包括一個(gè)對(duì)分類特征的獨(dú)熱編碼,對(duì)缺失值的處理,以及對(duì)特征和樣本的歸一化處理,這些步驟目前是無(wú)法關(guān)閉的.特征預(yù)處理則是一個(gè)單一的transformer(sklearn中對(duì)特征處理算法的稱呼與機(jī)器學(xué)習(xí)算法 估計(jì)器estimator相對(duì)應(yīng)),其實(shí)現(xiàn)了特征選擇與將特征轉(zhuǎn)換到不同空間(PCA).如前面的代碼所示,這可以通過(guò) include_preprocessors=[“no_preprocessing”, ]來(lái)關(guān)閉.
重采樣策略
可以找到例子使用維持和交叉驗(yàn)證 auto-sklearn /example
并行計(jì)算
自動(dòng)sklearn支持在共享文件系統(tǒng)上共享數(shù)據(jù)共享并行執(zhí)行。在這種模式下,SMAC算法通過(guò)每次迭代后將其寫入磁盤,共享其模型的訓(xùn)練數(shù)據(jù)。在每次迭代開始時(shí),SMAC都會(huì)加載所有新發(fā)現(xiàn)的數(shù)據(jù)點(diǎn)。在示例目錄中可以找到一個(gè)示例。
在默認(rèn)模式下,自動(dòng)sklearn已經(jīng)使用了兩個(gè)CPU核心。第一個(gè)用于模型構(gòu)建,第二個(gè)用于構(gòu)建一個(gè)集成,每次一個(gè)新的機(jī)器學(xué)習(xí)模型已經(jīng)完成培訓(xùn)。示例目錄中的文件example_UNK.py 描述了如何在每次只使用一個(gè)CPU內(nèi)核的情況下按順序運(yùn)行這些任務(wù)。
此外,根據(jù)安裝scikit-learn numpy, 模型建立過(guò)程可以使用所有的核心。 這樣的行為并不是 auto-sklearn 故意設(shè)計(jì)的 ,它最有可能是由于numpy被安裝 從 pypi 作為一個(gè)二進(jìn)制的輪子( 在這里看到的 )(上面這句話,我也看不太懂)。 執(zhí)行 export OPENBLAS_NUM_THREADS = 1 應(yīng)該能夠禁用這種行為并使numpy 一次只使用一個(gè)核心。
持久化模型 (模型的保存與加載)
auto-sklearn 主要是對(duì)scikit-learn的封裝。 因此,它可以遵循scikit-learn中的 持久性的例子 。
簡(jiǎn)單的auto-sklearn
為了獲得 符合 高效和健壯的自動(dòng)化機(jī)器學(xué)習(xí) 的 簡(jiǎn)單有效的 auto-sklearn 可以設(shè)置 ensemble_size = 1 和 initial_configurations_via_metalearning = 0:
>>> import autosklearn.classification>>> automl = autosklearn.classification.AutoSklearnClassifier(>>> ensemble_size=1, initial_configurations_via_metalearning=0)根據(jù)一般驗(yàn)證集的表現(xiàn),很多算法的集合總能得到當(dāng)前數(shù)據(jù)集的最佳性能。將元學(xué)習(xí)的初始配置設(shè)置為零,使得自動(dòng)sklearn使用常規(guī)的SMAC算法來(lái)表示新的超參數(shù)配置。
總結(jié)
以上是生活随笔為你收集整理的auto-sklearn手册的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 理解朴素贝叶斯
- 下一篇: auto-sklearn简介