自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何高效、快速、準確地完成ML任務(wù),這4個AutoML庫了解一下

開發(fā) 開發(fā)工具 深度學習
在本文中,作者詳細介紹了四種自動化的 ML 工具包,分別是 auto-sklearn、TPOT、HyperOpt 以及 AutoKeras。如果你對 AutoML 感興趣,這四個 Python 庫是最好的選擇。作者還在文章結(jié)尾文章對這四個工具包進行了比較。

自動機器學習(Automated Machine Learning, AutoML)是一個新興的領(lǐng)域,在這個領(lǐng)域中,建立機器學習模型來建模數(shù)據(jù)的過程是自動化的。AutoML 使得建模更容易,并且每個人都更容易掌握。

在本文中,作者詳細介紹了四種自動化的 ML 工具包,分別是 auto-sklearn、TPOT、HyperOpt 以及 AutoKeras。如果你對 AutoML 感興趣,這四個 Python 庫是最好的選擇。作者還在文章結(jié)尾文章對這四個工具包進行了比較。

[[344012]]

auto-sklearn

auto-sklearn 是一個自動機器學習工具包,它與標準 sklearn 接口無縫集成,因此社區(qū)中很多人都很熟悉該工具。通過使用最近的一些方法,比如貝葉斯優(yōu)化,該庫被用來導航模型的可能空間,并學習推理特定配置是否能很好地完成給定任務(wù)。

該庫由 Matthias Feurer 等人提出,技術(shù)細節(jié)請查閱論文《Efficient and Robust Machine Learning》。Feurer 在這篇論文中寫道:

我們提出了一個新的、基于 scikit-learn 的魯棒 AutoML 系統(tǒng),其中使用 15 個分類器、14 種特征預處理方法和 4 種數(shù)據(jù)預處理方法,生成了一個具有 110 個超參數(shù)的結(jié)構(gòu)化假設(shè)空間。

auto-sklearn 可能最適合剛接觸 AutoML 的用戶。除了發(fā)現(xiàn)數(shù)據(jù)集的數(shù)據(jù)準備和模型選擇之外,該庫還可以從在類似數(shù)據(jù)集上表現(xiàn)良好的模型中學習。表現(xiàn)最好的模型聚集在一個集合中。

圖源:《Efficient and Robust Automated Machine Learning》

在高效實現(xiàn)方面,auto-sklearn 需要的用戶交互最少。使用 pip install auto-sklearn 即可安裝庫。

該庫可以使用的兩個主要類是 AutoSklearnClassifier 和 AutoSklearnRegressor,它們分別用來做分類和回歸任務(wù)。兩者具有相同的用戶指定參數(shù),其中最重要的是時間約束和集合大小。

  1. import autosklearn as ask 
  2. #ask.regression.AutoSklearnRegressor() for regression tasks 
  3. model = ask.classification.AutoSklearnClassifier(ensemble_size=10, #size of the end ensemble (minimum is 1) 
  4.                                                  time_left_for_this_task=120, #the number of seconds the process runs for 
  5.                                                  per_run_time_limit=30) #maximum seconds allocated per model 
  6. model.fit(X_train, y_train) #begin fitting the search model 
  7. print(model.sprint_statistics()) #print statistics for the search 
  8. y_predictions = model.predict(X_test) #get predictions from the model 

更多 AutoSklearn 相關(guān)文檔請查閱:https://automl.github.io/auto-sklearn/master/。

TPOT

TPOT 是另一種基于 Python 的自動機器學習開發(fā)工具,該工具更關(guān)注數(shù)據(jù)準備、建模算法和模型超參數(shù)。它通過一種基于進化樹的結(jié),即自動設(shè)計和優(yōu)化機器學習 pipelie 的樹表示工作流優(yōu)化(Tree-based Pipeline Optimization Tool, TPOT),從而實現(xiàn)特征選擇、預處理和構(gòu)建的自動化。

圖源:《Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science》 。

程序或 pipeline 用樹表示。遺傳編程(Genetic Program, GP)選擇并演化某些程序,以最大化每個自動化機器學習管道的最終結(jié)果。

正如 Pedro Domingos 所說,「數(shù)據(jù)量大的愚蠢算法勝過數(shù)據(jù)有限的聰明算法」。事實就是這樣:TPOT 可以生成復雜的數(shù)據(jù)預處理 pipeline。

潛在的 pipelie(圖源:TPOT 文檔)

