Ensemble Learning 集成學習(上)
medium
Ensemble Learning 集成學習(上)
最近工作上有碰到「簡易版 feature用 gradient boosting」的成效 train的比「詳細版 feature用深度學習」的成效還好的情況,於是就把李宏毅老師2015年講 ensemble的課程拿出來看,想好好理解一下集成學習在做什麼,順邊把筆記記錄起來。
因為這次影片的內容較多,所以我把ensemble分成上下篇來紀錄,若是想看boosting筆記的人,可以直接看下篇,這篇會先介紹 bagging。
此篇筆記來自此課程:https://www.youtube.com/watch?v=tH9FH1DH5n0
Framework of Ensemble
- 我們有一些分類器
- f1(x), f2(x), f3(x),…
- 每個分類器擅長做的事情不同,各司其職
- 將分類器合起來
Ensemble: Bagging
- 先sampling training data,讓各個模型看到的data是不一樣的。
- 接著開始訓練出4個複雜的模型(能夠fitting training data)。
- 然後用一組testing data丟到各模型中,再去取average或voting。
- 結果通常會比較不容易overfitting,variance較小,所以做bagging的情況,是擔心模型容易overfit,而不是連training data都fit不了。
什麼樣的模型容易overfit?
- NN其實比較容易遇到無法在training data上fitting。
- Decision Tree,只要樹長得夠深,很容易在training data上面拿到100分的accuracy,但只是overfitting而已,而Random Forest就是 Decision Tree做Bagging的版本。
- 秒解釋Decision Tree:假設有x1, x2兩個feature,可以先在x1=0.5的地方切一刀,接著再去x2=0.3, 0.7的地方切一刀,就會出現紅色 (class2)跟藍色 (class1)的區域。

- 這邊舉了一個例子讓大家理解decision tree容易在training data上fitting,初音task:區分class1, 0。
- 可以在左下圖看到,紅色的區域我們將像素標示為1,紫色標示為0。
- 在右下圖可以看到train完的結果,當decision tree的深度越深,model就越能夠區分出1和0的像素。

Random Forest
Decision Tree
- 隨著decision tree的深度越深,就越能夠描繪出初音的樣子。
- decision tree一定可以做到error rate是0,因為樹可以長到每一筆data就是一片葉子。
Random Forest
- 傳統的resampling的bagging訓練出來的tree還是會差不多。
- 所以在每次sampling的時候,還會隨機地限制某些feature不能夠被使用,這樣訓練出來的每顆tree,即使sampling的dataset很像,訓練出來的tree也就會不一樣。
- 因此random forest就是decision tree bagging的版本。
Out-of-bag validation for bagging
- 因為在training的時候,每個模型看到的training data不同,假設我們有4個模型: f1, f2, f3, f4,並且有4組training data:x1, x2, x3, x4,而f1, f2在training的時候,只有看過x2, x3, x4,因此在validation 的時候,我們就可以用f1, f2去validate x1,以此類推到其他的模型,就不需用特別去切出validation set。
小結
我看影片到這邊得到最重要的概念,其實就是要先有一些可以很fit training data的model,然後為了解決overfitting的問題,透過bagging的方式來集成這些model,讓集成的model不那麼overfit。
如果喜歡我的筆記,歡迎給個clap或留下留言!