順應數據時代潮流,利用雲資源進行自動機器學習

近年來數據科學出現了兩種趨勢:

1.利用雲資源進行數據分析和模型訓練

2.機器學習管道的算法開發和優化

本文將簡要介紹這些趨勢,並在Python中使用Google Colaboratory以及通過雲資源自動機器學習來展示具體步驟。

使用Google Colab進行雲計算

最初,所有計算都是在大型計算機上完成的。你需要通過終端登錄,和多用戶同時共享的一臺大型計算機。然而,伴隨著微處理器的發明和個人計算機革命運動的產生,每個人都擁有了屬於自己的計算機。雖然筆記本電腦和臺式機都能完成日常工作任務,但隨著最近數據集規模的擴大和運行機器學習模型所需的計算能力的增加,利用雲資源計算勢在必行。

一般而言,雲計算是指“通過互聯網提供計算服務”。這涵蓋了從數據庫到服務器到軟件的各種各樣的服務,但在本文中,我們將以Jupyter Notebook的形式在雲上運行一個簡單的數據科學工作負載。我們將使用相對較新的Google Colaboratory服務:在Google服務器上運行Python的在線Jupyter Notebook功能,你無論在何地都可以通過互聯網連接訪問,並且可以像Google Doc一樣進行共享。

Google Colab使得雲計算的使用變得輕而易舉。過去,需要花費數十個小時配置Amazon EC2,才能在雲上運行Jupyter Notebook,還必須按小時付費!然而從去年起,Google宣佈現在可以在其Colab服務器上運行Jupyter Notebook,每次免費試用長達12小時。而且你不必擔心安裝軟件可能會面臨的技術困難,現今的筆記本電腦已經預裝了大多數的數據科學軟件包。

順應數據時代潮流,利用雲資源進行自動機器學習

首先在Colaboratory中打開筆記本

順應數據時代潮流,利用雲資源進行自動機器學習

豐富的在線資源使得數據科學變得越來越容易獲取,Colab項目降低了雲計算的障礙。對於那些熟悉Jupyter Notebooks的人來說,這是一次完美的革新,而對於那些不是很熟悉它的人來說,這是開始學習使用這個數據科學工具的好機會!

使用TPOT進行自動化機器學習

自動機器學習旨在通過算法設計和優化機器學習管道來解決特定的問題。在此背景下,機器學習管道包括:

1.特徵預處理:填補、縮放和構建新特徵

2.特徵選擇:降維

3.模型選擇:評估多種機器學習模型

4.超參數調整:尋找最佳模型設置

這些步驟可以無限組合,最佳解決方案將針對問題而改變!設計機器學習管道或許是一個耗時且令人沮喪的過程,不到最後你永遠不會知道你開發的解決方案是否接近最優方案。自動機器學習可以通過評估數以千計的可能管道來幫助你尋找針對特定問題的最佳(或接近最佳)解決方案。

機器學習只是數據科學過程的一部分,自動化機器學習並不意味著取代數據科學家。相反,自動機器學習是為了解放數據科學家,以便他們可以在更有價值的方面工作,例如收集數據或解釋模型。

自動機器學習工具有許多:H20、auto-sklearn、Google Cloud AutoML。本文將專注於由Randy Olson開發的TPOT。TPOT使用基因編程來找到最佳的機器學習管道。

基因編程

基因編程的工作原理如下:

1.從隨機生成的機器學習管道的初始數量開始,比如說100個,每一個都由用於特徵預處理、模型選擇和超參數調整的函數組成。

2.訓練每個管道(稱為個人)並使用交叉驗證來評估性能指標。交叉驗證性能代表個體的“適應性”。每一個人口的訓練都被稱為一代人。

3.經過一輪訓練後,第一代通過繁殖、變異和交叉創造第二代100人。繁殖意味著在管道中保持相同的步驟,選擇的概率與健康評分成正比。變異指一代人內部隨機變化。交叉是隨機變化,從一代到下一代人。總而言之,這三種變化將產生100條新的管道,每條管道都略有不同,但是,根據適應度函數最好的步驟更容易被保留。

