機器學習中,有一個分支為集成式學習(ensemble learning),顧名思義,集成式學習不是指單一的演算法框架,是一種團體的合作演算法框架,既然一個演算法無法得到好的預測結果,那如果是把不同方法用來訓練,理論上,應該會得到更好的預測結果,集成式學習就是這樣的概念。集成式的做法包含了Bagging、Boosting、Stacking,預測的準不準基本上有兩個面向,”Bias”跟”Variance”,詳細的介紹可參考筆者之前寫過的文章(機器學習-Bias-Variance Tradeoff),所有的機器學習模式不外乎想降低”Bias”跟”Variance”來得到更好的預測結果,但Bias跟Variance從下圖來看就是一種取捨的過程,所以各種機器學習的優化糾是想在這兩個概念中取得最佳的平衡。
因為之後的文章會提到XGboost的內容,但在那之前,我們需要先了解何謂Bagging跟Boosting,因為XGboost是具有Bagging跟Boosting好處的演算法,Bagging做的事情就是產生不同的資料集(透過從原始資料隨機抽樣產生),再利用不同的資料集各自去training出複雜的 model,雖然每一個單獨的model獨自拿出來variance都很大,但如果把不同variance很大的model集合起來以後,最後會透過投票(分類問題)或取平均(迴歸問題),最後我們就會得到一個variance較低的模型。
相較於Bagging是透過產生新資料來去訓練強模型(每一套模型的結果都重要性都一樣)的方式,Boosting則是透過訓練一個弱模型,然後每一次去修正模型錯誤的部分,經過多次的訓練,一開始的弱模型,經過每一次錯誤的修正,這個模型的能力會越來越強,最後留下來的模型對於資料的預測(Bias會降低)會最好。
筆者本次文章先針對XGboost包含的一些基本概念做介紹,之後的文章會針對梯度提升(GB)跟XGboost做進一步的說明。
參考資料:
- https://towardsdatascience.com/ensemble-methods-bagging-boosting-and-stacking-c9214a10a205
- http://violin-tao.blogspot.com/2018/01/ml-ensemble.html