深度學習-最佳入們邁向AI專題實戰 看更多請點我
一般來說,機器學習開發流程(Machine learning workflow),有許多種建議的模型,例如資料探勘(Data Mining)流程,包括CRISP-DM (cross-industry standard process for data mining,)、Google Cloud建議的流程...等,個人偏好的流程如下:
概分為10個步驟,不含較高層次的企業需求瞭解(Business Understanding),只包括實際開發的步驟:
- 蒐集資料,彙整為資料集(Dataset)。
- 資料清理(Data Cleaning)、資料探索與分析(Exploratory Data Analysis, EDA):EDA通常是以描述統計量及統計圖觀察資料的分佈,瞭解資料的特性、極端值(Outlier)、變數之間的關聯性。
- 特徵工程(Feature Engineering):原始蒐集的資料未必是影響預測目標的關鍵因素,有時候需要進行資料轉換,以找到關鍵的影響變數。
- 資料切割(Data Split):切割為訓練資料(Training Data)及測試資料(Test Data),一份資料提供模型訓練之用,另一份資料則用在衡量模型效能,例如準確度,切割的主要原因是確保測試資料不會參與訓練,以維持其公正性,即 Out-of-Sample Test。
- 選擇演算法(Learning Algorithms):依據問題的類型選擇適合的演算法。
- 模型訓練(Model Training):以演算法及訓練資料,進行訓練產出模型。
- 模型計分(Score Model):計算準確度等效能指標,評估模型的準確性。
- 模型評估(Evaluate Model):比較多個參數組合、多個演算法的準確度,找到最佳參數與演算法。
- 佈署(Deploy):複製最佳模型至正式環境(Production Environment),製作使用介面或提供API,通常以網頁服務(Web Services) 作為預測的API。
- 預測(Predict):用戶端傳入新資料或檔案,系統以模型進行預測,傳回預測結果。
其中第8個步驟 -- 模型評估(Evaluate Model),要比較多個模型的效能,可能是採用不同的演算法或不同的超參數(Hyperparameter),如果是後者,要如何取得最佳參數值呢? 如要同時調校多個超參數,有一些套件可以幫忙,包括Keras Tuner、hyperopt、Ray Tune、Ax…等。本文介紹Keras Tuner,步驟如下:
可以設置一些參數組合,每一組合建立一個模型,再比較各個模型的效能,參數測試範圍的設定有下列方式:
- Boolean:真/假。
- Choice:多個設定選項。
- Int/Float:整數/浮點數的連續範圍。
- Fixed:測試所有參數(tune_new_entries=True),除了目前的參數,也可依賴其他參數(parent_name)的設定。只有當其他參數值為特定值時,這個參數才會生效。
- conditional_scope:條件式,類似Fixed,依賴其他參數,只有當其他參數值為特定值時,這個條件才會生效。
測試方法(Tuners)有下列幾種,可擇一使用:
- Hyperband:測試所有組合。
- RandomSearch:若測試範圍過大,可隨機抽樣部份組合,加以測試。
- BayesianOptimization:搭配高斯過程(Gaussian process),依照前次的測試結果,決定下次的測試內容。
測試結果如下圖表,可觀察每一參數組合的優劣,選取其中的最佳參數組合。
相關程式可詳閱『深度學習-最佳入們邁向AI專題實戰』一書說明。