4.重複這個過程,通過繁殖、變異和交叉創造新的個體。

5.在優化結束時,選擇性能最好的單個管道。

基因編程在建立機器學習模型方面的主要優勢在於探索。即使是時間充裕的人,也會由於知識和想象力有限,而無法嘗試所有預處理、模型和超參數的組合。基因程序設計不會對任何特定的機器學習步驟順序產生初始偏差,並且每一代都會對新的管線進行評估。

在雲上自動進行機器學習

現在,我們可以在Google Colab筆記本中使用TPOT來自動設計機器學習管道。

我們的任務是:根據紐約市的能源數據,要預測建築物的能源之星得分。通過使用人工特徵工程、降維、模型選擇和超參數調整,我們設計了一個梯度提升迴歸模型,該模型在測試集上實現了9.06分的平均絕對誤差(範圍從1到100)。

該數據包含數十個連續的數字變量(如建築物的能源使用和麵積)以及兩個獨熱編碼的分類變量(自治市鎮和建築物類型),共計82個特徵。

順應數據時代潮流,利用雲資源進行自動機器學習

原始數據功能

將所有缺失的值編碼為np.nan,並不對數據進行特徵預處理。

首先,我們需要確保TPOT已安裝在Google Colab中。大多數數據科學軟件包已經安裝好了,但我們可以使用系統命令添加任何新的數據(在Jupyter中):

順應數據時代潮流,利用雲資源進行自動機器學習

在讀入數據後,我們通常會填寫缺失值,並將這些規範化到一個範圍內。但是,除了特徵工程、模型選擇和超參數調整之外,TPOT還會自動計算缺失值並進行特徵縮放所以,我們的下一步是創建TPOT優化器:

順應數據時代潮流,利用雲資源進行自動機器學習

TPOT優化器的默認參數將評估100個管道,每個管道有100代,共10,000條管道。使用10倍交叉驗證,這代表有100,000個訓練在運行!為了避免在Colab服務器上耗盡時間,我們將設置最多8小時的時間進行評估。


在對優化器的調用中設置以下參數:

scoring = neg_mean_absolute error: 迴歸表現指標

max_time_minutes = 480:將評估限制為8小時

n_jobs = -1:使用機器上所有可用的內核

verbosity=2:在訓練時顯示有限的信息量

cv = 5:使用5倍交叉驗證(默認值為10)

TPOT優化器的語法設計與Scikit-Learn模型相同,因此我們可以使用.fit方法來訓練優化器。

順應數據時代潮流,利用雲資源進行自動機器學習

在訓練期間,會得到一些信息:

順應數據時代潮流,利用雲資源進行自動機器學習

由於時間限制,模型只能達到15代。這代表了1500個不同的獨立管道被評估,這比純手工的要多得多。

一旦模型已經過訓練,就可以使用tpot.fitted_pipeline_來查看最優管道。也可以將模型保存到Python腳本中:

順應數據時代潮流,利用雲資源進行自動機器學習

我們在Google Colab筆記本中為了將管道從服務器上傳到本地計算機上,我們必須使用Google Colab庫:

順應數據時代潮流,利用雲資源進行自動機器學習

然後打開文件並查看已完成的管道:

順應數據時代潮流,利用雲資源進行自動機器學習

我們可以看到優化器為我們提供了缺失的值,並構建了一個完整的模型管道。

要找到平均絕對誤差,可以使用.score方法:

順應數據時代潮流,利用雲資源進行自動機器學習

我們構建的一個梯度提升迴歸模型,其平均絕對誤差為9.06。自動化機器學習的性能有著顯著的提高,大幅縮短了開發時間。

我們可以使用優化的管道,並嘗試進一步完善解決方案。如果使用這個管道作為最終模型,可以試著解釋模型或者編寫一份記錄報告。

結論

在這篇文章中,簡要介紹了雲的功能和自動機器學習。只要有Google帳戶和互聯網,我們就可以使用Google Colab開發、運行和共享機器學習或數據科學工作負載。使用TPOT,我們可以自動開發具有功能預處理、模型選擇和超參數調整的優化機器學習管道。


分享到:


相關文章: