典型的機器學(xué)習(xí)模型包括以下步驟: 從上面這一些列流程可以看出,實現(xiàn)機器學(xué)習(xí)模型所涉及的復(fù)雜性和學(xué)習(xí)量都是不小的。并且在選擇最佳模型之前,它還需要廣泛的領(lǐng)域?qū)I(yè)知識來生成和比較多個模型,最終才能獲得最佳模型來實現(xiàn)我們的最終目標(biāo)。 而自動機器學(xué)習(xí)AutoML生來就是來簡化以上繁瑣的過程,AutoML 被用于自動化構(gòu)建整個機器學(xué)習(xí)管道的過程,而人工干預(yù)最少。 AutoML 在結(jié)構(gòu)化數(shù)據(jù)上表現(xiàn)良好,即當(dāng)列名清晰標(biāo)記且數(shù)據(jù)格式正確時。由于這些工具執(zhí)行插補和歸一化,它們可以輕松處理數(shù)據(jù)集中的缺失值或偏度。 當(dāng)我們需要對模型進行快速評估時,AutoML 的表現(xiàn)非常出色。與較大的數(shù)據(jù)集相比,使用 AutoML 顯然可以更快地訓(xùn)練中小型數(shù)據(jù)集。在更大和更復(fù)雜的數(shù)據(jù)集上選擇使用 AutoML 顯得不是那么明智,因為它可能會因為使用更多資源而變得昂貴,或者由于超參數(shù)調(diào)整和模型優(yōu)化的多次實驗而可能非常緩慢。所以大家按需使用。 到這里,小猴子將和大家一起探索 AutoGluon 自動執(zhí)行機器學(xué)習(xí)任務(wù)的不同功能。即使用 AutoGluon 以及它支持的其他預(yù)測類別來實現(xiàn)表格數(shù)據(jù)預(yù)測。我們將搞明白在使用 AutoGluon 時如何為特定機器學(xué)習(xí)任務(wù)獲得最合適的模型。 AutoGluon有如下優(yōu)勢: AutoGluon 繼為機器學(xué)習(xí)的初學(xué)者也是為專家而設(shè)計。該工具涵蓋了深度學(xué)習(xí)、自動堆棧集成以及文本、圖像和表格數(shù)據(jù)的實際應(yīng)用程序。 官方支持在 Linux 、 Mac 和Windows操作系統(tǒng)安裝。需要注意的是,在linux系統(tǒng)上使用較為方案,在Mac 和Windows上安裝或多或少有些許麻煩,需要注意的事項較多,建議根據(jù)官方教程進行安裝,有關(guān) AutoGluon 及其不同版本的安裝的所有詳細信息都在這里AutoGluon官方安裝教程 [10]。 AutoGluon 可用于以下類別: 將使用 Stroke 預(yù)測數(shù)據(jù)集。你可以從Kaggle[11]下載數(shù)據(jù)集。 ((3423, 12), (1687, 12)) 從新創(chuàng)建的測試集中刪除目標(biāo)結(jié)果列。 現(xiàn)在,我們構(gòu)建一個分類器來訓(xùn)練具有給定條件的個體是否可能有中風(fēng)的風(fēng)險。指定 該步驟將打印出很長的日志,我們截取其中一部分,觀察得到,即使我們沒有指定問題的類型,AutoGluon 也正確理解這是一個基于結(jié)果列中兩個唯一標(biāo)簽'0'和'1'的二元分類問題。 此外,還可以看到 AutoGluon 恰當(dāng)?shù)貫榇朔诸惾蝿?wù)選擇了 分類器訓(xùn)練完成后,可以使用以下命令打印它訓(xùn)練過的模型的摘要。 本次示例中,AutoGluon 訓(xùn)練了 24 個模型,但我們更感興趣的是找出 AutoGluon 選擇的最佳模型。而我們只需使用 是否能夠輸出特征重要性,也是大家非常關(guān)注的一點。在AutoGluon中,也是輕松實現(xiàn)。 在這里我們可以看到,它已將年齡和 bmi 確定為預(yù)測結(jié)果的最重要因素。 接下來,將測試數(shù)據(jù)提供給分類器進行預(yù)測,可以將預(yù)測結(jié)果存儲在 DataFrame 中。 要了解評估指標(biāo) 從結(jié)果看,在 AutoGluon 中進行了數(shù)據(jù)預(yù)處理和特征工程,模型訓(xùn)練過程也包括了交叉驗證。因此,我們只用兩行代碼就得到了 我們嘗試另一個示例來探索 AutoGluon 如何處理回歸問題。這里我們將使用 sklearn 數(shù)據(jù)集庫中的“波士頓價格”數(shù)據(jù)集。本次執(zhí)行步驟與分類類似。 拆分數(shù)據(jù)集 從測試數(shù)據(jù)集中刪除目標(biāo)列。 設(shè)置預(yù)測器(回歸器) 本例中,AutoGluon 也根據(jù)列的 對于回歸問題,AutoGluon 訓(xùn)練了 11 個模型并推薦 預(yù)測器的語法在分類和回歸問題中是相同的。從結(jié)果看,AutoGluon TabularPrediction 任務(wù)在不同的數(shù)據(jù)集上運行良好。為了簡化演示,我們選擇了較小的數(shù)據(jù)集,你可以試試它在使用更大的數(shù)據(jù)集時的表現(xiàn)會有怎么的驚喜。 最后,簡要介紹一下 AutoGluon 中的其他可用選項。 從穩(wěn)重我們可以看到, AutoML 框架在構(gòu)建機器學(xué)習(xí)管道上非常簡單而高效。它可用于減少創(chuàng)建可用于生產(chǎn)的 ML 模型所需的時間,并且具有顯著的簡單性和效率。這加快了整個 ML 流程,從而為數(shù)據(jù)科學(xué)家騰出時間,更加專注于尋找現(xiàn)實問題的解決方案。 使用 AutoML 的最大好處可以歸因于它能夠自主地在各種數(shù)據(jù)集上訓(xùn)練和測試多種現(xiàn)有機器學(xué)習(xí)算法。此外,需要注意的是,使用 AutoML 并不會消除對整個建模過程的基本信息的理解需要,包括模型訓(xùn)練、數(shù)據(jù)基本信息和期望結(jié)果等。因此,AutoML 的成功可能取決于它在多長時間內(nèi)被接受、采用以及它為某個行業(yè)帶來的切實利益。 AutoGluon: https://auto.gluon.ai/stable/index.html TPOT: http://epistasislab.github.io/tpot/ H2O AutoML: https://www.h2o.ai/products/h2o-automl/ Auto-sklearn: https://automl.github.io/auto-sklearn/master/ MLBox: https://mlbox.readthedocs.io/en/latest/ AutoWEKA: https://www.cs.ubc.ca/labs/beta/Projects/autoweka/ Auto-PyTorch: https://github.com/automl/Auto-PyTorch Autokeras: https://autokeras.com/ MLJAR: https://mljar.com/automl/ AutoGluon官方安裝教程 : https://auto.gluon.ai/stable/install.html Stroke數(shù)據(jù)集: https://www.kaggle.com/fedesoriano/stroke-prediction-dataset BERT: https://arxiv.org/pdf/1810.04805.pdf ALBERT: https://arxiv.org/pdf/1909.11942.pdf ELECTRA: https://openreview.net/pdf?id=r1xMH1BtvB這是自動機器學(xué)習(xí)系列文章的第10篇。?為便于理解,本文主要分為兩個部分。第一部分介紹 AutoML 的背景信息,并比較下近期較為流行的AutoML框架,第二部分介紹 AutoGluon(AutoML 框架之一)的端到端示例用例??靵砗托『镒右黄饘W(xué)習(xí)吧!?
AutoML 的基礎(chǔ)知識
一些流行的 AutoML 框架
一文徹底搞懂自動機器學(xué)習(xí)AutoML:TPOT
一文徹底搞懂自動機器學(xué)習(xí)AutoML:H2O
不寫代碼也能玩自動機器學(xué)習(xí)AutoML:H2O Flow
一文徹底搞懂自動機器學(xué)習(xí)AutoML:Auto-SklearnAutoML適用場景
AutoGluon 基礎(chǔ)
安裝和使用
pip3 install -U pip
pip3 install -U setuptools wheel
# CPU版本的pytorch占用空間更小
# 請參閱pytorch文檔中的安裝說明 --> https://pytorch.org/get-started/locally/
pip3 install torch==1.10.1+cpu -f https://download.pytorch.org/whl/cpu/torch_stable.html
pip3 install autogluonAutoGluon 分類實例
數(shù)據(jù)準備
from pandas as pd
#拆分數(shù)據(jù)集
from sklearn.model_selection import train_test_split
#處理表格數(shù)據(jù)并訓(xùn)練模型
from autogluon.tabular import TabularDataset, TabularPredictor
df=pd.read_csv('/content/healthcare-dataset-stroke-data.csv')
# 分成訓(xùn)練集和測試集
df_train,df_test=train_test_split(df,test_size=0.33,random_state=1)
df_train.shape, df_test.shapedf.head()
test_data=df_test.drop(['stroke'],axis=1)
test_data.head()模型訓(xùn)練
“stroke”
目標(biāo)列,并在訓(xùn)練數(shù)據(jù)集上訓(xùn)練分類器。參數(shù)(可選)'verbosity=2'
將顯示預(yù)測器為達到最佳模型而采取的所有步驟,而 'presets='best_qualit''
將確保從訓(xùn)練的模型中選擇最佳模型。官方文檔中還提到了其他附加參數(shù),可用于微調(diào)模型。predictor = TabularPredictor(label ='stroke')
predictor.fit(train_data = df_train,
verbosity = 2,
presets='best_quality')'accuracy'
指標(biāo)。最佳模型
predictor.fit_summary()
leaderboard()
命令即能查看到按順序排列訓(xùn)練好的模型。predictor.leaderboard(
df_train,silent=True)特征重要性
predictor.feature_importance(
data=df_train)模型預(yù)測
y_pred = predictor.predict(test_data)
y_pred=pd.DataFrame(y_pred,columns=['stroke'])
y_pred #打印DataFrame模型評估
'accuracy'
,讓我們打印它的詳細信息。predictor.evaluate(df_test)
95%
準確率的訓(xùn)練分類器(用于分類器訓(xùn)練和預(yù)測)。如果它是一個傳統(tǒng)的 ML 模型,我們將花費很長時間來完成整個過程,包括 EDA、數(shù)據(jù)清理以及設(shè)置多個模型的編碼。由此可見,AutoGluon 讓這一切變得非常簡單。AutoGluon 回歸實例
數(shù)據(jù)準備
#導(dǎo)入數(shù)據(jù)集
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
boston= load_boston()
boston.keys()
print(boston.DESCR)#使用此命令了解數(shù)據(jù)集的更多信息
df=pd.DataFrame(data=boston.data,columns=boston.feature_names)
#將價格列添加到數(shù)據(jù)框
df['PRICE'] = boston.target
df.head()# 分成訓(xùn)練測試集
df_train,df_test = train_test_split(df, test_size=0.33, random_state=1)
df_train.shape,df_test.shape((339, 14), (167, 14))
test_data=df_test.drop(['PRICE'],axis=1)
test_data.head()模型訓(xùn)練
predictor= TabularPredictor(label ='PRICE')
predictor.fit(train_data = df_train,
verbosity = 2,
presets='best_quality')
predictor.leaderboard(df_train,silent=True)模型預(yù)測
# 進行預(yù)測
y_pred = predictor.predict(test_data)dtype=float
和多個唯一值的存在正確地將問題類型識別為回歸。并且它還恰當(dāng)?shù)剡x擇了評估指標(biāo) 'root_mean_squared_error'
kNN (KNeighborsDist_BAG_L1)
作為最佳模型,其次是 XGBoost (XGBoost_BAG_L1)
。AutoGluon 中的其他用例
'fit()'
命令根據(jù)圖像內(nèi)容對圖像進行分類,從而自動生成高質(zhì)量的圖像分類模型。'fit()'
命令的選項,該命令將自動生成高質(zhì)量的目標(biāo)檢測模型,用于識別圖像中目標(biāo)的存在和位置。'fit()'
命令來自動生成高質(zhì)量的文本預(yù)測模型。數(shù)據(jù)中的每個訓(xùn)練示例可能是一個句子、一個短段落、文本中存在的一些附加數(shù)字/分類特征。一次調(diào)用 'predictor.fit()'
命令可以在給定的文本數(shù)據(jù)集上訓(xùn)練高度準確的神經(jīng)網(wǎng)絡(luò),其中用于預(yù)測的目標(biāo)值或標(biāo)簽可能是連續(xù)值或單個類別。盡管 TextPredictor 僅設(shè)計用于分類和回歸任務(wù),但如果數(shù)據(jù)被正確格式化為結(jié)構(gòu)化數(shù)據(jù)表,它也可以直接用于其他 NLP 任務(wù)。TextPredictor 僅使用 Transformer 神經(jīng)網(wǎng)絡(luò)模型。這些通過從BERT[12]、ALBERT[13]和 ELECTRA[14]等預(yù)訓(xùn)練 NLP 模型列表中遷移學(xué)習(xí)來擬合提供的數(shù)據(jù)。它還允許對包含文本、數(shù)字和分類列的多模態(tài)數(shù)據(jù)表以及可以通過超參數(shù)優(yōu)化 (HPO) 自動調(diào)整的神經(jīng)網(wǎng)絡(luò)超參數(shù)進行訓(xùn)練。寫在最后
參考資料