偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用Auto-Sklearn和Auto-PyTorch實(shí)現(xiàn)自動(dòng)化機(jī)器學(xué)習(xí)

譯文
人工智能 機(jī)器學(xué)習(xí) 自動(dòng)化
如今,機(jī)器學(xué)習(xí)(ML)正在廣泛地影響著商業(yè)、工程、以及研究等領(lǐng)域。通常,機(jī)器學(xué)習(xí)水平的進(jìn)步,與軟件和自動(dòng)化的深入迭代有著密切的關(guān)系。

[[430082]]

【51CTO.com快譯】引言

如今,機(jī)器學(xué)習(xí)(ML)正在廣泛地影響著商業(yè)、工程、以及研究等領(lǐng)域。通常,機(jī)器學(xué)習(xí)水平的進(jìn)步,與軟件和自動(dòng)化的深入迭代有著密切的關(guān)系。只要人類的某項(xiàng)活動(dòng),需要依賴計(jì)算機(jī)去進(jìn)行重復(fù)性和判斷性的處理,我們就可以通過(guò)機(jī)器學(xué)習(xí)來(lái)執(zhí)行與實(shí)現(xiàn)。當(dāng)然,面對(duì)各種不確切的待解決問(wèn)題,我們需要通過(guò)定義搜索空間、以及具體的學(xué)習(xí)算法,來(lái)訓(xùn)練計(jì)算機(jī)去自行判定與解決。

目前,機(jī)器學(xué)習(xí)已經(jīng)憑借著有效的深度學(xué)習(xí),進(jìn)入了2.0的時(shí)代。它們不但可以更好地預(yù)測(cè)蛋白模型的數(shù)據(jù)擬合,而且能夠在圍棋、Dota II、星際爭(zhēng)霸II等方面擊敗專業(yè)的人類玩家,以及創(chuàng)建各種十分連貫的文本和語(yǔ)音交互式響應(yīng)。您可以通過(guò)鏈接,進(jìn)一步了解機(jī)器學(xué)習(xí)對(duì)于不同行業(yè)的影響。當(dāng)然,這些也都離不開(kāi)各種被稱為AutoML的開(kāi)源工具、以及將ML進(jìn)行實(shí)際應(yīng)用的優(yōu)秀實(shí)踐。

什么是AutoML?

作為一大類技術(shù)和工具,AutoML可以被用于各種自動(dòng)化的搜索與學(xué)習(xí)場(chǎng)景中。例如,我們將貝葉斯優(yōu)化應(yīng)用于統(tǒng)計(jì)學(xué)習(xí)算法的超參數(shù)(hyperparameter),或是將深度學(xué)習(xí)模型運(yùn)用于神經(jīng)架構(gòu)的搜索。這些多樣化的生態(tài)系統(tǒng),目前已被編錄到了AutoML.ai中。其中,最著名的AutoML軟件包之一便是:Auto-SciKit-Learn(或稱Auto-Sklearn)。它榮獲了2014年至2016年的ChaLearn AutoML挑戰(zhàn)賽的獲勝者。

Auto-Sklearn是由德國(guó)的自動(dòng)化機(jī)器學(xué)習(xí)研究小組所開(kāi)發(fā)。作為一個(gè)Python包,Auto-Sklearn的構(gòu)建密切遵循了SciKit-Learn的使用模式,這也是它得名為“Auto-SciKit-Learn”的原因。

除了Auto-Sklearn,F(xiàn)reiburg-Hannover的AutoML小組還開(kāi)發(fā)了Auto-PyTorch庫(kù)。在下面的簡(jiǎn)單示例中,我們將使用這兩個(gè)代碼庫(kù),作為進(jìn)入AutoML的切入點(diǎn)。

AutoML的演示

首先,我們來(lái)設(shè)置所需要的軟件包和依賴項(xiàng)。在此,我們使用Python 3的virtualenv,來(lái)管理演示項(xiàng)目的虛擬環(huán)境。當(dāng)然,您也可以使用Anaconda(譯者注:一種開(kāi)源的Python發(fā)行版本)和pip,它們的工作方式都是類似的。

下面是在Ubuntu等基于Unix的系統(tǒng)上,設(shè)置運(yùn)行環(huán)境的各種命令。如果您使用的是Windows,則可以從Anaconda提示符中通過(guò)輸入命令,來(lái)設(shè)置環(huán)境。雖然Auto-Sklearn的文檔建議用戶,從它們的requirements.txt依賴文件處開(kāi)始安裝,但是就本例中的代碼而言,并不需要如此。

  1. create and activate a new virtual environment virtualenv automl --python=python3 source automl/bin/activate   
  2. # install auto-sklearn pip install auto-sklearn 

