歡迎來到 Boosting 的世界!
在我們探索樹狀模型 (Tree-Based Models) 的旅程中,已經見識過建立多棵決策樹如何幫助我們做出更精準的預測。然而,雖然裝袋法 (Bagging) 和隨機森林 (Random Forests) 是同時(並行)建立多棵樹,但提升法 (Boosting) 採取了不同的路徑:它會逐一建立決策樹。
你可以把 Boosting 想像成一個不斷從錯誤中學習的學生。他不試圖一次過學會所有東西,而是先做一份練習試卷,看看哪裡出錯,然後將所有精力集中在針對性地修正那些錯誤上。他會重複這個過程,直到徹底掌握知識。在接下來的筆記中,我們將深入剖析這種「慢工出細活」的方法,是如何在精算領域中打造出最強大的預測模型!
什麼是 Boosting?
提升法 (Boosting) 是一種集成學習方法,其中樹木是順序地 (sequentially) 生長的。每一棵新樹的建立,都會參考前幾棵樹的資訊。其目標是針對前幾個模型表現不佳的地方進行改善。
你知道嗎? 在隨機森林中,我們希望每棵樹盡可能保持獨立。但在 Boosting 中,每一棵樹都依賴於它之前的樹。這是一項團隊合作,每一位成員都在修復上一位成員留下的錯誤!
核心哲學:慢速學習 (Slow Learning)
在人生的許多領域,「快」是好事。但在 Boosting 中,「慢」往往效果更好。透過慢速學習,模型可以避免在正確答案上「用力過猛」(overshooting),也能減少因數據中的雜訊而倉促下定論的風險。我們稱之為慢速學習 (Slow Learning)。
快速回顧:裝袋法 vs. 提升法
- 裝袋法 (Bagging): 建立許多獨立的樹並取平均值。適合減少變異數 (variance)。
- 提升法 (Boosting): 順序地建立樹,每一棵樹都從上一棵中學習。適合減少偏差 (bias) 和變異數 (variance)。
Boosting 的運作原理:步驟拆解
如果數學公式看起來很嚇人,先別擔心!在探討邏輯之前,讓我們用簡單的文字來看看這個過程。
第 1 步:從一個簡單的基準開始。
通常我們從一個預測值為 0 或目標變數平均值的模型開始。
第 2 步:計算殘差 (residuals)。
殘差就是誤差:\( \text{Residual} = \text{Actual Value} - \text{Predicted Value} \)。我們查看當前模型在哪些地方表現不佳。
第 3 步:針對殘差擬合一棵小樹。
我們不嘗試直接預測最終結果(如「理賠金額」),而是建立一棵樹來預測誤差(即殘差)。這棵樹試圖找出我們錯誤中的規律。
第 4 步:更新模型。
我們將這棵新樹的「縮小版」加入到現有模型中。我們不是加入整棵樹,而是只加入極小的一部分(由學習率 (learning rate) 控制)。
第 5 步:重複。
回到第 2 步,將此過程重複成百上千次!
關鍵總結: Boosting 不會試圖用一支巨大的箭就射中靶心,而是透過數千次微小的修正,一步步趨向目標中心。
Boosting 的三大支柱(調整參數)
在應考 Exam PA 時,如果你在 R 語言中使用(通常是 gbm 套件),你需要了解這三個可以調整模型表現的「旋鈕」。
1. 樹的數量 (\(B\))
這是我們依序建立的樹的總數。與隨機森林中「樹越多越好」的情況不同,若 \(B\) 過大,Boosting 可能會出現過度擬合 (overfit)。 如果你建立了過多的樹,模型最終會開始「死記硬背」數據集中的雜訊。
2. 收縮參數 (\(\lambda\))
也稱為學習率 (Learning Rate)。這是一個較小的正數(例如 0.01 或 0.001),用於控制模型學習的速度。較小的 \(\lambda\) 意味著模型學習得更慢,通常需要更大的 \(B\) 才能達到良好效果,但往往能產生更好的模型效能。
3. 交互深度 (\(d\))
這是每一棵樹的分裂次數。它控制了增強集成模型的複雜度。
- 如果 \(d = 1\),每棵樹只有一個分裂(稱為樹樁 (stump))。這意味著模型每次只考慮一個變數(加性模型)。
- 如果 \(d > 1\),模型就能捕捉到不同變數之間的交互作用。
記憶小幫手:「慢燉鍋」比喻
將 Boosting 想像成一個慢燉鍋:
- \(B\) (樹的數量) 是烹飪時間。時間太長,食物會燒焦(過度擬合)。
- \(\lambda\) (學習率) 是火候。小火燉煮時間較長,但食物會更鮮嫩。
- \(d\) (深度) 是一次可以混合的配料數量。
避開常見誤區
誤區 #1:認為 Boosting 和 Bagging 是一樣的。
請記住:Bagging 使用自助抽樣法 (bootstrap sampling) 來建立獨立的樹。Boosting 使用原始數據,但在每一步中修改目標(即殘差)。
誤區 #2:忘記對 \(B\) 進行交叉驗證 (cross-validation)。
在 Exam PA 中,如果被問到如何選擇樹的數量,答案幾乎總是交叉驗證。由於 Boosting 可能會過度擬合,我們必須找到 \(B\) 的「甜蜜點」。
誤區 #3:將學習率設定得過高。
如果 \(\lambda\) 過高,模型學習得太激進,很可能會錯過最佳解,導致在新數據上的預測表現不佳。
總結與關鍵要點
1. 順序學習: Boosting 一棵接一棵地建立樹,每一棵樹都旨在修正前一棵樹的錯誤。
2. 慢工出細活: 透過使用較小的學習率 (\(\lambda\)) 和大量的樹 (\(B\)),Boosting 能在不增加太多變異數的情況下,緩慢地降低模型的偏差。
3. 過度擬合風險: 與隨機森林不同,若樹的數量過多,Boosting 會過度擬合。因此,交叉驗證至關重要!
4. 效能表現: 在實務中,經過良好調校的 Boosting 模型通常比隨機森林表現更佳,使其成為保險業許多預測建模任務中的「黃金標準」。
如果起初覺得這些概念有些棘手,不用擔心!Boosting 是非常精密的概念。只要記住核心思想:「觀察錯誤,做出微小修正,然後重複」。你一定沒問題的!