將多個訓練model合併, 投票或平均找出結果, 通常會比只有一個model效果較好, 可以使用bagging, boosting, stacking等方式
常用的esemble方法:
stacking是將多個model結果當成下一個model的feature, 第二個model的訓練資料要跟第一層model的不一樣
隨機森林 (Bagging範例)
- bagging + randomized feature set
- 隨機切割訓練資料 + 隨機選取feature訓練成多的model
- 最後使用多數決或平均整合成最後結果, 會需要較大運算資源
- 隨機生成樹越多越好
- 隨機選取feature數可以使用 根號feature數
AdaBoost & Gradient boostng(Boosting範例)
看全部的資料, 把每個分錯的資料增加權重, 再將每輪訓練出來的classifier進行加總成一個新的model, 目的是以前一個樹, 進行改良, 才往下一次走, 最後再整合起來
learing rate 把每一棵樹的prediction 在乘上一個小數字, 使得loss變大, 讓後面的樹容易修正
Gradient boosting vs random forest
一樣會產生很多樹, 但每棵樹都很簡單, 最後再整合起來
差別是random forest 每棵樹都是獨立不受彼此影響
gradient boosting根據前一棵樹結果進性改良, 只能一棵棵產生無法平行
一樣會產生很多樹, 但每棵樹都很簡單, 最後再整合起來
差別是random forest 每棵樹都是獨立不受彼此影響
gradient boosting根據前一棵樹結果進性改良, 只能一棵棵產生無法平行
- 一般而言Boosting 比 Bagging準確些
- XGBoost是改良版, 很常被使用
Ref:
- 台灣人工智慧學校
沒有留言:
張貼留言