值得注意的是,如果您對(duì)兩個(gè)AutoML庫(kù)使用相同的環(huán)境,那么可能會(huì)發(fā)生沖突。因此我們需要為Auto-PyTorch創(chuàng)建第二個(gè)環(huán)境。而且該環(huán)境中的Python應(yīng)不低于3.7版本。

  1. deactivate virtualenv autopt –-python=python3.7 source autopt/bin/activate # install auto-pytorch from the github repo git clone https://github.com/automl/Auto-PyTorch.git cd Auto-PyTorch pip install -e . pip install numpy==1.20.0 pip install ipython 

我們?cè)谶\(yùn)行上述pip install -e,及其后面的兩個(gè)install語(yǔ)句時(shí),可能會(huì)碰到如下奇怪錯(cuò)誤。經(jīng)研究,我們可以通過(guò)將NumPy版本升級(jí)到1.20.0,予以修復(fù)。

  1. ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject 

如果您想為該項(xiàng)目做出貢獻(xiàn),或想查看最新的運(yùn)行代碼,請(qǐng)查閱如下開(kāi)發(fā)分支。

  1. # (optional) git checkout development # make sure to switch back to the primary branch for the tutorial git checkout master 

由于本示例的其余代碼均使用Python來(lái)編寫(xiě),因此請(qǐng)您啟用Python提示符、Jupyter筆記本或文本編輯器。

本示例將包含使用標(biāo)準(zhǔn)的SciKit-Learn、Auto-Sklearn和Auto-PyTorch分類器(classifier)的基本分類演示。我們將針對(duì)每個(gè)場(chǎng)景,使用SciKit-Learn中的單一內(nèi)置數(shù)據(jù)集。而每個(gè)演示都會(huì)通過(guò)共享代碼的方式,來(lái)導(dǎo)入通用的依賴項(xiàng),并加載和拆分對(duì)應(yīng)的數(shù)據(jù)集。

  1. import time import sklearn import sklearn.datasets 
  2. #** load and split data ** data, target = sklearn.datasets.load_iris(return_X_y=True 
  3. # split n = int(data.shape[0] * 0.8)  
  4. train_x = data[:n] train_y = target[:n] test_x = data[n:] test_y = target[n:] 

上面有關(guān)設(shè)置數(shù)據(jù)集的代碼,將被用于本示例中的每個(gè)演示模塊上。

為了節(jié)省時(shí)間,我們使用了小型的“iris”數(shù)據(jù)集(其中包括:150個(gè)樣本、4個(gè)特征和3個(gè)標(biāo)簽類別)。您完全可以在閱讀完本示例后,去試用更為復(fù)雜的數(shù)據(jù)集。

sklearn.datasets的其他分類數(shù)據(jù)集,則包括:糖尿病(load_diabetes)數(shù)據(jù)集和數(shù)字?jǐn)?shù)據(jù)集(load_digits)。其中,糖尿病數(shù)據(jù)集帶有569個(gè)樣本,每個(gè)樣本具有30個(gè)特征和2個(gè)標(biāo)簽類別;而數(shù)字?jǐn)?shù)據(jù)集則帶有1797個(gè)樣本,每個(gè)樣本具有64個(gè)特征(對(duì)應(yīng)著8x8的圖像),以及10個(gè)標(biāo)簽類別。

在開(kāi)始使用sklearn的AutoML分類器之前,讓我們通過(guò)默認(rèn)的設(shè)置,從vanilla sklearn中訓(xùn)練各種標(biāo)準(zhǔn)化的分類器。雖然我們有許多可供選擇的方式,但是我們?cè)诖藭?huì)沿用k最近鄰(k-nearest neighbors)分類器、支持向量機(jī)(support vector machine)分類器、以及多層感知器(multilayer perceptron)。

  1. # import classifiers from sklearn.svm import SVC from sklearn.neural_network import MLPClassifier from sklearn.neighbors import KNeighborsClassifier 
  2. # instantiate with default parameters knn = KNeighborsClassifier() mlp = MLPClassifier() svm = SVC() 

SciKit-Learn通過(guò)使用友好的擬合/預(yù)測(cè)(fit/predict)API,使得訓(xùn)練模型的過(guò)程變得輕而易舉。同時(shí),Auto-Sklearn和Auto-PyTorch兩個(gè)軟件包也保留了相同的API,這使得三者中的任一訓(xùn)練模型,不但相似,而且易用。

  1. t0 = time.time() knn.fit(train_x, train_y) mlp.fit(train_x, train_y) svm.fit(train_x, train_y) t1 = time.time() 

