自動機器學習框架之一 Auto Sklearn

2021-09-14 03:23:46 字數 2389 閱讀 2813

當我們做完了特徵工程之後,就可以代入模型訓練和**,對於模型的選擇及調參,主要根據分析者的經驗。在具體使用時,經常遇到同一批資料,同一種模型,不同的分析者得出的結果相差很多。

前面學習了幾種常用的機器學習方法原理以及適用場景,對於完全沒有經驗的開發者,只要有足夠時間,嘗試足夠多的演算法和引數組合,理論上也能達到最優的訓練結果,同理程式也能實現該功能,並通過演算法優化該過程,自動尋找最優的模型解決方案,即自動機器學習框架。

auto-sklearn主要基於sklearn機器學習庫,使用方法也與之類似,這讓熟悉sklearn的開發者很容易切換到auto-sklearn。在模型方面,除了sklearn提供的機器學習模型,還加入了xgboost演算法支援;在框架整體調優方面,使用了貝葉斯優化。

auto-sklearn需要基於python3.5以上版本,且依賴swig,因此需要先安裝該庫,具體方法如下:

$ sudo apt-get install build-essential swig

$ pip install auto-sklearn

$ git clone
通常情況下,我們只能依據個人的經驗,基於機器效能、特徵多少、資料量大小、演算法以及迭代次數來估計模型訓練時間,而auto-sklearn支援設定單次訓練時間和總體訓練時間,使得工具既能限制訓練時間,又能充分利用時間和算力。

auto-sklearn支援切分訓練/測試集的方式,也支援使用交叉驗證。從而減少了訓練模型的**量和程式的複雜程度。另外,auto-sklearn支援加入擴充套件模型以及擴充套件**處理方法,具體用法可參見其原始碼example中的示例。

其缺點是auto-sklearn輸出攜帶的資訊較少,如果想進一步訓練只能重寫**。

本例使用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

# 謝彥技術部落格

auto-sklearn支援的引數較多,以分類器為例,引數及其預設值如下圖所示:

下面介紹其常用引數,分為四個部分:

(1) 控制訓練時間和記憶體使用量

引數預設訓練總時長為一小時(3600),一般使用以下引數按需重置,單位是秒。

(2) 模型儲存

引數預設為訓練完成後刪除訓練的暫存目錄和輸出目錄,使用以下引數,可指定其暫存目錄及是否刪除。

(3) 資料切分

使用resampling_strategy引數可設定訓練集與測試集的切分方法,以防止過擬合,用以下方法設定五折交叉驗證:

用以下方法設定將資料切分為訓練集和測集,其中訓練集資料佔2/3。

(4) 模型選擇

引數支援指定備選的機器學習模型,或者從所有模型中去掉一些機器學習模型,這兩個引數只需要設定其中之一。

auto-sklearn除了支援sklearn中的模型以外,還支援xgboost模型。具體模型及其在auto-sklearn中對應的名稱可通過檢視原始碼中具體實現方法獲取,通過以下目錄內容檢視支援的分類模型:autosklearn/pipeline/components/classification/,可看到其中包含:adaboost、extra_trees、random_forest、libsvm_svc、xgradient_boosting等方法。

自動機器學習框架之二 AutoML

auto ml auto machine learning 自動機器學習是個寬泛的概念,有不只乙個軟體以此命名,本篇介紹的auto ml並非谷歌基於雲平台的 automl。本篇介紹的auto ml也是一款開源的離線工具,它的優勢在於簡單快速,且輸出資訊比較豐富。它預設支援keras tensorfl...

自動機器學習框架之三 Auto Keras

對於訓練深度學習,設計神經網路結構是其中技術含高最高的任務,優秀的網路架構往往依賴建構模型的經驗,專業領域知識,以及大量的算力試錯。實際應用中往往基於類似功能的神經網路微調生成新的網路結構。auto keras是乙個離線使用的開源庫,用於構建神經網路結構和搜尋超引數,支援rnn,cnn神經網路,它使...

自動機器學習簡述(AutoML)

一 為什麼需要自動機器學習 二 超引數優化 hyper parameter optimization 三 元學習 meta learning 四 神經網路架構搜尋 neural architecture search 五 自動化特徵工程 六 其它自動機器學習工具集 對於機器學習的新使用者而言,使用機...