如何高效快速準確地完成ML任務,這4個AutoML庫瞭解一下

AIBigbull2050發表於2020-09-22
  2020-09-21 14:23:31

選自TowardsDataScience

作者:Andre Ye

機器之心編譯

編輯:陳萍、杜偉

AutoML 是當前深度學習領域的熱門話題。只需要很少的工作,AutoML 就能透過快速有效的方式,為你的 ML 任務構建好網路模型,並實現高準確率。簡單有效!資料預處理、特徵工程、特徵提取和特徵選擇等任務皆可透過 AutoML 自動構建。

如何高效快速準確地完成ML任務,這4個AutoML庫瞭解一下

圖源:

自動機器學習(Automated Machine Learning, AutoML)是一個新興的領域,在這個領域中,建立機器學習模型來建模資料的過程是自動化的。AutoML 使得建模更容易,並且每個人都更容易掌握。

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

auto-sklearn

auto-sklearn 是一個自動機器學習工具包,它與標準 sklearn 介面無縫整合,因此社群中很多人都很熟悉該工具。透過使用最近的一些方法,比如貝葉斯最佳化,該庫被用來導航模型的可能空間,並學習推理特定配置是否能很好地完成給定任務。

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

我們提出了一個新的、基於 scikit-learn 的魯棒 AutoML 系統,其中使用 15 個分類器、14 種特徵預處理方法和 4 種資料預處理方法,生成了一個具有 110 個超引數的結構化假設空間。

auto-sklearn 可能最適合剛接觸 AutoML 的使用者。除了發現資料集的資料準備和模型選擇之外,該庫還可以從在類似資料集上表現良好的模型中學習。表現最好的模型聚集在一個集合中。

如何高效快速準確地完成ML任務,這4個AutoML庫瞭解一下

圖源:《Efficient and Robust Automated Machine Learning》

在高效實現方面,auto-sklearn 需要的使用者互動最少。使用 pip install auto-sklearn 即可安裝庫。

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

更多 AutoSklearn 相關文件請查閱:。

TPOT

TPOT 是另一種基於 Python 的自動機器學習開發工具,該工具更關注資料準備、建模演算法和模型超引數。它透過一種基於進化樹的結,即自動設計和最佳化機器學習 pipelie 的樹表示工作流最佳化(Tree-based Pipeline Optimization Tool, TPOT),從而實現特徵選擇、預處理和構建的自動化。

如何高效快速準確地完成ML任務,這4個AutoML庫瞭解一下

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

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

正如 Pedro Domingos 所說,「資料量大的愚蠢演算法勝過資料有限的聰明演算法」。事實就是這樣:TPOT 可以生成複雜的資料預處理 pipeline。

如何高效快速準確地完成ML任務,這4個AutoML庫瞭解一下

潛在的 pipelie(圖源:TPOT 文件)。

TPOT pipeline 最佳化器可能需要幾個小時才能產生很好的結果,就像很多 AutoML 演算法一樣(除非資料集很小)。使用者可以在 Kaggle commits 或 Google Colab 中執行這些耗時的程式。

也許 TPOT 最好的特性是它將模型匯出為 Python 程式碼檔案,後續可以使用它。具體文件和教程示例參見以下兩個連結:

TPOT 文件地址:。

TPOT 的教程示例地址:examples/

HyperOpt

HyperOpt 是一個用於貝葉斯最佳化的 Python 庫,由 James Bergstra 開發。該庫專為大規模最佳化具有數百個引數的模型而設計,顯式地用於最佳化機器學習 pipeline,並可選擇在多個核心和機器上擴充套件最佳化過程。

但是,HyperOpt 很難直接使用,因為它非常具有技術性,需要仔細指定最佳化程式和引數。相反,作者建議使用 HyperOpt-sklearn,這是一個融合了 sklearn 庫的 HyperOpt 包裝器。

具體來說,HyperOpt 雖然支援預處理,但非常關注進入特定模型的幾十個超引數。就一次 HyperOpt sklearn 搜尋的結果來說,它生成了一個沒有預處理的梯度提升分類器:

如何構建 HyperOpt-sklearn 模型可以檢視源文件。它比 auto-sklearn 複雜得多,也比 TPOT 複雜一點。但是如果超引數很重要的話,它可能是值得的。

文件地址:

AutoKeras

與標準機器學習庫相比,神經網路和深度學習功能更強大,因此更難實現自動化。AutoKeras 庫有哪些功效呢?具體如下:

透過 AutoKeras,神經框架搜尋演算法可以找到最佳架構,如單個網路層中的神經元數量、層數量、要合併的層、以及濾波器大小或 Dropout 中丟失神經元百分比等特定於層的引數。一旦搜尋完成,使用者可以將其作為普通的 TF/Keras 模型使用;

透過 AutoKeras,使用者可以構建一個包含嵌入和空間縮減等複雜元素的模型,這些元素對於學習深度學習過程中的人來說是不太容易訪問的;

當使用 AutoKeras 建立模型時,向量化或清除文字資料等許多預處理操作都能完成並進行最佳化;

初始化和訓練一次搜尋需要兩行程式碼。AutoKeras 擁有一個類似於 keras 的介面,所以它並不難記憶和使用。

AutoKeras 支援文字、影像和結構化資料,為初學者和尋求更多參與技術知識的人提供介面。AutoKeras 使用進化神經網路架構搜尋方法來減輕研究人員的繁重和模稜兩可的工作。

儘管 AutoKeras 的執行需要很長時間,但使用者可以指定引數來控制執行時間、探索模型的數量以及搜尋空間大小等。

AutoKeras 的相關內容參閱以下兩個連結:

文件地址:

教程地址:

四個庫各有特色,應該選哪個?

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

如果你的首要任務是獲取一個乾淨、簡單的介面和相對快速的結果,選擇 auto-sklearn。另外:該庫與 sklearn 自然整合,可以使用常用的模型和方法,能很好地控制時間;

如果你的首要任務是實現高準確率,並且不需要考慮長時間的訓練,則使用 TPOT。額外收穫:為最佳模型輸出 Python 程式碼;

如果你的首要任務是實現高準確率,依然不需要考慮長時間的訓練,也可選擇使用 HyperOpt-sklearn。該庫強調模型的超引數最佳化,是否富有成效取決於資料集和演算法;

如果你需要神經網路(警告:不要高估它們的能力),就使用 AutoKeras,尤其是以文字或影像形式出現時。訓練確實需要很長時間,但有很多措施可以控制時間和搜尋空間大小。

參考連結:







來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2723243/,如需轉載,請註明出處,否則將追究法律責任。

相關文章