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

2021-01-18 機器之心Pro

選自TowardsDataScience

作者:Andre Ye

機器之心編譯

編輯:陳萍、杜偉

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

圖源:https://unsplash.com/photos/pjAH2Ax4uWk

自動機器學習(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 的用戶。除了發現數據集的數據準備和模型選擇之外,該庫還可以從在類似數據集上表現良好的模型中學習。表現最好的模型聚集在一個集合中。

圖源:《Efficient and Robust Automated Machine Learning》

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

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

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

TPOT

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

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

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

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

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

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

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

TPOT 文檔地址:https://epistasislab.github.io/tpot/。

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

HyperOpt

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

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

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

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

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

AutoKeras

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

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

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

當使用 AutoKeras 創建模型時,向量化或清除文本數據等許多預處理操作都能完成並進行優化;

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

AutoKeras 支持文本、圖像和結構化數據,為初學者和尋求更多參與技術知識的人提供界面。AutoKeras 使用進化神經網絡架構搜索方法來減輕研究人員的繁重和模稜兩可的工作。

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

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

文檔地址:https://autokeras.com/

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

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

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

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

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

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

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

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

相關焦點

  • 《明日方舟》如何快速完成每日任務 快速完成每日任務方法介紹
    導 讀 明日方舟如何快速完成每日任務,每日任務在遊戲中是非常重要的,可以每天穩定的給玩家提供各種資源,下面小編就為大家介紹一下明日方舟如何快速完成每日任務
  • 谷歌AutoML新進展,進化算法加持,僅用數學運算自動找出ML算法
    但同時,這種方法也具有巨大的潛在益處,它不會偏向於我們已經了解的東西,並且有可能發現新的、更好的 ML 架構。從零開始學習算法的早期研究主要聚焦算法的一個方面(如學習規則),以減少搜索空間和計算量。但自 20 世紀 90 年代後這類研究逐漸冷門,直到現在才重新得到重視。
  • 谷歌AutoML鼻祖新作AutoML-Zero:從零開始構建機器學習算法
    「新智元急聘主筆、編輯、運營經理、客戶經理,添加HR微信(Dr-wly)了解詳情。」AutoML 試圖將特徵工程、模型選擇、參數調節這些與特徵、模型、優化、評價有關的重要步驟進行自動化地學習,使得機器學習模型無需人工幹預即可生成。谷歌這次提出的方法跟以往的有何不同呢?
  • 如何高效快速掌握論文研究方向和文獻?
    因此,能準確抓住閱讀文章的技巧非常重要,它能幫你節約大量時間,也能幫你準確抓住重點!那麼,今天就跟大家分享一下當我們確定了自己的研究方向,怎麼能高效快速把握當前文獻研究的主要內容以及如何準確把握文獻!首先,確定研究方向後先找出這個研究方向中寫得比較好的文獻綜述。
  • 家長如何幫助孩子,快速又準確地認識圖形
    也就是說,每一個物品都有它自己的形狀,這節課,就帶大家來認識一下,他們都是什麼形狀,都屬於什麼圖形。老師首先,挑選一個長條的方木塊,告訴我們,這個大家是不是很熟悉,對,是積木裡面的木塊,這個長條的方木塊,叫長方體。接著,老師又拿起一個跟剛才那個木塊很接近的方木塊,老師告訴我們個叫正方體。然後老師告訴我們,長方體和正方體的區別。主要是看他們的邊,是否是同一個長度。
  • 掌握了這24個頂級Python庫,你就是大神!
    它允許免費高效地提取數據,並將其存儲在首選格式中以備後用。這絕非個例。別擔心,PyOD庫就在這裡。PyOD是一個全面的、可伸縮的Python工具包,用於檢測外圍對象。離群值檢測基本上是識別與大多數數據顯著不同的稀有項或觀測值。以下代碼可用於下載pyOD:pip install pyodPyOD是如何工作的?如何實現PyOD?
  • 如何快速高效的配製PBS緩衝液
    其主要成分包括:氯化鈉(NaCl)、氯化鉀(KCl)、磷酸氫二鈉(Na2HPO4)和磷酸二氫鉀(KH2PO4)。如何快速且高效的配製PBS緩衝液呢?首先我們需要配製10X的PBS母液,然後再對其母液進行1:10稀釋即可獲得PBS緩衝液。這樣做有兩個巨大的優勢:1,可以一勞永逸;2,減小誤差。下面為大家進行介紹。
  • 數據分析-numpy庫快速了解
    可用來存儲和處理大型矩陣,比Python自身的嵌套列表結構要高效的多,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。 數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據 設置專門的數組對象,經過優化,可以提升這類應用的運算速度觀察:科學計算中,一個維度所有數據的類型往往相同 數組對象採用相同的數據類型,有助於節省運算和存儲空間具體可以看下面一個例子:(來源嵩天老師案例)3.numpy庫怎麼使用先安裝numpy
  • AppGallery Connect高效開發指南:如何快速、穩固地構建應用
    應用構建就像蓋高樓大廈要先建地基的過程,如何像建地基一樣,迅速、穩固地構建應用,保證構建後的質量與高可用性,並為之後的分發、運營、分析提供堅實的基礎,是開發者十分關注的環節。針對應用構建,AppGallery Connect(以下簡稱AGC)為開發者開放了4大服務,幫助開發者達到快速構建應用、提高開發效率的目的。認證服務——基於預構建的託管式認證系統,更有效率地保護您的移動和Web用戶的數據安全。
  • 《命運2》快速完成巨蟒任務心得
    《命運2》遊戲中玩家可能需要通過完成一些任務才能讓自己獲得一些特殊裝備和獎勵
  • 如何讓神經聲碼器高效地用於序列到序列聲學模型
    如何讓神經聲碼器高效地用於序列到序列聲學模型 IT創事記 發表於 2021-01-07 16:01:32 往往在放下手機之後你才會意識到,電話那頭的客服其實是個機器人;或者準確地說,是「一位」智能客服。
  • TPU加AutoML:50美元快速訓練高效的ImageNet圖像分類網絡
    但新型的 AmoebaNet-D 大大減少了計算時間,這種網絡基於進化策略能高效搜索神經網絡架構並實現快速的訓練。谷歌上個月其實已經介紹了這種網絡,詳細內容前查看:進化算法 + AutoML,谷歌提出新型神經網絡架構搜索方法。
  • 谷歌大腦提出AutoML-Zero,只會數學運算就能找到AI算法|開源
    下面我們先來看看,AutoML在CIFAR-10的二元分類任務上是如何一步步進化的。它首先發現了線性回歸,然後找到了損失函數、梯度下降。隨著訓練的進行,出現了隨機學習率、隨機權重、激活函數ReLU、梯度歸一化,最後得到了84.06 ± 0.10%正確率的終極算法。只訓練一個二元分類結果還不太具有說服力,作者又用3種極端情況考察了Auto ML。
  • "妙筆"生花:一個易用、高效的文本生成開源庫
    隨著研究的不斷深入,文本生成領域下的子任務和相應的模型越來越豐富,一些優秀的開源框架也紛紛湧現。 現有的開源文本生成庫大致可分為兩類,一類傾向於模塊化驅動,提供各個組件供研究者搭建不同的模型,但缺點在於許多特殊的baseline無法通過模塊完成;另一類傾向於baseline驅動,方便用戶快速調用baseline,但缺點在於整體結構不夠統一,可擴展性有限。
  • GitHub上6個超強開源機器學習庫盤點
    到目前為止,XLNet已經在20項自然語言處理任務上超過了BERT的表現,並且在18項任務上取得了當前最佳效果。下面列出了二者在閱讀理解任務的幾個常見衡量維度上的測試結果。如果想了解更多,以下是文本分類任務的測試結果。毫不誇張地說,XLNet的表現十分出色。2.
  • 使用Unity感知工具大批量生成、分析合成數據,高效地訓練ML模型
    在系列首篇文章中(點擊回看),我們討論了搜集大量標籤圖像、訓練機器學習模型完成電腦視覺任務時遇到的各種挑戰。還討論了Google Cloud AI和OpenAI的最前沿研究,在物體檢測等類似任務中使用合成數據的可行性。 然而,搜集合成數據、製作可用於訓練的數據集是十分複雜的,一不小心就會有所疏漏。
  • 2017年最流行的15個數據科學Python庫
    核心庫1)NumPy地址:http://www.numpy.org當使用 Python 開始處理科學任務時,不可避免地需要求助 Python 的 SciPy Stack,它是專門為 Python 中的科學計算而設計的軟體的集合(不要與 SciPy 混淆,它只是這個 stack 的一部分,以及圍繞這個 stack 的社區)。
  • 開原始碼可以幫助研究者有質量地完成這項任務
    人工智慧領域發展到現在,有很多很多的開原始碼可以幫助研究者快速、高效、有質量地完成這項任務。下面就列舉一些其中的一些代碼,使用的主要是最近剛發布的版本,其他版本已經在生產環境中使用了。七層網絡層到數據層,通過流媒體協議提供多平臺的分布式api,不同平臺可以通過tcp/ip直接交互,也可以將其中某段代碼放在二進位流的位置就可以透傳,而namenode負責api的解析和封裝,也就是把封裝過的tcp協議放在linuxmachine上至於namenode本身,將api的內容封裝再給os,os將文件內容轉化成一個列表,將這個列表發送到python中,如果os收到這個列表,就可以完成這個功能並返回給伺服器
  • TFX 最新博文:如何使用 TensorFlow 生態系統實現快速高效的 BERT...
    通過與 TensorFlow 團隊合作,並使用他們的最新成果,Concur 實驗室最終實現了一致、簡單、快速的 BERT 模型推斷,可以在幾毫秒內實現從原始文本的分類預測。那麼,各種 TensorFlow 庫和組件如何幫助研究人員達到這個裡程碑?作為 SAP Concur 實驗室的高級機器學習工程師,Hannes Hapke 寫了一篇博文分享了他們的做法。