歡迎來到集成學習(Ensemble Methods)的世界!

在之前的學習中,我們了解了單一決策樹。它們雖然容易理解且具備直觀性,但有一個嚴重的缺點:它們非常不穩定。數據的一點小變動就可能導致生成完全不同的樹狀結構。這就是我們所說的高變異性(High Variance)

為了修正這個問題,我們使用集成學習(Ensemble Methods)。你可以把「集成」想像成一個合唱團或交響樂團。個別歌手可能會唱錯音符,但當整個團體一起演出時,整體的聲音會變得既美妙又穩定。在這一章,我們將學習如何將多棵決策樹結合起來,創造出強大的模型:裝袋法(Bagging)隨機森林(Random Forests)以及提升法(Boosting)

1. 裝袋法(Bootstrap Aggregating)

裝袋法(Bagging)是一個減少統計學習方法變異性的巧妙技巧。這個名字是由兩個詞組合而成的:Bootstrap(自助法)Aggregating(聚合)

什麼是自助法(Bootstrapping)?

如果覺得這很難理解也別擔心!自助法其實只是一個 fancy 的說法,意思是「有放回的重新抽樣」(resampling with replacement)。想像你有一個裝了 100 顆編號彈珠的袋子。你取出一個,記下號碼,然後把它放回袋子裡。你重複這個動作 100 次。有些彈珠可能會被抽中兩次,而有些則可能完全沒被抽中。這組新的 100 個觀測值就是一個自助樣本(Bootstrap Sample)

裝袋法的流程

1. 從訓練數據中創建 B 個不同的自助樣本。
2. 為每個樣本建立一棵深度大、未經剪枝的決策樹。
3. 結合結果:
   - 對於迴歸(Regression):將所有 B 棵樹的預測結果取平均。
   - 對於分類(Classification):使用「多數決」(選擇出現頻率最高的預測類別)。

為什麼要這樣做?

透過對多棵高變異性的樹取平均,我們消除了「雜訊」,從而獲得更穩定的預測。裝袋法在保持低偏差(Bias)的同時,顯著降低了變異性。

快速複習:裝袋法的優點是讓預測結果更可靠。但缺點是我們無法再透過單一簡單的樹狀圖來解釋模型。我們是用可解釋性(Interpretability)換取了準確性(Accuracy)

你知道嗎?平均而言,一個自助樣本大約包含原始數據中的 2/3。剩下的 1/3 被稱為袋外(Out-of-Bag, OOB)觀測值。我們可以使用這些 OOB 觀測值來測試模型的準確性,而無需額外劃分驗證集!

2. 隨機森林(Random Forests)

隨機森林是裝袋法的「升級版」。裝袋法雖好,但有一個缺陷:如果數據中有一個非常強勢的預測變數,大多數樹在第一次分割時都會選擇該變數。這意味著所有的樹看起來會非常相似(它們是相關的,correlated)。

對相似的東西取平均,並不能像對不同的東西取平均那樣有效地減少變異性。隨機森林透過「解相關」(decorrelating)這些樹來解決這個問題。

隨機森林的工作原理

就像裝袋法一樣,我們利用自助樣本建立許多樹。但這裡有個關鍵:每當我們考慮樹的分支點時,我們只能從總共 \( p \) 個預測變數中,隨機選擇 \( m \) 個子集作為候選。

通常我們選擇:
- 對於迴歸: \( m \approx p/3 \)
- 對於分類: \( m \approx \sqrt{p} \)

類比:想像你在組建一個偵探團隊。在裝袋法中,每個偵探首先關注的都是同一個主要線索。而在隨機森林中,你強迫一些偵探忽略主要線索,轉而尋找較小的線索。透過這種方式,團隊能發現單個人(或一群思考模式相同的人)會錯過的關鍵證據!

重點總結:如果 \( m = p \),隨機森林就與裝袋法完全相同。透過選擇 \( m < p \),我們讓樹與樹之間變得不同,進一步降低了變異性。

3. 提升法(Boosting)

提升法採用了完全不同的策略。在裝袋法和隨機森林中,我們同時(並行)建立所有的樹。但在提升法(Boosting)中,我們是依序(sequentially)建立樹——一棵接著一棵。

核心概念:從錯誤中學習

在提升法中,每一棵新樹都是基於前幾棵樹的資訊建立的。我們不建立深樹,而是建立非常小的樹(通常稱為樹樁,stumps),這些樹會緩慢地改進模型在效能不佳區域的表現。

提升法的流程(簡化版)

1. 從一個簡單的模型開始(例如數據的平均值)。
2. 計算當前模型的「錯誤」(殘差,residuals)。
3. 針對這些殘差(而非原始目標變數)擬合一棵新的小樹。
4. 將這棵新樹加入模型,但僅加入一小部分(透過學習率進行縮放)。
5. 重複此過程數千次。

類比:把提升法想像成一位雕刻家。第一棵樹是石頭粗糙的輪廓。接下來的每一棵樹都是鑿子輕輕地刮一下,慢慢雕琢出形狀,並修補前一步驟留下的瑕疵。

提升法的重要參數

- 樹的數量 (B):與裝袋法不同,若 \( B \) 過大,提升法可能會過度擬合(overfit)。我們使用交叉驗證來選擇合適的數量。
- 收縮率 (\( \lambda \)):一個小數值(例如 0.01),控制學習的速度。緩慢學習通常能產生更好的模型。
- 交互深度 (d):每棵樹的分支數。通常 \( d=1 \)(即樹樁)的效果就已經非常顯著了。

重點總結:提升法是一個「慢學習者」,專注於修復前輩犯下的錯誤。它通常是最準確的方法,但需要仔細調整參數以避免過度擬合。

4. 變數重要性度量(Variable Importance Measures)

因為我們現在面對的是數百棵樹,我們無法透過單一樹狀圖來判斷什麼變數重要。相反,我們使用變數重要性度量

- 對於迴歸:我們記錄在所有樹中,因給定預測變數的分割而導致殘差平方和(RSS)減少的總量,並取平均值。數值越大,代表該預測變數越重要。
- 對於分類:我們做同樣的事,但測量的是吉尼指數(Gini Index)的減少量。

總結表:如何區分它們?

裝袋法(Bagging):
- 樹是獨立建立的(並行)。
- 每次分割使用全套預測變數。
- 目標:降低變異性。

隨機森林(Random Forests):
- 樹是獨立建立的(並行)。
- 每次分割使用預測變數的隨機子集
- 目標:解相關並降低變異性。

提升法(Boosting):
- 樹是依序建立的。
- 每棵樹擬合前一個模型的殘差
- 目標:緩慢降低偏差和變異性。

要避免的常見錯誤:考試時請記住,如果你增加樹的數量 (B),裝袋法和隨機森林不會發生過度擬合。然而,如果樹的數量過多,提升法是可能會發生過度擬合的。務必時刻留意那個收縮率參數!

你可以做到的!這些集成學習方法是數據科學家工具箱中最強大的武器。只要掌握「取平均」(裝袋法/隨機森林)與「修煉」(提升法)的邏輯,你就能在 SRM 考試中如魚得水!