成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

AutoML領(lǐng)域開源開發(fā)利器AutoGloon之實(shí)戰(zhàn)演練

譯文 精選
人工智能 開源
AutoGloon是一個(gè)由亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)創(chuàng)建的開源機(jī)器學(xué)習(xí)庫(kù)。它旨在為你處理整個(gè)ML過程;具體來(lái)說,這包括從準(zhǔn)備數(shù)據(jù)到選擇最佳模型并調(diào)整其設(shè)置的整個(gè)過程。

譯者 | 朱先忠

審校 | 重樓

通過本文,你將了解如何借助開源庫(kù)AutoGloon成功勝出Kaggle競(jìng)賽并學(xué)習(xí)擊敗其他對(duì)手的技巧。此外,你還會(huì)了解到基于AutoGloon框架僅需4行代碼足可以擊敗99%的數(shù)據(jù)科學(xué)家。

引言

在兩項(xiàng)受歡迎的Kaggle比賽中,AutoGloon僅在對(duì)原始數(shù)據(jù)進(jìn)行了4小時(shí)的訓(xùn)練后就擊敗了99%的參賽數(shù)據(jù)科學(xué)家(AutoGloon團(tuán)隊(duì),《AutoGloon:將AutoML用于文本、圖像和表格數(shù)據(jù)》,2020年)。

上面這句話摘自AutoGloon的研究論文(https://arxiv.org/abs/2003.06505),完整地概括了我們本文將要探索的內(nèi)容:一個(gè)機(jī)器學(xué)習(xí)框架,它以最少的編碼實(shí)現(xiàn)了令人印象深刻的性能。你只需要四行代碼就可以建立一個(gè)完整的ML管道;否則,這項(xiàng)任務(wù)可能需要數(shù)小時(shí)。是的,只有四行代碼!你不妨先一睹為快:

from autogluon.tabular import TabularDataset, TabularPredictor
train_data = TabularDataset('train.csv')
predictor = TabularPredictor(label='Target').fit(train_data, 
presets='best_quality')
predictions = predictor.predict(train_data)

這四行代碼通過自動(dòng)識(shí)別每列的數(shù)據(jù)類型完成數(shù)據(jù)預(yù)處理,然后通過找到有用的列組合來(lái)實(shí)現(xiàn)特征工程,再通過組合來(lái)進(jìn)行模型訓(xùn)練,以便在給定時(shí)間內(nèi)識(shí)別出性能最好的模型。請(qǐng)注意,在此處代碼中,我甚至沒有指定機(jī)器學(xué)習(xí)任務(wù)的類型(回歸/分類),而是由AutoGloon自動(dòng)進(jìn)行標(biāo)簽檢查并自行確定任務(wù)。

我是在提倡這種算法嗎?也不一定。雖然我很欣賞AutoGloon的強(qiáng)大功能,但我更喜歡那些不會(huì)將數(shù)據(jù)科學(xué)簡(jiǎn)化為Kaggle比賽中的準(zhǔn)確性得分的解決方案。然而,隨著這些模型越來(lái)越受歡迎和廣泛采用,了解它們是如何工作的,它們背后的數(shù)學(xué)和代碼,以及如何利用或超越它們變得非常重要。

1.AutoGloon概述

AutoGloon是一個(gè)由亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)創(chuàng)建的開源機(jī)器學(xué)習(xí)庫(kù)。它旨在為你處理整個(gè)ML過程;具體來(lái)說,這包括從準(zhǔn)備數(shù)據(jù)到選擇最佳模型并調(diào)整其設(shè)置的整個(gè)過程。

AutoGloon庫(kù)將簡(jiǎn)潔性與一流的性能相結(jié)合。它采用了集成學(xué)習(xí)和自動(dòng)超參數(shù)調(diào)整等先進(jìn)技術(shù),以確保你創(chuàng)建的模型高度準(zhǔn)確。這意味著,你可以開發(fā)強(qiáng)大的機(jī)器學(xué)習(xí)解決方案,而不會(huì)陷入技術(shù)細(xì)節(jié)的泥潭。

該庫(kù)負(fù)責(zé)數(shù)據(jù)預(yù)處理、特征選擇、模型訓(xùn)練和評(píng)估,這大大減少了建立穩(wěn)健的機(jī)器學(xué)習(xí)模型所需的時(shí)間和精力。此外,AutoGloon擴(kuò)展性良好,適用于小型項(xiàng)目和大型復(fù)雜數(shù)據(jù)集。

對(duì)于表格數(shù)據(jù),AutoGloon既可以處理分類任務(wù)(將數(shù)據(jù)分類到不同的組中),也可以處理回歸任務(wù)(預(yù)測(cè)連續(xù)結(jié)果)。它還支持文本數(shù)據(jù),使其適用于情感分析或主題分類等任務(wù)。此外,它還可以管理圖像數(shù)據(jù),幫助進(jìn)行圖像識(shí)別和物體檢測(cè)。

盡管AutoGloon的幾個(gè)變體版本是為了更好地處理時(shí)間序列數(shù)據(jù)、文本和圖像而構(gòu)建的,但在這里我們將重點(diǎn)關(guān)注處理表格數(shù)據(jù)的變體版本。如果你喜歡這篇文章,并希望未來(lái)深入了解它的這個(gè)開源庫(kù)的變體版本,請(qǐng)告訴我。(AutoGloon團(tuán)隊(duì),《AutoGloon:將AutoML用于文本、圖像和表格數(shù)據(jù)》,2020年)

2.AutoML概述

(1)什么是AutoML?

AutoML(Automated Machine Learning,自動(dòng)化機(jī)器學(xué)習(xí))的縮寫,是一種將機(jī)器學(xué)習(xí)應(yīng)用于現(xiàn)實(shí)世界問題的整個(gè)過程自動(dòng)化的技術(shù)。AutoML的主要目標(biāo)是使機(jī)器學(xué)習(xí)更容易訪問和高效,允許人們?cè)诓恍枰钊雽I(yè)知識(shí)的情況下開發(fā)模型。正如我們已經(jīng)看到的,它可以處理數(shù)據(jù)預(yù)處理、特征工程、模型選擇和超參數(shù)調(diào)整等任務(wù),這些任務(wù)通常既復(fù)雜又耗時(shí)(He等,《AutoML:最新技術(shù)綜述》,2019年)。