同樣,各種模型的評(píng)估也比較簡(jiǎn)單。SciKit-Learn分類模型提供一種預(yù)測(cè)方法,可被用于接收輸入數(shù)據(jù),預(yù)測(cè)標(biāo)簽,進(jìn)而通過(guò)將其傳遞給sklearn.metrics.accuracy_score,來(lái)計(jì)算準(zhǔn)確度。

下面的代碼可使用k最近鄰、支持向量機(jī),以及在最后一個(gè)代碼段中訓(xùn)練的多層感知器分類器,來(lái)計(jì)算保留測(cè)試集的各種預(yù)測(cè)和預(yù)測(cè)精度。

  1. knn_predict = knn.predict(test_x) train_knn_predict = knn.predict(train_x)  
  2. svm_predict = svm.predict(test_x) train_svm_predict = svm.predict(train_x)  
  3. mlp_predict = mlp.predict(test_x) train_mlp_predict = mlp.predict(train_x)  
  4. knn_accuracy = sklearn.metrics.accuracy_score(test_y, knn_predict) train_knn_accuracy = sklearn.metrics.accuracy_score(train_y,train_knn_predict)  
  5. svm_accuracy = sklearn.metrics.accuracy_score(test_y, svm_predict) train_svm_accuracy = sklearn.metrics.accuracy_score(train_y,train_svm_predict)  
  6. mlp_accuracy = sklearn.metrics.accuracy_score(test_y, mlp_predict) train_mlp_accuracy = sklearn.metrics.accuracy_score(train_y,train_mlp_predict)  
  7. print(f"svm, knn, mlp test accuracy: {svm_accuracy:.4f}," \ f"{knn_accuracy:.4}, {mlp_accuracy:.4}") print(f"svm, knn, mlp train accuracy: {train_svm_accuracy:.4f}," \ f"{train_knn_accuracy:.4}, {train_mlp_accuracy:.4}") print(f"time to fit: {t1-t0}"

iris數(shù)據(jù)集上的Sklearn分類器

這些模型對(duì)于iris訓(xùn)練數(shù)據(jù)集雖然十分有效,但是它們?cè)谟?xùn)練集和測(cè)試集之間仍存在這顯著的差距。

下面,讓我們使用來(lái)自autosklearn.classification的AutoSKlearnClassifier類,對(duì)多種類型的機(jī)器學(xué)習(xí)模型,執(zhí)行超參數(shù)的搜索,并保留其中最適合的集合。如下代碼段所示,在引入通用import,并設(shè)置訓(xùn)練和測(cè)試數(shù)據(jù)集的拆分之后,我們需要導(dǎo)入并實(shí)例化AutoML分類器。

  1. import autosklearn from autosklearn.classification import AutoSklearnClassifier as ASC 
  2. classifier = ASC() classifier.time_left_for_this_task = 300  
  3. t0 = time.time() classifier.fit(train_x, train_y) t1 = time.time()  
  4. autosk_predict = classifier.predict(test_x) train_autosk_predict = classifier.predict(train_x) 
  5. autosk_accuracy = sklearn.metrics.accuracy_score( \ test_y, autosk_predict \ ) train_autosk_accuracy = sklearn.metrics.accuracy_score( \ Train_y,train_autosk_predict \ )  
  6. print(f"test accuracy {autosk_2_accuracy:.4f}") print(f"train accuracy {train_autosk_2_accuracy:.4f}") print(f"time to fit: {t1-t0}"

iris數(shù)據(jù)集上的Auto-Sklearn分類器集成

如果您不去設(shè)置time_left_for_this_task的默認(rèn)值(3600秒,即一小時(shí)),那么帶有AutoSklearnClassifier的fit方法,運(yùn)行起來(lái)非常耗時(shí)。顯然,這對(duì)于簡(jiǎn)單的iris數(shù)據(jù)集來(lái)說(shuō),是不可接受的。為此,該軟件包的配套文檔有提到,在初始化分類器對(duì)象時(shí),時(shí)間限制應(yīng)當(dāng)被設(shè)置為輸入?yún)?shù)。

當(dāng)然,您也可以在啟用了交叉驗(yàn)證的情況下,去運(yùn)行fit方法。為此,您需要使用refit方法、最佳模型、以及超參數(shù),在整個(gè)訓(xùn)練數(shù)據(jù)集上進(jìn)行再次訓(xùn)練。而在具體實(shí)踐中,我們發(fā)現(xiàn),與默認(rèn)設(shè)置相比,在使用交叉驗(yàn)證和refit時(shí),測(cè)試集的準(zhǔn)確率會(huì)從80%略升至86.67%(請(qǐng)參見(jiàn)下表)。

值得注意的是,在使用了predict方法去擬合AutoSklearnClassifier對(duì)象之后,我們的推理過(guò)程,會(huì)使用在AutoML超參數(shù)搜索期間,找到的最佳模型集合。

