2021年4月24日 星期六

Ensembles 模式:Machine Learning Design Patterns #7

本文為機器學習系統設計的好書 Machine Learning Design Patterns 中介紹的第七個模式:Ensembles pattern 的筆記。Ensembles 模式的目的是結合數個機器學習模型的預測結果來提升預測的準確率,也就是三個臭皮匠勝過一個諸葛亮的概念。

機器學習模型的誤差來源

沒有一個機器學習模型是完美的,而誤差的來源有三種:

  • Irreducible error:資料的 noise、不好的訓練資料、錯誤地描述機器學習問題等等,但通常我們對於這種情況做不了什麼事。
  • Error due to bias:通常是指 underfit 的情形,也就是無法學到模型特徵與標籤之間的關係。
  • Error due to variance: 通常是指 overfit 的情形,也就是由於從訓練資料學了太多東西,對於沒看過的資料無法 generalize。

我們希望一個好的機器學習模型能達到 low bias 及 low variance,但由於 bias-variance tradeoff 的關係我們無法同時滿足兩者。

三種 Ensemble 的方式

  • Bagging (bootstrap aggregating):並聯數個機器學習模型來降低模型的 variance。假設有 k 個子模型,並且把訓練資料分成 k 個部分,每個部分都有一些重複與不重複的資料。這個方法的概念是當子模型的誤差互相不相關的話,那將他們的結果結合起來的平均誤差將會是 var/k;另一方面來看當誤差都有互相關聯時,ensemble 模型的誤差會跟每個子模型的誤差一樣;總而言之 ensemble 模型至少會跟其中任何一個子模型一樣好。Random forest 是一種常見的 bagging 方法。
  • Boosting:把一連串的子模型接在一起,每一個子模型只學到前一個模型學不好的部分。這種方法會讓整個模型越變越複雜,也就是說可以用來解決 underfit 的問題。AdaBoost、XGBoost 都是常見的 boosting 方法。
  • Stacking:將子模型分成兩階段,第一階段將輸入資料轉換成特徵向量,第二階段的模型將所有第一階段產生的特徵向量接起來當成輸入,再預測最後的結果。Bagging 可以當成是 Stacking 的一種特例。

其他的設計考量

  • 最常見的問題是需要花更長的時間來訓練及設計模型。
  • Dropout 與 bagging 達成的效果類似,因為在每次 dropout 的過程就像是用一個子模型來預測結果。
  • 更難解釋機器學習的結果。Decision tree 的結果很好解釋,但變成 random forest 時就不容易解釋學習的結果了。

沒有留言:

張貼留言