多年來(lái),AutoML的概念有了顯著的發(fā)展。最初,機(jī)器學(xué)習(xí)需要專家的大量手動(dòng)工作,他們必須仔細(xì)選擇特征、調(diào)整超參數(shù)并選擇正確的算法。隨著該領(lǐng)域的發(fā)展,處理越來(lái)越大和復(fù)雜的數(shù)據(jù)集的自動(dòng)化需求也在增長(zhǎng)。早期自動(dòng)化部分流程的努力為現(xiàn)代AutoML系統(tǒng)鋪平了道路。如今,AutoML使用集成學(xué)習(xí)和貝葉斯優(yōu)化等先進(jìn)技術(shù),以最少的人為干預(yù)創(chuàng)建高質(zhì)量的模型(Feurer等人,“高效和穩(wěn)健的自動(dòng)機(jī)器學(xué)習(xí)”,2015年,鏈接:https://www.arxiv.org/abs/1908.00709)。

近幾年,AutoML領(lǐng)域出現(xiàn)了幾家參與研究團(tuán)隊(duì),每個(gè)參與者都提供其獨(dú)特的特征和功能支持。AutoGloon由亞馬遜網(wǎng)絡(luò)服務(wù)公司開發(fā),以其在各種數(shù)據(jù)類型中的易用性和強(qiáng)大性能而聞名(AutoGloon團(tuán)隊(duì),“AutoGlooN:針對(duì)文本、圖像和表格數(shù)據(jù)的AutoML”,2020年)。Google Cloud團(tuán)隊(duì)研發(fā)的AutoML提供了一套機(jī)器學(xué)習(xí)產(chǎn)品,允許開發(fā)人員以最小的工作量訓(xùn)練高質(zhì)量的模型。H2O.ai團(tuán)隊(duì)提供了一種H2O AutoML,能夠針對(duì)監(jiān)督和非監(jiān)督學(xué)習(xí)任務(wù)提供自動(dòng)機(jī)器學(xué)習(xí)功能(H2O.ai團(tuán)隊(duì),“H2O AutoML:可擴(kuò)展的自動(dòng)機(jī)器學(xué)習(xí)”,2020年,鏈接:https://www.automl.org/wp-content/uploads/2020/07/AutoML_2020_paper_61.pdf)。DataRobot團(tuán)隊(duì)則專注于企業(yè)級(jí)的AutoML解決方案,旨在為模型部署和管理提供強(qiáng)大的工具支持。微軟的Azure機(jī)器學(xué)習(xí)也具有AutoML功能,能夠與其他Azure服務(wù)無(wú)縫集成,形成全面的機(jī)器學(xué)習(xí)解決方案。

(2)AutoML的關(guān)鍵組件

AutoGluon工作流程如下圖所示:

AutoGloon工作流

任何機(jī)器學(xué)習(xí)流水線的第一步都是數(shù)據(jù)預(yù)處理。這包括通過處理缺失值、刪除重復(fù)項(xiàng)和更正錯(cuò)誤來(lái)清理數(shù)據(jù)。數(shù)據(jù)預(yù)處理還包括將數(shù)據(jù)轉(zhuǎn)換為適合分析的格式,例如歸一化值、編碼分類變量和縮放特征。適當(dāng)?shù)臄?shù)據(jù)預(yù)處理至關(guān)重要,因?yàn)閿?shù)據(jù)的質(zhì)量直接影響機(jī)器學(xué)習(xí)模型的性能。

一旦數(shù)據(jù)被清除,下一步就是特征工程。這個(gè)過程包括創(chuàng)建新的特征或修改現(xiàn)有的特征,以提高模型的性能。特征工程可以簡(jiǎn)單到基于現(xiàn)有數(shù)據(jù)創(chuàng)建新列,也可以復(fù)雜到使用領(lǐng)域知識(shí)創(chuàng)建有意義的特征。正確的特征可以顯著增強(qiáng)模型的預(yù)測(cè)能力。

準(zhǔn)備好數(shù)據(jù)并設(shè)計(jì)好特征后,下一步就是模型選擇。有許多算法可供選擇,每種算法都有其優(yōu)缺點(diǎn),這取決于手頭的問題。AutoML系統(tǒng)能夠評(píng)估多個(gè)模型,以確定適合于給定任務(wù)的最佳模型。這可能包括比較決策樹、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)和其他模型,看看哪種模型的數(shù)據(jù)表現(xiàn)最好。

選擇模型后,下一個(gè)挑戰(zhàn)是超參數(shù)優(yōu)化。超參數(shù)是控制機(jī)器學(xué)習(xí)算法行為的設(shè)置,例如神經(jīng)網(wǎng)絡(luò)中的學(xué)習(xí)率或決策樹的深度。找到超參數(shù)的最佳組合可以極大地提高模型性能。AutoML使用網(wǎng)格搜索、隨機(jī)搜索等技術(shù),以及貝葉斯優(yōu)化等更先進(jìn)的方法來(lái)自動(dòng)化這一過程,確保對(duì)模型進(jìn)行微調(diào)以獲得最佳結(jié)果。

最后一步是模型評(píng)估和選擇。這涉及到使用交叉驗(yàn)證等技術(shù)來(lái)評(píng)估模型對(duì)新數(shù)據(jù)的概括程度。各種性能指標(biāo),如準(zhǔn)確性、精確度、召回率和F1分?jǐn)?shù),用于衡量模型的有效性。AutoML系統(tǒng)自動(dòng)化這一評(píng)估過程,確保所選模型最適合給定任務(wù)。評(píng)估完成后,將選擇性能最佳的模型進(jìn)行部署(AutoGloon團(tuán)隊(duì),《AutoGloon:將AutoML用于文本、圖像和表格數(shù)據(jù)》,2020年)。

(3)AutoML的挑戰(zhàn)

雖然AutoML節(jié)省了時(shí)間和精力,但它在計(jì)算資源方面可能要求很高。超參數(shù)調(diào)整和模型選擇等自動(dòng)化任務(wù)通常需要運(yùn)行多次迭代并訓(xùn)練多個(gè)模型,這對(duì)無(wú)法獲得高性能計(jì)算的小型組織或個(gè)人來(lái)說可能是一個(gè)挑戰(zhàn)。

另一個(gè)挑戰(zhàn)是需要定制。盡管AutoML系統(tǒng)在許多情況下都非常有效,但它們可能并不總是能立即滿足特定的要求。有時(shí),自動(dòng)化過程可能無(wú)法完全捕捉特定數(shù)據(jù)集或問題的獨(dú)特方面。用戶可能需要調(diào)整工作流程的某些部分,如果系統(tǒng)沒有提供足夠的靈活性或用戶缺乏必要的專業(yè)知識(shí),這可能會(huì)很困難。

盡管存在這些挑戰(zhàn),但AutoML的好處往往大于缺點(diǎn)。它大大提高了生產(chǎn)力,擴(kuò)大了可訪問性,并提供了可擴(kuò)展的解決方案,使更多的人能夠利用機(jī)器學(xué)習(xí)的力量(Feuer等人,《高效和穩(wěn)健的自動(dòng)化機(jī)器學(xué)習(xí)》,2015年)。

3.AutoGloon庫(kù)數(shù)學(xué)理論支持

(1)AutoGloon的架構(gòu)

AutoGloon的架構(gòu)旨在自動(dòng)化從數(shù)據(jù)預(yù)處理到模型部署的整個(gè)機(jī)器學(xué)習(xí)工作流程。該體系結(jié)構(gòu)由幾個(gè)相互連接的模塊組成,每個(gè)模塊負(fù)責(zé)流程的特定階段。

第一步是數(shù)據(jù)模塊,它處理加載和預(yù)處理數(shù)據(jù)。該模塊處理諸如清理數(shù)據(jù)、處理缺失值以及將數(shù)據(jù)轉(zhuǎn)換為適合分析的格式等任務(wù)。例如,考慮一個(gè)存在缺失值的數(shù)據(jù)集X。數(shù)據(jù)模塊可以使用平均值或中位數(shù)估算這些缺失值:

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)

一旦數(shù)據(jù)經(jīng)過預(yù)處理,特征工程模塊就會(huì)接管過來(lái)。該組件生成新特征或轉(zhuǎn)換現(xiàn)有特征,以增強(qiáng)模型的預(yù)測(cè)能力。諸如對(duì)分類變量進(jìn)行一次熱編碼或?yàn)閿?shù)字?jǐn)?shù)據(jù)創(chuàng)建多項(xiàng)式特征之類的技術(shù)是常見的。例如,對(duì)分類變量進(jìn)行編碼可能如下所示:

from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
X_encoded = encoder.fit_transform(X)

AutoGloon的核心是模型模塊。該模塊包括一系列機(jī)器學(xué)習(xí)算法,如決策樹、神經(jīng)網(wǎng)絡(luò)和梯度提升機(jī)。它在數(shù)據(jù)集上訓(xùn)練多個(gè)模型并評(píng)估它們的性能。例如,決策樹可以按照以下方式進(jìn)行訓(xùn)練:

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

超參數(shù)優(yōu)化模塊自動(dòng)搜索每個(gè)模型的最佳超參數(shù)。它使用網(wǎng)格搜索、隨機(jī)搜索和貝葉斯優(yōu)化等方法。Snoek等人的論文中詳細(xì)介紹了貝葉斯優(yōu)化(2012年:https://arxiv.org/abs/1206.2944),他們建立了一個(gè)概率模型來(lái)指導(dǎo)搜索過程:

from skopt import BayesSearchCV
search_space = {'max_depth': (1, 32)}
bayes_search = BayesSearchCV(estimator=DecisionTreeClassifier(), 
search_spaces=search_space)
bayes_search.fit(X_train, y_train)

訓(xùn)練后,評(píng)估模塊使用準(zhǔn)確性、精確度、召回率和F1分?jǐn)?shù)等指標(biāo)評(píng)估模型性能。交叉驗(yàn)證通常用于確保模型能夠很好地推廣到新數(shù)據(jù):

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
mean_score = scores.mean()

AutoGloon的集成模塊非常出色,它將多個(gè)模型的預(yù)測(cè)結(jié)合起來(lái),生成一個(gè)更準(zhǔn)確的預(yù)測(cè)。采用堆疊、裝袋和混合等技術(shù)。例如,可以使用BaggingClassifier進(jìn)行裝袋:

from sklearn.ensemble import BaggingClassifier
bagging = BaggingClassifier(base_estimator=DecisionTreeClassifier(), 
n_estimators=10)
bagging.fit(X_train, y_train)

最后,部署模塊負(fù)責(zé)將最佳模型或集成部署到生產(chǎn)中。這包括導(dǎo)出模型、對(duì)新數(shù)據(jù)生成預(yù)測(cè)以及將模型集成到現(xiàn)有系統(tǒng)中:

import joblib
joblib.dump(bagging, 'model.pkl')

總之,上述這些組件協(xié)同工作,使機(jī)器學(xué)習(xí)管道自動(dòng)化,使用戶能夠快速高效地構(gòu)建和部署高質(zhì)量的模型。

(2)AutoGloon中的集成學(xué)習(xí)

集成學(xué)習(xí)是AutoGloon的一個(gè)關(guān)鍵功能,它增強(qiáng)了提供高性能模型的能力。通過組合多個(gè)模型,集成方法提高了預(yù)測(cè)的準(zhǔn)確性和穩(wěn)健性。AutoGloon利用了三種主要的集成技術(shù):堆疊、裝袋和混合。

堆疊

堆疊涉及在同一數(shù)據(jù)集上訓(xùn)練多個(gè)基本模型,并將它們的預(yù)測(cè)用作更高級(jí)別模型(通常稱為元模型)的輸入特征。這種方法利用了各種算法的優(yōu)勢(shì),使集合能夠做出更準(zhǔn)確的預(yù)測(cè)。堆疊過程可以用數(shù)學(xué)表示如下:

堆疊公式

這里,h1表示基本模型,h2是元模型。每個(gè)基本模型h1取輸入特征xi并產(chǎn)生預(yù)測(cè)。然后,這些預(yù)測(cè)被用作元模型h2的輸入特征,并最終計(jì)算出最終預(yù)測(cè)值y^。通過組合不同基礎(chǔ)模型的輸出,堆疊可以捕獲數(shù)據(jù)中更廣泛的模式,從而提高預(yù)測(cè)性能。

袋裝

Bagging(Bootstrap Aggregation的縮寫)通過在不同的數(shù)據(jù)子集上訓(xùn)練同一模型的多個(gè)實(shí)例來(lái)提高模型的穩(wěn)定性和準(zhǔn)確性。這些子集是通過對(duì)原始數(shù)據(jù)集進(jìn)行隨機(jī)采樣并進(jìn)行替換來(lái)創(chuàng)建的。最終預(yù)測(cè)通常通過對(duì)回歸任務(wù)的所有模型的預(yù)測(cè)進(jìn)行平均或通過對(duì)分類任務(wù)進(jìn)行多數(shù)投票來(lái)進(jìn)行。

從數(shù)學(xué)上講,裝袋可以表示如下:

對(duì)于回歸:

Bagging公式中的回歸

對(duì)于分類:

裝袋中的分類

這里,hi表示在數(shù)據(jù)的不同子集上訓(xùn)練的第i個(gè)模型。對(duì)于回歸,最終預(yù)測(cè)y^是每個(gè)模型所做預(yù)測(cè)的平均值。對(duì)于分類,最終預(yù)測(cè)y^是模型中最頻繁預(yù)測(cè)的類別。

裝袋的方差縮減效果可以用大數(shù)定律來(lái)說明,該定律指出,來(lái)自多個(gè)模型的預(yù)測(cè)的平均值將收斂到期望值,從而減少總體方差,提高預(yù)測(cè)的穩(wěn)定性。可以說明為:

裝袋中的方差縮減

通過對(duì)數(shù)據(jù)的不同子集進(jìn)行訓(xùn)練,裝袋也有助于減少過擬合并提高模型的可推廣性。

混合

混合類似于堆疊,但實(shí)現(xiàn)更簡(jiǎn)單。在混合中,數(shù)據(jù)被分為兩部分:訓(xùn)練集和驗(yàn)證集。基本模型在訓(xùn)練集上進(jìn)行訓(xùn)練,它們?cè)隍?yàn)證集上的預(yù)測(cè)用于訓(xùn)練最終模型,也稱為混合器或元學(xué)習(xí)器?;旌鲜褂昧艘粋€(gè)保持驗(yàn)證集,這可以使其更快地實(shí)現(xiàn):

# 簡(jiǎn)單訓(xùn)練驗(yàn)證拆分的混合示例
train_meta, val_meta, y_train_meta, y_val_meta = train_test_split(X, y, 
test_size=0.2)
base_model_1.fit(train_meta, y_train_meta)
base_model_2.fit(train_meta, y_train_meta)
preds_1 = base_model_1.predict(val_meta)
preds_2 = base_model_2.predict(val_meta)
meta_features = np.column_stack((preds_1, preds_2))
meta_model.fit(meta_features, y_val_meta)

這些技術(shù)確保最終預(yù)測(cè)更加準(zhǔn)確和穩(wěn)健,利用多個(gè)模型的多樣性和優(yōu)勢(shì)來(lái)提供卓越的結(jié)果。

(3)超參數(shù)優(yōu)化

超參數(shù)優(yōu)化包括為模型找到最佳設(shè)置,以最大限度地提高其性能。AutoGloon使用貝葉斯優(yōu)化、早期停止和智能資源分配等先進(jìn)技術(shù)自動(dòng)化了這一過程。

貝葉斯優(yōu)化

貝葉斯優(yōu)化旨在通過建立目標(biāo)函數(shù)的概率模型來(lái)找到最優(yōu)的超參數(shù)集。它使用過去的評(píng)估結(jié)果來(lái)做出下一步要嘗試哪些超參數(shù)的明智決定。這對(duì)于有效地導(dǎo)航大型和復(fù)雜的超參數(shù)空間特別有用,減少了找到最佳配置所需的評(píng)估數(shù)量:

貝葉斯優(yōu)化公式

其中,f(θ)是想要優(yōu)化的目標(biāo)函數(shù),例如模型精度或損失值。θ表示超參數(shù)。E[f(θ)]是給定超參數(shù)θ的目標(biāo)函數(shù)的期望值。

貝葉斯優(yōu)化包括兩個(gè)主要步驟:

  • 代理建模:基于過去的評(píng)估,建立一個(gè)概率模型,通常是高斯過程,以近似目標(biāo)函數(shù)。
  • 采集函數(shù):該函數(shù)通過平衡勘探(嘗試超參數(shù)空間的新區(qū)域)和開發(fā)(專注于已知表現(xiàn)良好的區(qū)域)來(lái)確定下一組要評(píng)估的超參數(shù)。常見的采集函數(shù)包括預(yù)期改進(jìn)(EI)和置信上限(UCB)。

與網(wǎng)格或隨機(jī)搜索方法相比,該優(yōu)化以迭代方式更新代理模型和采集函數(shù)以收斂于具有較少評(píng)估的最優(yōu)超參數(shù)集。