最后,讓我們來(lái)討論另一個(gè)適合深度學(xué)習(xí)的AutoML包:Auto-PyTorch。與Auto-Sklearn類似,Auto-PyTorch非常容易上手。在運(yùn)行如下代碼段之前,請(qǐng)切換到Auto-PyTorch環(huán)境,以確保有合適的依賴項(xiàng)可用。

  1. import autoPyTorch from autoPyTorch import AutoNetClassification as ANC 
  2. model = ANC(max_runtime=300, min_budget=30, max_budget=90, cuda=False 
  3. t0 = time.time() model.fit(train_x, train_y, validation_split=0.1) t1 = time.time()  
  4. auto_predict = model.predict(test_x) train_auto_predict = model.predict(train_x)  
  5. auto_accuracy = sklearn.metrics.accuracy_score(test_y, auto_predict) train_auto_accuracy = sklearn.metrics.accuracy_score(train_y, train_auto_predict)  
  6. print(f"auto-pytorch test accuracy {auto_accuracy:.4}") print(f"auto-pytorch train accuracy {train_auto_accuracy:.4}"

在導(dǎo)入常用的imports,并拆分了數(shù)據(jù)之后,您可以看到:

iris數(shù)據(jù)集上的Auto-PyTorch分類器

由上述結(jié)果可知,Auto-PyTorch在擬合iris數(shù)據(jù)集方面十分高效,產(chǎn)生訓(xùn)練和測(cè)試的準(zhǔn)確度可達(dá)90秒。這比我們之前訓(xùn)練的自動(dòng)化SciKit-Learn分類器,以及具有默認(rèn)參數(shù)的標(biāo)準(zhǔn)化sklearn分類器,都要好許多。

小結(jié)

總的說(shuō)來(lái),AutoML的價(jià)值主要源于超參數(shù)搜索的自動(dòng)化方面。AutoML額外的抽象層和自動(dòng)化超參數(shù)搜索,會(huì)提高經(jīng)典的數(shù)據(jù)科學(xué)、以及機(jī)器學(xué)習(xí)工作流的實(shí)用性、性能和效率。只要使用得當(dāng),AutoML工具不僅能夠提高應(yīng)用項(xiàng)目的性能,而且可以降低超參數(shù)的冗長(zhǎng),讓架構(gòu)搜索更具成本效益。

目前,諸如Auto-Sklearn、Auto-PyTorch、Auto-WEKA等AutoML軟件包,可以成為任何機(jī)器學(xué)習(xí)或數(shù)據(jù)科學(xué)工具的有力補(bǔ)充。其中,Auto-PyTorch已經(jīng)獲得了Apache 2.0的許可證,而Auto-Sklearn也可以使用BSD 3-Clause的許可證。當(dāng)然,為了讓這兩個(gè)軟件包能夠正常工作,我們需要將NumPy升級(jí)到1.20.0,以及其他各種小修小補(bǔ)。

原文標(biāo)題:AutoML: Using Auto-Sklearn and Auto-PyTorch,作者:Kevin Vu

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2021-10-14 09:55:28

AnsibleanacronLinux

2024-02-04 09:43:53

機(jī)器人物聯(lián)網(wǎng)

2022-07-12 14:31:55

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

2024-06-11 10:41:14

2022-02-09 10:04:35

財(cái)務(wù)自動(dòng)化深度學(xué)習(xí)機(jī)器學(xué)習(xí)

2021-09-08 16:03:12

Kubernetes 安全開(kāi)源

2024-03-25 08:00:00

人工智能

2020-01-16 09:00:00

AI人工智能ML

2020-05-14 07:00:00

Linuxauto-cpufreCPU速度

2021-05-24 14:13:44

人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)

2021-12-15 23:41:09

機(jī)器學(xué)習(xí)人工智能技術(shù)

2017-11-01 15:38:54

機(jī)器學(xué)習(xí)數(shù)據(jù)科學(xué)資源

2014-05-13 11:44:07

亞馬遜云游戲

2021-09-17 15:56:14

數(shù)據(jù)平臺(tái)自動(dòng)化

2021-11-19 10:55:03

GitOps運(yùn)維自動(dòng)化

2022-11-15 17:07:40

開(kāi)發(fā)自動(dòng)化前端

2020-04-29 11:28:54

智能自動(dòng)化機(jī)器人流程自動(dòng)化AI

2017-08-28 16:09:13

機(jī)器學(xué)習(xí)自動(dòng)化Hyperopt

2020-03-18 09:23:24

Python數(shù)據(jù)SQL

2018-08-31 09:55:38

Ansible網(wǎng)絡(luò)自動(dòng)化
點(diǎn)贊
收藏

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