1、自動化模型選擇核心問題
1.1搜索空間
搜索空間定義了對分類問題或回歸問題的可選擇的機器學習算法,如KNN、SVM、k-means等。
1.2搜索策略
搜索策略定義了使用怎樣的算法可以快速准確找到最優的模型。常見的搜索方法包括貝葉斯優化、進化算法等。
2、自動化模型選擇
2.1基於貝葉斯優化的自動化模型選擇
2.1.1Auto-WEKA
將機器學習算法規約成組合算法選擇和超慘優化(Combined Algorithm Selection and Hyper-parameter optimization, CASH)問題
(1)搜索空間
Auto-WEKA中包含39中基本元素:
- 27中基分類器,比如KNN、SVM、LR等
- 10中meta分類器,比如AdaBoostM1、LogitBoost等
- 2中ensemble方法,Vote和stacking
其中,meta分類器可以任選一種基分類器作為輸入,ensemble分類器可以使用最多5種基分類器作為輸入
數據方面,使用k-fold交叉驗證
(2)搜索策略
CASH問題的優化算法有兩種:Sequential Model-based Algorithm Configuration(SMAC)和Tree-structured Parzen Estimator(TPE),都屬於SMBO算法(一種貝葉斯優化的算法)
2.1.2auto-sklearn
auot-sklearn是2015年被提出的,是一個基於python環境下的機器學習包scikit-learn的AutoML機器學習框架
在Auto-WEKA的基礎上,為AutoML框架的貝葉斯超參數優化添加了兩個組件:用於初始化貝葉斯優化器的元學習和優化期間模型的自動集成。
(1)搜索空間
auto-sklearn中包括33個基本元素
- 15中分類算法(KNN、AdaBoost、SVM等)
- 14種特征預處理方法(PCA、ICA等方法)
- 4種數據預處理方法(one-hot enconding、imputation、balancing和rescaling)
(2)元學習
元學習是從以前的任務中獲取經驗,通過推理跨數據集的學習算法來模擬這些策略。在auto-sklearn中,應用元學習來選擇給定的機器學習框架的實例,這些實例可能在新數據集上表現良好。更具體說,對於大量數據集,收集一組元特征,可以有效計算數據集的特征,並且有助於在新數據集上確定使用哪種算法。這種元學習方法是貝葉斯優化的補充,用於優化AutoML框架。因為貝葉斯優化開始時很慢,但可以隨着時間的推移慢慢微淘性能。可以通過選擇基於元學習的k個配置並利用他們的結果來進行貝葉斯優化,與貝葉斯優化產生一個互補作用。
(3)分類器集成
雖然參數貝葉斯優化在尋找性能最佳的超參數設置方面具有數據效率,但是這其實是一個非常浪費資源的過程:它在訓練過程中的所有模型都會丟失,通常包括一些訓練情況最好的模型。auto-sklearn建議存儲他們並使用有效的處理方法來構建他們之間的整體,而不是丟棄這些模型。
簡單地構建構建貝葉斯優化找到的模型的均勻加權集合的效果並不是很好。使用保留集上所有單個模型的預測來調整這些權重只管重要。
- 棧(stacking)
- 無梯度值優化(gradient-free-numerical optimization)
- 集成選擇(ensemble selection)
2.2基於進化算法的自動模型選擇
除了貝葉斯方法,我們還可以使用進化算法來實現模型的自動選擇,最經典的框架是TPOP(Tree-bases Pipeline Optimization Tool,基於樹的管道優化工具)
2.2.1TPOP中的4中類型的管道操作
1)數據預處理op
2)特征分解op
3)特征選擇op
4)模型選擇op
2.2.2基於樹的管道集成
2.2.3TPOP中構建pipeline的進化算法以及帕累托優化
為了自動生成和優化這些基於樹的pipeline,TPOT使用了一種新的進化算法技術,稱為遺傳編程(GP),在python的DEAP中實現。傳統上,GP構建數學函數樹以針對給定標准進行優化。在TPOP中,使用GP來演化pipeline op的序列以及每個op的參數(例如,隨機森林中的樹的數量或在特征選擇期間要選擇的特征對的數量),以最大化pipeline的分類准確性。其中對pipeline的更改可以修改,移除或插入新的pipeline op序列到基於樹的pipeline中。
TPOP pipeline根據其在測試集上的最終分類准確性以及最小化pipeline的總體復雜性(即pipeline op的總數)
3、自動集成學習
集成學習結合策略:
- 投票法
- 平均法
- 學習法
H2O 的Ensemble可以讓用戶通過有監督的學習方式訓練集成模型