天天看點

自動機器學習架構auto-sklearn基礎程式設計案例1. 引入2. 安裝3. 代碼示例4. 模型持久化5. 關于auto-sklearn更多有價值的參考6. 總結7. 參考

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

繼續閱讀