早停技術(shù)

一旦模型在驗(yàn)證集上的性能停止改善,早停技術(shù)可以防止過擬合,并通過停止訓(xùn)練過程來(lái)減少訓(xùn)練時(shí)間。AutoGloon在訓(xùn)練過程中監(jiān)測(cè)模型的性能,并在進(jìn)一步訓(xùn)練不太可能產(chǎn)生顯著改進(jìn)時(shí)停止該過程。這項(xiàng)技術(shù)不僅節(jié)省了計(jì)算資源,而且確保了模型能夠很好地推廣到新的、看不見的數(shù)據(jù):

from sklearn.model_selection import train_test_split
from sklearn.metrics import log_loss
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2)
model = DecisionTreeClassifier()
best_loss = np.inf
for epoch in range(100):
model.fit(X_train, y_train)
val_preds = model.predict(X_val)
loss = log_loss(y_val, val_preds)
if loss < best_loss:
best_loss = loss
else:
break

資源配置策略

有效的資源分配在超參數(shù)優(yōu)化中至關(guān)重要,尤其是在處理有限的計(jì)算資源時(shí)。AutoGloon采用了高保真度優(yōu)化等策略,即系統(tǒng)最初使用數(shù)據(jù)子集或更少的迭代輪次來(lái)訓(xùn)練模型,以快速評(píng)估其潛力。然后為有希望的模型分配更多的資源進(jìn)行徹底評(píng)估。這種方法平衡了勘探和開發(fā),確保計(jì)算資源得到有效利用:

多保真度優(yōu)化公式

在這個(gè)公式中:

  • hi表示第i個(gè)模型。
  • Ci是與模型hi相關(guān)聯(lián)的成本,例如所使用的計(jì)算時(shí)間或資源。
  • Resource(hi)表示分配給模型hi的總資源的比例。

通過最初訓(xùn)練保真度降低的模型(例如,使用更少的數(shù)據(jù)點(diǎn)或迭代輪次),高保真度優(yōu)化可以快速識(shí)別有希望的候選樣本。然后以更高的保真度對(duì)這些候選樣本進(jìn)行訓(xùn)練,確保計(jì)算資源得到有效使用。這種方法平衡了超參數(shù)空間的探索與已知良好配置的利用,從而實(shí)現(xiàn)高效和有效的超參數(shù)優(yōu)化。

(4)模型評(píng)估和選擇

模型評(píng)估和選擇確保所選模型在新的、看不見的數(shù)據(jù)上表現(xiàn)良好。AutoGloon使用交叉驗(yàn)證技術(shù)、性能指標(biāo)和自動(dòng)模型選擇標(biāo)準(zhǔn)自動(dòng)化這一過程。

交叉驗(yàn)證技術(shù)

交叉驗(yàn)證包括將數(shù)據(jù)拆分為多個(gè)子集,并在不同的子集上訓(xùn)練模型,同時(shí)在其余部分上進(jìn)行驗(yàn)證。AutoGloon使用k倍交叉驗(yàn)證等技術(shù),將數(shù)據(jù)劃分為k個(gè)子集,對(duì)模型進(jìn)行k次訓(xùn)練和驗(yàn)證,每次都以不同的子集作為驗(yàn)證集。這有助于獲得對(duì)模型性能的可靠估計(jì),并確保評(píng)估不會(huì)因特定的訓(xùn)練測(cè)試劃分而產(chǎn)生偏差:

交叉驗(yàn)證精度公式

性能指標(biāo)

為了評(píng)估模型的質(zhì)量,AutoGloon依賴于各種性能指標(biāo),這些指標(biāo)取決于手頭的特定任務(wù)。對(duì)于分類任務(wù),常見的指標(biāo)包括準(zhǔn)確性、精密度、召回率、F1分?jǐn)?shù)和ROC曲線下面積(AUC-ROC)。對(duì)于回歸任務(wù),通常使用平均絕對(duì)誤差(MAE)、均方誤差(MSE)和R平方等度量。AutoGloon在評(píng)估過程中自動(dòng)計(jì)算這些指標(biāo),以便全面了解模型的優(yōu)勢(shì)和劣勢(shì):

from sklearn.metrics import accuracy_score, precision_score, recall_score, 
f1_score
y_pred = model.predict(X_val)
accuracy = accuracy_score(y_val, y_pred)
precision = precision_score(y_val, y_pred)
recall = recall_score(y_val, y_pred)
f1 = f1_score(y_val, y_pred)

自動(dòng)模型選擇標(biāo)準(zhǔn)

在評(píng)估模型后,AutoGloon使用自動(dòng)標(biāo)準(zhǔn)來(lái)選擇性能最好的模型。這包括比較不同模型的性能指標(biāo),并選擇在任務(wù)的最相關(guān)指標(biāo)方面表現(xiàn)出色的模型。AutoGloon還考慮了模型復(fù)雜性、訓(xùn)練時(shí)間和資源效率等因素。自動(dòng)化的模型選擇過程確保所選模型不僅性能良好,而且在現(xiàn)實(shí)世界場(chǎng)景中部署和使用也很實(shí)用。通過自動(dòng)化選擇,AutoGloon消除了人為偏見,并確保采用一致和客觀的方法來(lái)選擇最佳型號(hào):

best_model = max(models, key=lambda model: model['score'])

4.基于Python的AutoGloon示例工程

在開始使用AutoGloon之前,你需要設(shè)置一下開發(fā)環(huán)境。這涉及到安裝必要的庫(kù)和依賴項(xiàng)等操作。

你可以使用pip安裝AutoGloon。為此,只需打開終端或命令提示符,然后運(yùn)行以下命令:

pip install autogluon

此命令將安裝AutoGloon及其所需的依賴項(xiàng)。

接下來(lái),你需要下載數(shù)據(jù)。你需要安裝Kaggle,以便下載本文提供示例的數(shù)據(jù)集:

pip install kaggle

