歡迎來到集成學習(Ensemble Learning)的世界!
在之前的學習中,我們認識了決策樹(Decision Trees)。雖然決策樹簡單易懂,但它有一個致命弱點:它太「脆弱」了。只要你稍微修改一點數據,生成的樹可能就會完全不同。用專業術語來說,我們稱之為具有高變異性(High Variance)。
在本章中,我們將學習如何利用「集成方法(Ensemble Methods)」來解決這個問題。我們不再依賴單一的一棵樹,而是要建立一整個森林!我們將專注於兩種核心技術:裝袋法(Bagging)和隨機森林(Random Forests)。這些方法是精算師預測建模工具箱中最強大的工具之一。
1. 基礎:裝袋法(Bootstrap Aggregation)
如果這個名字聽起來很奇怪,別擔心!Bagging 其實就是 Bootstrap Aggregating(自助聚合)的縮寫。其邏輯很簡單:「群眾的智慧勝過單一專家的意見。」
什麼是自助抽樣(Bootstrapping)?
想像你有一個裝了 100 顆彈珠的袋子。你想創建一個「新」的 100 顆彈珠袋子。你取出一顆,記下顏色,然後把它放回去。你重複這個動作 100 次。因為你是放回後再抽樣,有些彈珠可能會出現兩次或三次,而有些可能完全沒被抽到。這就是所謂的有放回抽樣(Sampling with replacement)。
Bagging 的執行步驟:
1. 自助抽樣(Bootstrap): 我們從原始數據集中創建許多不同的自助樣本(通常是幾百個)。
2. 訓練(Train): 我們在每一個樣本上都建立一棵完整且深入的決策樹。由於樣本略有不同,這些樹也會略有不同。
3. 聚合(Aggregate): 為了進行最終預測,我們將所有樹的結果結合起來:
• 對於回歸(Regression)(預測數值):取所有樹預測結果的平均值。
• 對於分類(Classification)(預測類別):進行「多數投票」。獲得最多樹支持的類別就是我們的最終答案。
為什麼要這麼做?
Bagging 的主要目標是降低變異性(Reduce Variance)。通過對多棵樹取平均值,我們可以抵消單棵樹產生的「噪點」和誤差,從而得到更穩定、更準確的預測。這就像請 100 個人來猜一頭大象的體重;個人的猜測可能會大相徑庭,但平均值通常非常接近真實重量!
快速回顧: Bagging = Bootstrap(有放回抽樣)+ Aggregating(結果平均化)。它能在不增加偏差(Bias)的情況下降低變異性。
2. 袋外誤差(Out-of-Bag, OOB)估計
你知道嗎? 當我們使用 Bagging 時,其實並不需要額外的「驗證集(Validation Set)」來評估模型表現。我們可以使用袋外(OOB)觀測值。
當我們建立一個自助樣本時,平均大約有 三分之一(1/3) 的數據沒有被選中。這些沒被選中的數據行就稱為「袋外」觀測值。由於樹在訓練過程中從未見過這些數據,我們可以將它們當作「微型測試集」。
我們僅使用那些未使用該行數據進行訓練的樹,來預測該行的數值。這能得出 OOB 誤差,它是評估模型在全新數據上表現的一個非常可靠的指標。
3. 進階:隨機森林(Random Forests)
隨機森林是對 Bagging 的巧妙改進。要理解為什麼我們需要它,必須先看看 Bagging 中一個隱蔽的問題,稱為樹的相關性(Tree Correlation)。
問題:「強預測因子」的陷阱
在一般的 Bagging 中,如果存在一個非常強的預測因子(例如人壽保險模型中的「年齡」),幾乎每一棵樹都會在第一次分裂時使用該因子。這意味著所有樹看起來都非常相似。如果樹之間高度相似,取平均值的效果就會大打折扣——這就像問 100 個人意見,但他們在回答前都讀了同一篇新聞報導一樣。
解決方案:特徵隨機化(Feature Randomness)
隨機森林強制樹之間產生差異(以「去相關」)。在隨機森林建立樹的過程中:
1. 在每次分裂時,模型只能從隨機的預測因子子集中進行選擇。
2. 如果總共有 \( p \) 個預測因子,我們通常只允許模型在每次分裂時考慮其中的 \( m \) 個因子,其中 \( m < p \)。
\( m \) 的常用經驗法則:
• 對於分類: \( m \approx \sqrt{p} \)
• 對於回歸: \( m \approx p/3 \)
通過強制模型偶爾忽略最強的預測因子,它被迫去尋找那些原本會被忽視的「較弱」因子中的規律。這使得森林的多樣性和預測力大幅提升。
比喻: 想像一場才藝表演。在 Bagging 中,每位評審看的都是同一場表演。而在隨機森林中,評審甲被告知「你不准看歌手的聲音,只能看他的舞步」,評審乙被告知「你不准看舞步,只能看服裝」。通過強制他們專注於不同的事物,最終的綜合評分會更加全面。
4. 變量重要性評估(Variable Importance)
Bagging 和隨機森林的一個缺點是它們屬於「黑盒(Black Box)」模型。要查看 500 棵樹並準確解釋模型運作方式是很困難的。不過,我們仍然可以找出哪些變量最重要。
1. Gini 指數平均減少量(Mean Decrease in Gini Index,用於分類): 這衡量了當特定變量用於分裂時,節點的「純度(Purity)」提升了多少。數值越高,代表該變量對於將觀測值分類越有幫助。
2. RSS 平均減少量(Mean Decrease in RSS,用於回歸): 這衡量了當特定變量用於分裂時,殘差平方和(RSS)下降了多少。下降幅度越大,代表該變量對於預測數值結果越重要。
重點總結: 即使我們無法像分析單棵樹那樣直觀地看出森林的「邏輯」,變量重要性圖表依然能告訴我們哪些特徵在起關鍵作用。
5. 總結與常見陷阱
需避免的常見錯誤: 學員常擔心向隨機森林中添加太多樹會導致過擬合(Overfitting)。事實上,隨機森林通常不會僅因為樹變多而過擬合。添加更多樹只會讓變異性更穩定。樹「太多」的主要缺點僅僅是電腦跑模型需要花更長的時間!
快速總結檢查清單:
• Bagging 通過對自助樣本生成的許多樹進行平均,從而降低變異性。
• 隨機森林改進了 Bagging,在每次分裂時僅允許使用隨機的預測因子子集(這即是 R 語言中的 mtry 參數)。
• mtry 是最重要的超參數(Hyperparameter)。如果 \( m = p \),隨機森林就變成了普通的 Bagging。
• OOB 誤差允許我們在無需單獨測試集的情況下驗證模型。
• 變量重要性幫助我們解釋在這些複雜模型中,哪些特徵最重要。
繼續加油!你做得很好。基於樹的模型是 Exam PA 的重頭戲,掌握隨機森林是邁向通過考試的一大步!