我們精心挑選了22種開源自動機器學習庫,你pick誰?
- 作者|Georgian Partners
- 譯者|無明
- 編輯|Debra
- 微信公眾號“AI 前線”(ID:ai-front)
典型的 ofollow,noindex">機器學習 專案包含不同的步驟:收集原始資料、合併資料來源、清理資料、特徵工程、模型構建、超引數調整、模型驗證和部署。資料科學家可以為模型構建階段貢獻自己的聰明才智,但有趣的是,最耗時的機器學習部分似乎是特徵工程和超引數調整。因此,很多模型並不是最優的,由於受到時間限制,它們過早地從實驗階段進入到生產環境,或者因為花了太多時間調優導致到生產環境的部署被延遲。
自動機器學習(AutoML)框架減少了資料科學家的負擔,他們可以花更少的時間進行特徵工程和超引數調整,花更多的時間用於試驗模型架構。快速探索解決方案空間不僅讓資料科學家可以快速地評估資料集,還為模型改進提供了基線效能。
概 述
我們調研了一些開源框架,它們可以用於自動化機器學習管道的一個或多個部分。機器學習管道的這些部分可以通過自動框架進行模型構建、特徵工程和超引數優化,因此我們對聲稱可以優化這些任務的成熟框架進行了分析。我們選擇能夠讓資料科學團隊以最少的工作量把它們包含在機器學習管道中的庫。我們的評估標準包括:庫要實現的目標、庫實現的統計方法,以及在決定是否將其與新專案或現有專案進行整合時需要考慮的主要因素。
區域性管道解決方案
一些 AutoML 解決方案解決了資料科學管道的單個部分。它們不提供端到端的解決方案,一般側重於實現最前沿的方法來解決特定問題,或被用在具有獨特約束的特定環境中。
特徵工程
feature-tools
專案地址:https://github.com/Featuretools/featuretools
Star:1,347
Fork:139
最新發布:2018 年 5 月 30 日(0.1.21)
featuretools 是一個旨在通過利用關係資料庫資料集中的模式來解決特徵工程問題的開源庫。它使用了深度特徵合成(DFS)演算法,這個演算法會遍歷關係資料庫模式所描述的資料關係路徑。DFS 在遍歷這些路徑時,通過應用於資料的操作(如 sum、average、count)來生成合成特徵。例如,它可以對來自給定客戶 ID 的事務列表進行 sum 操作。不過這是一個深度操作,演算法可以遍歷更深層的特徵。featuretools 的最大優勢在於它的可靠性以及在使用時間序列資料時處理資訊洩漏的能力。
boruta-py
專案地址:https://github.com/scikit-learn-contrib/boruta_py
Star:318
Fork:82
最新發布:2017 年 3 月 5 日(0.1.5)
boruta-py 是 brouta 特徵消減策略的一種實現,其中問題是以“完全相關”的方式進行構建,演算法將保留對模型有顯著貢獻的所有特徵。這與其他很多特徵消減演算法所使用的“最小化最優”特徵集相反。
boruta 通過建立由目標特徵的隨機排序值組成的合成特徵來確定特徵重要性,然後在原始特徵集上訓練基於簡單樹的分類器和在合成特徵中替換目標特徵的特徵集。所有特徵的效能差異被用於計算相關性。
categorical-encoding
專案地址:https://github.com/scikit-learn-contrib/categorical-encoding
Star:494
Fork:115
最新發布:2018 年 1 月 22 日(1.2.6)
這個庫擴充套件了很多實現 scikit-learn 資料轉換器介面的分類編碼方法,並實現了常見的分類編碼方法,例如單熱編碼和雜湊編碼,也有更利基的編碼方法,如基本編碼和目標編碼。這個庫對於處理現實世界的分類變數來說很有用,比如那些具有高基數的變數。這個庫還可以直接與 pandas 一起使用,用於計算缺失值,以及處理訓練集之外的變換值。
tsfresh
專案地址:https://github.com/blue-yonder/tsfresh
Star:2,781
Fork:340
最新發布:2017 年 10 月 14 日(0.11.0)
這個庫專注於基於時間序列資料生成特徵,由德國零售分析公司開源,並提供支援。它從時間序列資料中提取描述時間序列趨勢的特徵列表。這些特徵包括像方差一樣簡單的特徵和與近似熵一樣複雜的特徵。這個庫能夠從資料中提取趨勢,讓機器學習演算法更容易地解釋時間序列資料集。它通過假設檢驗來獲取大量生成的特徵集,並將其消減到最能解釋趨勢的特徵。tsfresh 與 pandas 和 sklearn 相容,從而可以插入到現有的資料科學管道中。Tsfresh 的主要功能是它的可伸縮資料處理能力,並已在具有大量時間序列資料的生產系統中得到了驗證。
Trane
專案地址:https://github.com/HDI-Project/Trane
Star:4
Fork:1
最新發布:2018 年 2 月 5 日(0.1.0)
這個庫是麻省理工學院 HDI 專案的產品。Trane 可以處理儲存在關係資料庫中的時間序列資料,用於表述時間序列問題。資料科學家可以通過指定資料集元資訊讓這個引擎表述資料庫的時間序列資料的監督問題。這個過程通過 json 檔案進行描述,資料科學家將在這個檔案中描述列和資料型別。這個框架會處理這個檔案,並生成可能的預測問題,而這些問題又可用於修改資料集。這個專案可用於以半自動化的方式生成其他特徵。
FeatureHub
專案地址:https://github.com/HDI-Project/FeatureHub
Star:32
Fork:5
最新發布:2018 年 5 月 9 日(0.3.0)
來自麻省理工學院 HDI 實驗室的另一個專案,FeatureHub 建立在 JupyterHub 之上,可以讓資料科學家在開發特徵工程方法時進行協作。FeatureHub 會自動給生成的特徵“打分”,以確定模型的總體價值。
超引數優化器
Skopt
專案地址:https://scikit-optimize.github.io/
Star:880
Fork:340
最新發布:2011 年 3 月 25 日(0.5.2)
Skopt 是一個超引數優化庫,包括隨機搜尋、貝葉斯搜尋、決策森林和梯度提升樹。這個庫提供了可靠的優化方法,不過這些模型在給定較小的搜尋空間和良好的初始估計值時表現最佳。
Hyperopt
專案地址:https://github.com/hyperopt/hyperopt-sklearn
Star:2,161
Fork:473
最新發布:2016 年 11 月 20 日(0.1)
Hyperopt 是一個超引數優化庫,可以調整“笨拙”的條件或受約束的搜尋空間。它支援跨多臺機器的並行化,使用 MongoDb 作為儲存超引數組合結果的中心資料庫。這個庫通過 hyperopt-sklearn 和 hyperas 來實現,而這兩個模型選擇和優化庫又分別是基於 scikit-learn 和 keras 構建的。
simple(x)
專案地址:https://github.com/chrisstroemel/Simple
Star:362
Fork:22
最新發布:處於實驗階段,需要手動安裝
simple(x) 是一個優化庫,是貝葉斯優化演算法的一個替代方案。與貝葉斯搜尋一樣,simple(x) 嘗試使用盡可能少的樣本進行優化,並將計算複雜度從 n降低到 log(n),因此對大型搜尋空間非常有用。這個庫使用單形(n 維三角形)而不是超立方體(n 維立方體)對搜尋空間進行建模,這樣做可以避免計算成本高昂的高斯過程。
Ray.tune
專案地址:https://github.com/ray-project/ray/tree/master/python/ray/tune
Star:3,435
Fork:462
最新發布:2018 年 3 月 27 日(0.4.0)
Ray.tune 是一個超引數優化庫,主要針對深度學習和強化學習模型。它結合了很多尖端的演算法,如超頻(最低限度地訓練可用於確定超引數效果的模型的演算法)、基於人口的訓練(在共享超引數的同時調整多個模型的演算法)、響應面演算法和中值停止規則(如果模型的效能低於中值就將其停止)。這一切都執行在 Ray 分散式計算平臺之上,這使得它具有極高的可擴充套件性。
Chocolate
專案地址:https://github.com/AIworx-Labs/chocolate
Star:26
Fork:26
最新發布:處於實驗階段,需要手動安裝
Chocolate 是一種分散的(支援沒有中央主節點的平行計算叢集)超引數優化庫,它使用公共資料庫來聯合各個任務的執行,支援網格搜尋、隨機搜尋、準隨機搜尋、貝葉斯搜尋和協方差矩陣自適應進化策略。它的獨特的功能包括支援受約束的搜尋空間和優化多個損失函式(多目標優化)。
GpFlowOpt
專案地址:https://github.com/GPflow/GPflowOpt
Star:102
Fork:27
最新發布:2017 年 9 月 11 日(0.1.0)
GpFlowOpt 是一個基於 GpFlow 的高斯過程優化器,GpFlow 是一個使用 Tensorflow 在 GPU 上執行高斯過程任務的庫。如果需要貝葉斯優化並且具有可用的 GPU 計算資源,那麼 GpFlowOpt 會是一個理想的優化器。
FAR-HO
專案地址:https://github.com/lucfra/FAR-HO
Star:22
Fork:5
最新發布:處於實驗階段,需要手動安裝
FAR-HO 是一個包含了一組在執行在 Tensorflow 上的基於梯度的優化器。這個庫的目的是提供對 Tensorflow 中基於梯度的超引數優化器的訪問,允許在 GPU 或其他針對張量優化的計算環境中進行模型訓練和超引數優化。
Xcessiv
專案地址:https://github.com/reiinakano/xcessiv
Star:1,055
Fork:76
最新發布:2017 年 8 月 20 日(0.5.1)
Xcessiv 是一個用於大規模模型開發、執行和整合的框架。它的強大之處在於能夠通過單個 GUI 來管理大量機器學習模型的訓練、執行和評估。它還提供了多個整合工具,用於組合這些模型以實現最佳效能。它提供了一個貝葉斯搜尋引數優化器,支援高水平的並行,並且還支援與 TPOT 的整合。
HORD
專案地址:https://github.com/ilija139/HORD
Star:52
Fork:8
最新發布:處於實驗階段,需要手動安裝
HORD 是一種用於超引數優化的獨立演算法。它為黑盒模型生成一個代理函式,並使用代理函式來生成可能接近理想的超引數,以消減對完整模型的評估。與 parzen estimator、SMAC 和高斯過程相比,它始終表現出更高的一致性和更低的錯誤率。它特別適用於具有極高維度的情況。
ENAS-pytorch
專案地址:https://github.com/ilija139/HORD
Star:848
Fork:135
最新發布:處於實驗階段,需要手動安裝
ENAS-pytorch 使用 pytorch 實現了高效的神經架構搜尋。它通過共享引數來實現最快的網路,非常適用於深度學習架構搜尋。
其 他
其他開源解決方案
這些解決方案要麼與前面提到的解決方案很相似,要麼仍在開發當中。在這裡列在供參考:
Gpy/GpyOpt(高斯過程超優化庫)
auto-keras(Keras 架構和超引數搜尋庫)
randopt(實驗管理和超引數搜尋庫)
付費解決方案
隨著機器學習的不斷髮展,很多公司如雨後春筍般湧現,以解決整個資料科學過程中出現的各種問題。以下是一些 AutoML 公司列表。由於我們沒有對這些解決方案進行基準測試,因此不對它們的功效或特性進行評論。
H2O 無人駕駛 AI(全管道)
Mljar(全管道)
DataRobot(全管道)
MateLabs(全管道)
SigOpt(超引數優化)
全管道解決方案
ATM
專案地址:https://github.com/HDI-Project/ATM
Star:251
Fork:56
最新發布:處於實驗階段,需要手動安裝
Auto-Tune Models 是由麻省理工學院的“人與資料互動”專案(與 featuretools 相同)開發的框架,用於快速培訓機器學習模型,而且工作量很小。它使用窮舉搜尋和超引數優化來執行模型選擇。ATM 僅支援分類問題,並支援 AWS 上的分散式計算。
MLBox
專案地址:https://github.com/AxeldeRomblay/MLBox
Star:504
Fork:115
最新發布:2017 年 8 月 25 日(0.5.0)
MLBox 是一個自動化機器學習框架,其目標是為自動機器學習提供更新的途徑。除了現有框架已經實現的特徵工程之外,它還提供資料收集、資料清理和訓練測試漂移檢測。它使用 Tree Parzen Estimator 來優化所選模型型別的超引數。
auto_ml
專案地址:https://github.com/ClimbsRocks/auto_ml
Star:793
Fork:146
最新發布:2017 年 9 月 11 日(2.7.0)
auto_ml 是一種旨在不需要做太多工作就能從資料中獲取價值的工具。這個框架使用基於進化網格搜尋的方法完成特徵處理和模型優化。它通過利用高度優化的庫(如 XGBoost、TensorFlow、Keras、LightGBM 和 sklearn)來提高速度。最多 1 毫秒的預測時間是它的亮點。這個框架可快速洞察資料集,如特徵重要性,並建立初始預測模型。
auto-sklearn
專案地址:https://github.com/automl/auto-sklearn
Star:2,271
Fork:438
最新發布:2018 年 1 月 5 日(0.3.0)
auto-sklearn 使用貝葉斯搜尋來優化機器學習管道中使用的資料前處理器、特徵前處理器和分類器。多個管道經過訓練並整合成一個完整的模型。這個框架由弗萊堡大學的 ML4AAD 實驗室開發。它的優化過程使用由同一研究實驗室開發的 SMAC3 框架來完成。顧名思義,這個模型實現了 sklearn。auto-sklearn 的主要特點是一致性和穩定性。
H2O
專案地址:https://github.com/h2oai/h2o-3
Star:3,132
Fork:1,217
最新發布:2018 年 6 月 7 日(3.20.0.1)
H2O 是一個使用 Java 開發的機器學習平臺,它在與機器學習庫(如 sklearn)類似的抽象級別上執行。它還提供了一個自動機器學習模組,這個模組利用自身包含的演算法來建立機器學習模型。該框架對內置於 H2O 系統的前處理器執行詳盡搜尋,並使用笛卡爾網格搜尋或隨機網格搜尋來優化超引數。H2O 最大的優勢在於它能夠形成大型計算機叢集,從而能夠進行大規模伸縮。它還支援與 python、javascript、tableau、R 和 Flow(web UI)整合。
TPOT
專案地址:https://github.com/EpistasisLab/tpot
Star:4,130
Fork:705
最新發布:2017 年 9 月 27 日(0.9)
TPOT(基於樹的管道優化工具)是一種用於查詢和生成最佳資料科學管道程式碼的遺傳程式設計框架。TPOT 從 sklearn 中獲取演算法,與其他自動機器學習框架一樣。TPOT 最大的優勢在於其獨特的優化方法,可以提供更多獨特的管道。它還提供了一個將訓練好的管道直接轉換為程式碼的工具,這對於希望進一步調整生成模型的資料科學家來說是一個很大的好處。
結 論
這些框架為常見的資料科學問題提供了有價值的解決方案,它們能夠顯著提高資料科學團隊的工作效率,這樣他們就可以減少花在實現演算法上的時間,並花更多的時間思考理論。
英文原文:
https://medium.com/georgian-impact-blog/automatic-machine-learning-aml-landscape-survey-f75c3ae3bbf2
本站特約專欄文章,作者:AI前線,本文連結:https://www.afenxi.com/60843.html 。內容觀點不代表本站立場,如若轉載請聯絡專欄作者。