安裝后,通過在終端中運(yùn)行這些命令下載數(shù)據(jù)集。請(qǐng)確保你處于與.py文件相同的目錄中:

mkdir data
cd data
kaggle competitions download -c playground-series-s4e6
unzip "Academic Succession/playground-series-s4e6.zip"

或者,你可以從最近的Kaggle競(jìng)賽“基于學(xué)術(shù)成功數(shù)據(jù)集的分類”中手動(dòng)下載數(shù)據(jù)集。該數(shù)據(jù)集可免費(fèi)用于商業(yè)用途(https://creativecommons.org/licenses/by/4.0/)。

一旦環(huán)境設(shè)置好,你就可以使用AutoGloon來(lái)構(gòu)建和評(píng)估機(jī)器學(xué)習(xí)模型。首先,你需要加載并準(zhǔn)備數(shù)據(jù)集。AutoGloon使這個(gè)過程變得簡(jiǎn)單明了。假設(shè)你有一個(gè)名為train.CSV的CSV文件,其中包含你的訓(xùn)練數(shù)據(jù):

from autogluon.tabular import TabularDataset, TabularPredictor
# 加載數(shù)據(jù)集
train_df = TabularDataset('data/train.csv')

加載數(shù)據(jù)后,可以使用AutoGloon訓(xùn)練模型。在本例中,我們將訓(xùn)練一個(gè)模型來(lái)預(yù)測(cè)名為“target”的目標(biāo)變量,并使用準(zhǔn)確性作為評(píng)估指標(biāo)。我們還將啟用超參數(shù)調(diào)整和自動(dòng)堆疊,以提高模型性能:

# 訓(xùn)練模型
predictor = TabularPredictor(
label='Target',
eval_metric='accuracy',
verbosity=1
).fit(
train_df,
presets=['best_quality'],
hyperparameter_tune=True,
auto_stack=True
)

訓(xùn)練結(jié)束后,你可以使用排行榜評(píng)估模型的表現(xiàn),排行榜提供了模型在訓(xùn)練數(shù)據(jù)上的表現(xiàn)摘要:

#評(píng)估模型
leaderboard = predictor.leaderboard(train_df, silent=True)
print(leaderboard)

排行榜為你提供了AutoGloon訓(xùn)練的所有模型的詳細(xì)比較。

現(xiàn)在,讓我們?cè)敿?xì)解釋一下上面表格中的幾個(gè)關(guān)鍵列及其含義:

  • model:此列列出了模型的名稱。例如,RandomForestEntr_BAG_L1指的是使用熵作為標(biāo)準(zhǔn)的隨機(jī)森林模型,并使用級(jí)別1版本打包。
  • score_test:這顯示了模型在數(shù)據(jù)集上的準(zhǔn)確性。分?jǐn)?shù)為1.00表示某些模型具有完美的準(zhǔn)確性。與其名稱相反,score_test是在訓(xùn)練過程中使用的訓(xùn)練數(shù)據(jù)集。
  • score_val:這顯示了模型在驗(yàn)證數(shù)據(jù)集上的準(zhǔn)確性。請(qǐng)注意這一點(diǎn),因?yàn)樗@示了模型在看不見的數(shù)據(jù)上的表現(xiàn)。
  • eval_metric:使用的評(píng)估指標(biāo),在本例中指準(zhǔn)確性。
  • pred_time_test:對(duì)測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè)所花費(fèi)的時(shí)間。
  • pred_time_val:對(duì)驗(yàn)證數(shù)據(jù)進(jìn)行預(yù)測(cè)所花費(fèi)的時(shí)間。
  • fit_time:訓(xùn)練模型所花費(fèi)的時(shí)間。
  • pred_time_test_marginal:集合中的模型在測(cè)試數(shù)據(jù)集上添加的額外預(yù)測(cè)時(shí)間。
  • pred_time_val_marginal:集合中的模型在驗(yàn)證數(shù)據(jù)集上添加的額外預(yù)測(cè)時(shí)間。
  • fit_time_marginal:模型在集合中添加的額外訓(xùn)練時(shí)間。
  • stack_level:表示模型的堆疊級(jí)別。1級(jí)模型是基礎(chǔ)模型,而2級(jí)模型是使用1級(jí)模型的預(yù)測(cè)作為特征的元模型。
  • can_infer:指示模型是否可以用于推理。
  • fit_order:訓(xùn)練模型的順序。

查看一下所提供的排行榜數(shù)據(jù),我們可以看到一些模型,如RandomForestEntr_BAG_L1和RandomForest Gini_BAG_L具有完美的訓(xùn)練精度(1000000),但驗(yàn)證精度略低,這表明可能存在過度擬合。WeightedEnsemble_L2結(jié)合了1級(jí)模型的預(yù)測(cè),通常通過平衡其基本模型的強(qiáng)度來(lái)顯示良好的性能。

LightGBMLarge_BAG_L1和XGBoost_BAG_L1等模型具有競(jìng)爭(zhēng)性的驗(yàn)證分?jǐn)?shù)以及合理的訓(xùn)練和預(yù)測(cè)時(shí)間,使其成為最終部署方案的有力候選模型。

fit_time和pred_time列提供了對(duì)每個(gè)模型的計(jì)算效率的深入了解,這對(duì)實(shí)際應(yīng)用至關(guān)重要。

除了排行榜之外,AutoGloon還提供了一些高級(jí)功能,允許你自定義訓(xùn)練過程、處理不平衡的數(shù)據(jù)集和執(zhí)行超參數(shù)調(diào)整。

通過調(diào)整擬合方法的參數(shù),可以自定義訓(xùn)練過程的各個(gè)方面。例如,可以更改訓(xùn)練迭代次數(shù),指定要使用的不同算法,或?yàn)槊總€(gè)算法設(shè)置自定義超參數(shù)。

from autogluon.tabular import TabularPredictor, TabularDataset
# 加載數(shù)據(jù)集
train_df = TabularDataset('train.csv')
#定義自制超級(jí)參數(shù)
hyperparameters = {
'GBM': {'num_boost_round': 200},
'NN': {'epochs': 10},
'RF': {'n_estimators': 100},
}
# 使用定制設(shè)置訓(xùn)練模型
predictor = TabularPredictor(
label='Target',
eval_metric='accuracy',
verbosity=2
).fit(
train_data=train_df,
hyperparameters=hyperparameters
)

不平衡的數(shù)據(jù)集可能具有挑戰(zhàn)性,但AutoGloon提供了有效處理這些數(shù)據(jù)集的工具??梢允褂弥T如對(duì)少數(shù)類進(jìn)行過采樣、對(duì)多數(shù)類進(jìn)行欠采樣或應(yīng)用成本敏感的學(xué)習(xí)算法等技術(shù)。AutoGloon可以自動(dòng)檢測(cè)和處理數(shù)據(jù)集中的不平衡。

from autogluon.tabular import TabularPredictor, TabularDataset
#加載數(shù)據(jù)集
train_df = TabularDataset('train.csv')
#通過指定自定義參數(shù)處理不平衡的數(shù)據(jù)集
#AutoGloon可以在內(nèi)部處理此問題,但為了清楚起見,在此處指定
hyperparameters = {
'RF': {'n_estimators': 100, 'class_weight': 'balanced'},
'GBM': {'num_boost_round': 200, 'scale_pos_weight': 2},
}
# 使用處理不平衡的設(shè)置來(lái)訓(xùn)練模型
predictor = TabularPredictor(
label='Target',
eval_metric='accuracy',
verbosity=2
).fit(
train_data=train_df,
hyperparameters=hyperparameters
)

超參數(shù)調(diào)整對(duì)于優(yōu)化模型性能至關(guān)重要。AutoGloon使用貝葉斯優(yōu)化等先進(jìn)技術(shù)自動(dòng)完成這一過程。你可以通過在擬合方法中設(shè)置hyperparameter_tune=True來(lái)啟用超參數(shù)調(diào)整。

from autogluon.tabular import TabularPredictor, TabularDataset
# 加載數(shù)據(jù)集
train_df = TabularDataset('train.csv')
# 使用超參數(shù)優(yōu)化訓(xùn)練模型
predictor = TabularPredictor(
label='Target',
eval_metric='accuracy',
verbosity=2
).fit(
train_data=train_df,
presets=['best_quality'],
hyperparameter_tune=True
)

超越AutoML模型的可能性

經(jīng)過上面的AutoGloon庫(kù)學(xué)習(xí)之后,不妨讓我們繼續(xù)探討如何進(jìn)一步超越AutoML模型。假設(shè)你的主要目標(biāo)是改進(jìn)損失指標(biāo),而不是關(guān)注延遲、計(jì)算成本或其他指標(biāo)。

如果你有一個(gè)非常適合深度學(xué)習(xí)的大型數(shù)據(jù)集,你可能會(huì)發(fā)現(xiàn)實(shí)驗(yàn)深度學(xué)習(xí)架構(gòu)更容易。AutoML框架在這一領(lǐng)域往往很困難,因?yàn)樯疃葘W(xué)習(xí)需要對(duì)數(shù)據(jù)集有深入的了解,而盲目應(yīng)用模型可能會(huì)非常耗時(shí)和耗費(fèi)資源。以下是一些可以幫助你開始深度學(xué)習(xí)的資源:

  • 《神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)》:深入研究神經(jīng)網(wǎng)絡(luò),這是現(xiàn)代人工智能的支柱,了解其數(shù)學(xué),從頭開始實(shí)現(xiàn),并探索其應(yīng)用。文章地址:
  • https://towardsdatascience.com/the-math-behind-neural-networks-a34a51b93873
  • 《微調(diào)深度神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)》:深入研究微調(diào)神經(jīng)網(wǎng)絡(luò)的技術(shù),了解它們的數(shù)學(xué),從頭開始構(gòu)建它們,并探索它們的應(yīng)用。文章地址:https://towardsdatascience.com/the-math-behind-fine-tuning-deep-neural-networks-8138d548da69
  • 《LSTM背后的數(shù)學(xué)》:深入LSTM,了解其數(shù)學(xué),并從頭開始實(shí)施。文章地址:https://towardsdatascience.com/the-math-behind-lstm-9069b835289d

然而,真正的挑戰(zhàn)在于用傳統(tǒng)的機(jī)器學(xué)習(xí)任務(wù)擊敗AutoML。AutoML系統(tǒng)通常使用集成技術(shù),這意味著你最終可能會(huì)做同樣的事情。一個(gè)好的開始策略可以是首先擬合一個(gè)AutoML模型。例如,使用AutoGloon,你可以確定哪些模型表現(xiàn)最好。然后,你可以采用這些模型,重新創(chuàng)建AutoGloon使用的集成架構(gòu)。通過使用Optuna等技術(shù)進(jìn)一步優(yōu)化這些模型,你可能獲得更好的性能。以下是掌握Optuna的全面指南:

《Optuna的機(jī)器學(xué)習(xí)優(yōu)化》:介紹如何在Python中微調(diào)每個(gè)機(jī)器學(xué)習(xí)算法。Optuna機(jī)器學(xué)習(xí)優(yōu)化的終極指南,實(shí)現(xiàn)卓越的模型性能。文章地址:https://towardsdatascience.com/machine-learning-optimization-with-optuna-57593d700e52

此外,將領(lǐng)域知識(shí)應(yīng)用于特征工程可以為你提供優(yōu)勢(shì)。了解數(shù)據(jù)的細(xì)節(jié)可以幫助你創(chuàng)建更有意義的功能,從而顯著提高模型的性能。如果可行,請(qǐng)擴(kuò)充數(shù)據(jù)集以提供更多不同的訓(xùn)練示例,這有助于提高模型的穩(wěn)健性。

