logo
Loading...

12/7 工作坊簡報:機器學習金手指 - Auto-sklearn - 輕鬆完成機器學習模型訓練!讓AutoML為你加速開發流程 - Cupoy

AutoML 的動機 完整的機器學習流程大致分成八個步驟: Python 熱門的 AutoML 開源套件 AutoGluon Auto-sklearn  FLAML H2O AutoM...

AutoML 的動機 完整的機器學習流程大致分成八個步驟: Python 熱門的 AutoML 開源套件 AutoGluon Auto-sklearn  FLAML H2O AutoML LightAutoML Pycaret MLJAR TPOT MLBox Auto-PyTorch AutoKeras talos AutoML 扮演的角色 許多企業開發了各種需求的 AutoML 平台,如雨後春雨般的出現: Google:Cloud AutoML Microsoft:Azure Machine Learning Amazon:SageMaker Autopilot Landing AI:LandingLens Chimes AI:Tukey AutoML 能幫助多少事情 典型的機器學習流程是一個迭代的循環週期,從定義問題、資料收集與處理、模型設計到最終模型部署,每個步驟極為重要且缺一不可。 DevOps DevOps ( Development 和 Operations 的組合詞 ) 是一種重視「軟體開發人員 (Dev)」和 「IT運維技術人員 (Ops)」之間溝通合作的文化、運動或慣例。 MLOps = ML + DEV + OPS Google 發展 AI 智慧醫療,辨識糖尿病視網膜病變,反拖累醫療流程 護士每小時掃描數十名患者,並經常在光線不足的情況下拍照,所以超過 1/5 照片因為不合標準被拒。 照片被踢出系統的患者,必須要再預約看診,但如果他們無法請假或沒有車,就會非常不方便。這讓護理師感到沮喪無力。 好不容易拍到合格的照片,由於系統必須將照片上傳到雲端處理,但碰到診所的網際網路連線有問題,造成篩檢作業延遲。 Ref: https://ai-blog.flow.tw/google-mit-ai-failure 借助 AutoML 尋找最佳模型 透過 AutoML 自動化的訓練找到一個滿意的模型。 超參數調參方法 模型挑選和超參數調整已經有比較成熟的方法可以協助我們有效的搜尋: Grid Search 網格搜索/窮舉搜索 Random Search 隨機搜索 Bayesian Optimization 貝葉斯優化 Grid Search (網格搜索) 又稱窮舉搜索。它的搜索方式是在所有可能的參數中,透過排列組合嘗試每一種可能性。 並將表現最好的參數最為最終的超參數搜尋結果。 資料來源:sklearn.model_selection.GridSearchCV Random Search (隨機搜索)  與網格搜索的差別在於使用者可以將欲搜尋的超參數設定一個期望的範圍。並找出所有隨機組合中表現最好的一組超參數。 資料來源:sklearn.model_selection.RandomizedSearchCV Bayesian Optimization (貝葉斯優化)  透過代理函數給定一組特定的候選超參數,快速估計實際模型的錯誤率。 機器學習金手指 - Auto-sklearn 今日學習目標: 了解 Auto-sklearn 運作原理 Meta Learning Bayesian Optimization Build Ensemble 實作 Auto-sklearn 採用鳶尾花朵資料集訓練,並比較兩種不同版本的 Auto-sklearn。 使用 pipelineprofiler 視覺化 AutoML 模型。 Auto-sklearn 背景 採用元學習 (Meta Learning) 選擇模型和超參數優化方法作為搜尋最佳模型的重點。 此 AutoML 套件主要是搜尋所有 Sklearn 機器學習演算法以模型的超參數,並使用貝葉斯優化與自動整合在有限時間內搜尋最佳模型。 第一版:Feurer, Matthias et al. “Efficient and Robust Automated Machine Learning,” NIPS 2015. 第二版:Feurer, Matthias et al. “Auto-Sklearn 2.0: Hands-free AutoML via Meta-Learning,” arXiv, 2020. AutoML 視為 CASH 問題 演算法選擇和超參數優化 (Combined Algorithm Selection and Hyperparameter, CASH) 的組合最佳化問題。 AutoML 領域當中將會面臨兩個問題: 沒有任何的演算法模型是可以保證在所有的資料集中表現最好 許多的機器學習模型往往依賴於超參數 Auto-sklearn 架構 Auto-sklearn 有三個核心: Meta Learning ➜ 模仿機器學習專家 Bayesian Optimization ➜ 有效率地挑選模型超參數 Build Ensemble ➜ 模型堆疊 資料來源:Feurer, Matthias et al. “Efficient and Robust Automated Machine Learning,” Advances in neural information processing systems 2015. Meta Learning 元學習的目的是要找出一個不錯的超參數做初始化,並提供貝葉斯優化有個明確的方向。 Bayesian Optimization 貝葉斯優化會尋找該資料集中最合適的資料前處理、特徵前處理與機器學習模型。 Data Pre-processors 在資料前處理部分 Auto-sklearn 提供了四種方法。包含特徵縮放、填補缺失值、類別特徵進行 one-hot encoding 與處理類別資料不平衡。 Feature Pre-processors 在特徵前處理部分 Auto-sklearn 提供了 12 種特徵處理的技巧,然而在眾多方法中僅會挑選其中一種。 Ensemble learning (整體學習) 又稱集成學習、整合學習,目的是希望結合眾多的模型產生一個更強大的模型。 1. Bagging: Random forest 2. Boosting: AdaBoost Gradient Boosting XGBoost 3. Stacking Bagging 自助重抽總合法 Bagging 是 Bootstrap aggregating 的縮寫 把訓練資料重新採樣產生不同組的訓練資料 最常見的例子為隨機森林 (Random forest) Boosting 提升法 Boosting 會根據每一筆訓練資料的難或簡單給予不同的權重 對於難的資料我們加強他的權重再訓練一個新的分類器或回歸器 最常見的例子為 AdaBoost、Gradient Boosting、XGboost Stacking 堆疊法  產生出 m 個不同演算法的 base learners 模型 base learner 模型彼此間並無互相關連 把 m 個 base learner 的輸出當成新的模型的輸入, 另外再訓練一個模型 Build Ensemble 在 Auto-sklearn 訓練階段會產生許多表現優良的模型,最終透過貪婪法的 Bagging Ensemble Selection 方法來合併多個模型組合成一個更強更大的模型,並提高預測的準確性。 搭建第一個 AutoML 模型  Example:鳶尾花朵 分類器 範例程式:https://reurl.cc/Gbgr4W 鳶尾花朵(iris)資料集一覽 總共有 4 個輸入 1 個輸出 資料特徵描述如下表: 1. 載入資料集 2. 切割訓練集與測試集 輸出結果: 安裝 Auto-sklearn 目前 Auto-sklearn 僅支援 Lunux 系統。若沒有此系統的人可以透過 Colab 體驗。 Auto-sklearn 使用方法 Parameters: time_left_for_this_task:搜尋時間(秒),預設3600秒(6分鐘)。 per_run_time_limit:每個模型訓練的上限時間,預設為time_left_for_this_task的1/10。 ensemble_size:模型輸出數量,預設50。 resampling_strategy:資料採樣方式。為了避免過擬合,可以採用交叉驗證機制。預設方法為最基本的 holdout。 Holdout Method 此方法是最經典且最簡單實作的交叉驗證法,Holdout 顧名思義就是將資料切出一部分作為模型評估的依據。 K-fold Cross-Validation 我們可以透過一些技巧切割驗證集,使得訓練過程中有一個更公正的評估方式。我們可以透過 K-Fold 方法將訓練資料再依序切割訓練集與測試集。 V1 訓練結果 V2 訓練結果 查看每個模型的權重 輸出模型 如果想將 AutoML 的模型儲存起來,可以透過 joblib 將模型打包匯出。 視覺化 AutoML 模型 Q1.  AutoML 硬體需求? 以今天實作的 Auto-sklearn 來說目前僅支援 Linux 系統 若要支援 GPU 運算,取決於採用的模型演算法 本機計算:在本機電腦或 VMa 上進行。 遠端計算:在 遠端伺服器叢集上進行。 資料來源:Microsoft azure machine-learning Q2. AutoML 如何選擇有效的參數測試池? To overcome the cold start problem, Auto-Sklearn, an open source AutoML library, incorporates warm start, through a process called meta-learning. 貝葉斯優化如何得到好的起始點? Q3. AutoML 產業結合應用方面的經驗分享 能否多介紹一點 AutoML 的應用場景與侷限性? 參考:AutoML 的商業應用 Q4. 投資或購買相關ML工具/系統平台/服務前建議試水溫的(免費)資源? 眾多 AutoML 的平台,如何選擇? No Code Google: Cloud AutoML Microsoft: Azure Machine Learning Amazon: SageMaker Autopilot Landing AI: LandingLens Chimes AI: tukey Q5. 什麼是 AutoML 目前最好的選擇? Low Code AutoGluon Auto-sklearn LightAutoML Pycaret