TPOT pipeline 優(yōu)化器可能需要幾個小時才能產(chǎn)生很好的結(jié)果,就像很多 AutoML 算法一樣(除非數(shù)據(jù)集很小)。用戶可以在 Kaggle commits 或 Google Colab 中運行這些耗時的程序。

  1. import tpot 
  2. pipeline_optimizer = tpot.TPOTClassifier(generations=5, #number of iterations to run the training 
  3.                                          population_size=20, #number of individuals to train 
  4.                                          cv=5) #number of folds in StratifiedKFold 
  5. pipeline_optimizer.fit(X_train, y_train) #fit the pipeline optimizer - can take a long time 
  6. print(pipeline_optimizer.score(X_test, y_test)) #print scoring for the pipeline 
  7. pipeline_optimizer.export('tpot_exported_pipeline.py') #export the pipeline - in Python code! 

也許 TPOT 最好的特性是它將模型導出為 Python 代碼文件,后續(xù)可以使用它。具體文檔和教程示例參見以下兩個鏈接:

  • TPOT 文檔地址:https://epistasislab.github.io/tpot/。
  • TPOT 的教程示例地址:https://epistasislab.github.io/tpot/examples/

HyperOpt

HyperOpt 是一個用于貝葉斯優(yōu)化的 Python 庫,由 James Bergstra 開發(fā)。該庫專為大規(guī)模優(yōu)化具有數(shù)百個參數(shù)的模型而設(shè)計,顯式地用于優(yōu)化機器學習 pipeline,并可選擇在多個核心和機器上擴展優(yōu)化過程。

但是,HyperOpt 很難直接使用,因為它非常具有技術(shù)性,需要仔細指定優(yōu)化程序和參數(shù)。相反,作者建議使用 HyperOpt-sklearn,這是一個融合了 sklearn 庫的 HyperOpt 包裝器。

具體來說,HyperOpt 雖然支持預處理,但非常關(guān)注進入特定模型的幾十個超參數(shù)。就一次 HyperOpt sklearn 搜索的結(jié)果來說,它生成了一個沒有預處理的梯度提升分類器:

  1. {'learner': GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse'init=None
  2.                            learning_rate=0.009132299586303643, loss='deviance'
  3.                            max_depth=Nonemax_features='sqrt'
  4.                            max_leaf_nodes=Nonemin_impurity_decrease=0.0, 
  5.                            min_impurity_split=Nonemin_samples_leaf=1
  6.                            min_samples_split=2min_weight_fraction_leaf=0.0, 
  7.                            n_estimators=342n_iter_no_change=None
  8.                            presort='auto'random_state=2
  9.                            subsample=0.6844206624548879, tol=0.0001, 
  10.                            validation_fraction=0.1, verbose=0
  11.                            warm_start=False), 'preprocs': (), 'ex_preprocs': ()} 

如何構(gòu)建 HyperOpt-sklearn 模型可以查看源文檔。它比 auto-sklearn 復雜得多,也比 TPOT 復雜一點。但是如果超參數(shù)很重要的話,它可能是值得的。

文檔地址:http://hyperopt.github.io/hyperopt-sklearn/

AutoKeras

與標準機器學習庫相比,神經(jīng)網(wǎng)絡(luò)和深度學習功能更強大,因此更難實現(xiàn)自動化。AutoKeras 庫有哪些功效呢?具體如下:

  1. 通過 AutoKeras,神經(jīng)框架搜索算法可以找到最佳架構(gòu),如單個網(wǎng)絡(luò)層中的神經(jīng)元數(shù)量、層數(shù)量、要合并的層、以及濾波器大小或 Dropout 中丟失神經(jīng)元百分比等特定于層的參數(shù)。一旦搜索完成,用戶可以將其作為普通的 TF/Keras 模型使用;
  • 通過 AutoKeras,用戶可以構(gòu)建一個包含嵌入和空間縮減等復雜元素的模型,這些元素對于學習深度學習過程中的人來說是不太容易訪問的;
  • 當使用 AutoKeras 創(chuàng)建模型時,向量化或清除文本數(shù)據(jù)等許多預處理操作都能完成并進行優(yōu)化;
  • 初始化和訓練一次搜索需要兩行代碼。AutoKeras 擁有一個類似于 keras 的界面,所以它并不難記憶和使用。

AutoKeras 支持文本、圖像和結(jié)構(gòu)化數(shù)據(jù),為初學者和尋求更多參與技術(shù)知識的人提供界面。AutoKeras 使用進化神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索方法來減輕研究人員的繁重和模棱兩可的工作。

盡管 AutoKeras 的運行需要很長時間,但用戶可以指定參數(shù)來控制運行時間、探索模型的數(shù)量以及搜索空間大小等。

  1. Hyperparameter      |Value     |Best Value So Far   
  2. text_block_1/block_type|transformer|transformer         
  3. classification_head_1/dropout|0         |0                   
  4. optimizer           |adam      |adam                 
  5. learning_rate       |0.001     |0.001               
  6. text_block_1/max_tokens|20000     |20000               
  7. text_block_1/text_to_int_sequence_1/output_sequence_length|200       |200                 
  8. text_block_1/transformer_1/pretraining|none      |none                 
  9. text_block_1/transformer_1/embedding_dim|32        |32                   
  10. text_block_1/transformer_1/num_heads|2         |2                   
  11. text_block_1/transformer_1/dense_dim|32        |32                   
  12. text_block_1/transformer_1/dropout|0.25      |0.25                 
  13. text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avg           
  14. text_block_1/dense_block_1/num_layers|1         |1                   
  15. text_block_1/dense_block_1/use_batchnorm|False     |False               
  16. text_block_1/dense_block_1/dropout|0.5       |0.5                 
  17. text_block_1/dense_block_1/units_0|20        |20 

AutoKeras 的相關(guān)內(nèi)容參閱以下兩個鏈接:

  • 文檔地址:https://autokeras.com/
  • 教程地址:https://towardsdatascience.com/automl-creating-top-performing-neural-networks-without-defining-architecture-c7d3b08cddc

四個庫各有特色,應(yīng)該選哪個?

用戶可以根據(jù)自己的需求選擇合適的 Python 庫,作者給出了以下幾個建議:

  • 如果你的首要任務(wù)是獲取一個干凈、簡單的界面和相對快速的結(jié)果,選擇 auto-sklearn。另外:該庫與 sklearn 自然集成,可以使用常用的模型和方法,能很好地控制時間;
  • 如果你的首要任務(wù)是實現(xiàn)高準確率,并且不需要考慮長時間的訓練,則使用 TPOT。額外收獲:為最佳模型輸出 Python 代碼;
  • 如果你的首要任務(wù)是實現(xiàn)高準確率,依然不需要考慮長時間的訓練,也可選擇使用 HyperOpt-sklearn。該庫強調(diào)模型的超參數(shù)優(yōu)化,是否富有成效取決于數(shù)據(jù)集和算法;
  • 如果你需要神經(jīng)網(wǎng)絡(luò)(警告:不要高估它們的能力),就使用 AutoKeras,尤其是以文本或圖像形式出現(xiàn)時。訓練確實需要很長時間,但有很多措施可以控制時間和搜索空間大小。

參考鏈接:

https://towardsdatascience.com/4-python-automl-libraries-every-data-scientist-should-know-680ff5d6ad08

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】 

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2020-09-22 07:33:03

開發(fā)技能代碼

2021-07-07 17:53:06

教育行業(yè)人工智能AI

2020-03-11 09:37:48

程序員技能開發(fā)者

2019-02-20 14:16:43

2023-04-23 14:55:10

開發(fā)TypeScript裝飾器

2023-06-07 15:32:22

2021-08-12 10:05:06

MySQL數(shù)據(jù)庫MySQL

2021-11-19 10:25:23

MySQL數(shù)據(jù)庫架構(gòu)

2021-01-21 10:23:43

數(shù)據(jù)庫架構(gòu)技術(shù)

2018-10-15 05:42:52

超參數(shù)搜索深度學習數(shù)據(jù)科學

2020-12-10 08:44:35

WebSocket輪詢Comet

2022-03-24 13:36:18

Java悲觀鎖樂觀鎖

2020-07-30 08:27:33

Javascript閉包變量

2021-04-27 07:52:18

SQLNULLOR

2021-08-12 23:12:13

Windows 10Windows微軟

2020-02-10 14:26:10

GitHub代碼倉庫

2020-12-01 17:46:24

FossilGit

2018-06-05 17:40:36

人工智能語音識別

2024-04-11 12:19:01

Rust數(shù)據(jù)類型

2018-06-20 11:00:06

云應(yīng)用開發(fā)PaaS
點贊
收藏

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