通過將上述這些策略與從初始AutoML模型中獲得的見解相結(jié)合,你就可以超越自動(dòng)化方法并獲得更為卓越的訓(xùn)練結(jié)果。

結(jié)論

AutoGloon通過自動(dòng)化從數(shù)據(jù)預(yù)處理到模型部署的一切,徹底改變了ML過程。其尖端的架構(gòu)、強(qiáng)大的集成學(xué)習(xí)技術(shù)和復(fù)雜的超參數(shù)優(yōu)化使其成為機(jī)器學(xué)習(xí)新手和經(jīng)驗(yàn)豐富的數(shù)據(jù)科學(xué)家不可或缺的工具。借助于AutoGloon,你可以將復(fù)雜、耗時(shí)的任務(wù)轉(zhuǎn)換為簡(jiǎn)化的工作流程,使你能夠以前所未有的速度和效率構(gòu)建頂級(jí)模型。

然而,要想真正在機(jī)器學(xué)習(xí)中脫穎而出,就不能僅僅依賴AutoGloon。將其作為啟動(dòng)項(xiàng)目的基礎(chǔ),并深入了解有效的模型策略。然后,以此為基礎(chǔ),深入了解你的數(shù)據(jù),并將領(lǐng)域知識(shí)應(yīng)用于功能工程。最后,嘗試自定義模型,還要嘗試在AutoGloon的初始產(chǎn)品之外對(duì)其進(jìn)行微調(diào)。

參考文獻(xiàn)

  • Erickson,N.、Mueller,J.、Charpentier,P.、Kornblith,S.、Weissenborn,D.、Norris,E.…和Smola,A.(2020)?!禔utoGluon-Tabular: Robust and Accurate AutoML for Structured Data》。arXiv預(yù)印本arXiv:2003.0605。
  • Snoek,J.、Larochelle,H.和Adams,R.P.(2012)。《機(jī)器學(xué)習(xí)算法的實(shí)用貝葉斯優(yōu)化》。Advances in neural information processing systems,25。
  • Pedregosa,F(xiàn).,Varoquex,G.,Gramfort,A.,Michel,V.,Thirion,B.,Grisel,O.,…和Duchesnay,é。(2011)。《Scikit學(xué)習(xí):Python中的機(jī)器學(xué)習(xí)》。Journal of machine learning research,12(10月),2825–2830。
  • AutoGloon團(tuán)隊(duì)?!禔utoGluon: AutoML for Text, Image, and Tabular Data》,2020。
  • Feuer,Matthias等,《Efficient and Robust Automated Machine Learning》,2015年。
  • 何,辛,等。《AutoML: A Survey of the State-of-the-Art》。2020。
  • Hutter,F(xiàn)rank等人,《Automated Machine Learning: Methods, Systems, Challenges》,2019年。
  • H2O.ai,《H2O AutoML: Scalable Automatic Machine Learning》,2020年。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:AutoML with AutoGluon: ML workflow with Just Four Lines of Code,作者:Cristian Leo

鏈接:https://towardsdatascience.com/automl-with-autogluon-transform-your-ml-workflow-with-just-four-lines-of-code-1d4b593be129。

想了解更多AIGC的內(nèi)容,請(qǐng)?jiān)L問:

51CTO AI.x社區(qū)

http://www.ekrvqnd.cn/aigc/

責(zé)任編輯:姜華 來(lái)源: 51CTO內(nèi)容精選
相關(guān)推薦

2024-10-29 11:54:25

2024-07-15 09:13:48

2024-08-07 08:32:30

2024-05-06 08:44:25

FrugalGPT大型語(yǔ)言模型LLM

2022-04-01 09:30:00

開源AutoXGBAPI

2009-03-09 21:25:11

Linuxnagios開源

2012-02-22 22:21:15

nagios開源

2009-09-18 14:31:33

CLR觸發(fā)器

2019-02-22 14:40:35

信號(hào)壓縮領(lǐng)域

2022-08-25 09:00:00

Python編程語(yǔ)言開源庫(kù)

2022-12-21 14:39:35

機(jī)器學(xué)習(xí)案發(fā)決策樹

2025-06-17 04:00:00

2022-09-09 16:12:53

人工智能機(jī)器學(xué)習(xí)autoML

2023-12-27 08:00:00

SQL數(shù)據(jù)庫(kù)LMQL

2012-10-10 10:07:44

開源數(shù)據(jù)中心硬件開發(fā)

2015-02-01 09:26:10

2024-03-15 08:00:00

2012-11-09 09:35:18

Win 8

2025-06-26 04:00:00

Spring數(shù)據(jù)綁定技術(shù)

2019-12-03 10:19:34

開發(fā)者技能工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 婷婷丁香在线视频 | 国产精品国产精品国产专区不蜜 | 在线观看中文字幕dvd播放 | 日韩欧美成人一区二区三区 | 国产中的精品av涩差av | 网站国产 | 亚洲免费网 | 欧美成人a∨高清免费观看 色999日韩 | 欧美影院| 超碰在线人人 | 久久99深爱久久99精品 | 祝你幸福电影在线观看 | 涩涩视频在线播放 | 国产乱码精品一区二区三区中文 | 一本综合久久 | 国产精品国产亚洲精品看不卡15 | 精品成人av | 日韩在线播放av | 中文字幕亚洲无线 | 日韩欧美久久 | 久久99国产精品 | 天天色图 | 精品久久久久久久 | 色橹橹欧美在线观看视频高清 | 精品国产欧美日韩不卡在线观看 | 亚洲精品久久久蜜桃网站 | 国产成人综合在线 | 欧美另类日韩 | 日韩a| 欧美精品乱码99久久影院 | 夜夜爽99久久国产综合精品女不卡 | 精品欧美一区二区中文字幕视频 | 毛片免费看 | 欧美激情国产日韩精品一区18 | 日韩免费高清视频 | av一区二区三区在线观看 | 国产高清免费视频 | 成人在线观看免费视频 | 久久久久中文字幕 | 日韩欧美在 | 日韩三区|