1. 程式人生 > >機器學習: ensemble learning

機器學習: ensemble learning

機器學習: ensemble learning

ensemble learning即把多個模型綜合成一個模型。這樣往往能達到不錯的效果。原因為: 不同的模型可能採用了不同的資料、或對資料的刻畫方式角度不一樣;直覺上講,如果一個問題從多個角度去看,那麼效果往往會比從單角度看效果更好。

各種ensemble的方法,據說在kaggle比賽中也有明顯的效果

ensemble的方式大致分幾類:

bagging (bootstrap aggregation):

bootstrap 代表:有放回的重取樣。bagging即在原始資料中,首先有放回的重取樣出多份資料,每一份資料訓練出一個model, 然後再把model組合起來(分類一般採用投票法,迴歸採用平均法)。

  • bagging可以有效降低模型的variance(可能提高bias), 因為多個模型放在一起,提升了泛化性. 所以bagging對高方差的模型比較有效,比如樹模型
  • 多個模型的訓練是不互相依賴的,即多個模型可以並行訓練

boosting

Boosting involves incrementally building an ensemble by training each new model instance to emphasize the training instances that previous models mis-classified. In some cases, boosting has been shown to yield better accuracy than bagging, but it also tends to be more likely to over-fit the training data(wiki)

  • boosting can give good results even if the base classifier is weak learner(only slightly better than random)
  • base classifier are trained in sequence(注意這裡必須序列訓練,每一個模型的訓練依賴之前的模型,和bagging不同)
  • 所有模型訓練完成後,在將所有模型組合到一起
  • 特點: 可以提升對訓練資料的擬合,減小bias, 但是可能造成overfitting(增加variance)
  • 例子: adboost, gbdt, gbdt

stacking

分兩層,第一層是多種模型利用資料訓練出的不同模型,第一層所有模型的輸出是第二層模型的輸入,第二層模型的輸出是最終結果。(個人理解,普通的模型輸出綜合無非是平均法、投票法。而stacking把所有模型的輸出當作了輸入,這樣就可以學到比平均/投票法更復雜的模型融合方法)

其他

  • Bayes optimal classifier(wiki,T代表training data, h_i 代表第i個假設,最終的結果是多個假設計算出的模型,按照概率加權投票)
    y = arg max c j C h i H P ( c j h i ) P ( h i T ) y=\arg \max_{c_j \in C} \sum_{h_i \in H} P(c_j|h_i) P(h_i|T)

  • Bayesian model combination