隨機森林(Random Forest)的數學原理核心是“決策樹基學習器 + Bootstrap抽樣 + 特征隨機選擇” 的集成框架,通過降低單棵決策樹的方差、提升模型泛化能力來工作。以下分步驟解析其數學推導與核心邏輯:
一、 基學習器:決策樹的節點分裂準則(以CART樹為例)
隨機森林的基學習器通常是CART樹(分類與回歸樹),其核心是通過“節點不純度”準則選擇最優分裂特征與閾值。最常用的準則是Gini系數(分類任務)和平方誤差(回歸任務)。
1. 分類任務:Gini系數的推導與分裂邏輯
Gini系數衡量節點的“類別混亂度”(不純度),值越小表示節點類別越集中(純度越高)。
-
定義1:節點樣本分布
設某節點包含的樣本集為 D={(x1,y1),(x2,y2),...,(xn,yn)}D = \{ (x_1,y_1), (x_2,y_2), ..., (x_n,y_n) \}D={(x1?,y1?),(x2?,y2?),...,(xn?,yn?)},共 KKK 個類別,第 kkk 類樣本的數量為 nkn_knk?,則該類樣本在節點中的比例為:
pk=nkn,∑k=1Kpk=1p_k = \frac{n_k}{n}, \quad \sum_{k=1}^K p_k = 1pk?=nnk??,k=1∑K?pk?=1 -
定義2:Gini系數(節點不純度)
Gini系數表示“隨機抽取兩個樣本,類別不同的概率”,數學表達式為:
Gini(D)=1?∑k=1Kpk2\text{Gini}(D) = 1 - \sum_{k=1}^K p_k^2Gini(D)=1?k=1∑K?pk2?- 推導邏輯:兩個樣本類別相同的概率為 ∑k=1Kpk?pk=∑pk2\sum_{k=1}^K p_k \cdot p_k = \sum p_k^2∑k=1K?pk??pk?=∑pk2?,因此類別不同的概率為 1?∑pk21 - \sum p_k^21?∑pk2?,值越小說明節點純度越高。
-
定義3:特征分裂后的加權Gini系數
若用特征 AAA 的閾值 aaa 將節點 DDD 分裂為左子節點 D1D_1D1?(滿足 A≤aA \leq aA≤a)和右子節點 D2D_2D2?(滿足 A>aA > aA>a),則分裂后的總不純度為加權平均:
Gini(D,A,a)=∣D1∣∣D∣?Gini(D1)+∣D2∣∣D∣?Gini(D2) \text{Gini}(D, A, a) = \frac{|D_1|}{|D|} \cdot \text{Gini}(D_1) + \frac{|D_2|}{|D|} \cdot \text{Gini}(D_2) Gini(D,A,a)=∣D∣∣D1?∣??Gini(D1?)+∣D∣∣D2?∣??Gini(D2?)
其中 ∣D1∣、∣D2∣|D_1|、|D_2|∣D1?∣、∣D2?∣ 分別為 D1、D2D_1、D_2D1?、D2? 的樣本數。 -
分裂規則:對所有候選特征 AAA 和所有可能閾值 aaa,選擇使 Gini(D,A,a)\text{Gini}(D, A, a)Gini(D,A,a) 最小的 (A,a)(A, a)(A,a) 作為當前節點的分裂方式。
2. 回歸任務:平方誤差準則
回歸任務中,節點不純度用“樣本標簽與節點均值的平方誤差”衡量,目標是最小化分裂后的誤差。
-
節點均值與平方誤差
節點 DDD 的標簽均值為 yˉD=1n∑i=1nyi\bar{y}_D = \frac{1}{n} \sum_{i=1}^n y_iyˉ?D?=n1?∑i=1n?yi?,則節點的平方誤差為:
MSE(D)=1n∑i=1n(yi?yˉD)2 \text{MSE}(D) = \frac{1}{n} \sum_{i=1}^n (y_i - \bar{y}_D)^2 MSE(D)=n1?i=1∑n?(yi??yˉ?D?)2 -
分裂后的加權MSE
分裂為 D1、D2D_1、D_2D1?、D2? 后,總誤差為:
MSE(D,A,a)=∣D1∣∣D∣?MSE(D1)+∣D2∣∣D∣?MSE(D2) \text{MSE}(D, A, a) = \frac{|D_1|}{|D|} \cdot \text{MSE}(D_1) + \frac{|D_2|}{|D|} \cdot \text{MSE}(D_2) MSE(D,A,a)=∣D∣∣D1?∣??MSE(D1?)+∣D∣∣D2?∣??MSE(D2?)
選擇使該值最小的 (A,a)(A, a)(A,a) 進行分裂。
二、隨機森林的核心集成策略
單棵決策樹易過擬合(方差大、偏差小),隨機森林通過Bootstrap抽樣(樣本隨機) 和特征隨機選擇降低樹之間的相關性,從而降低集成模型的方差。
1. Bootstrap抽樣(樣本隨機):構建多樣化訓練集
從原始樣本集 DDD 中有放回抽樣,為每棵樹生成獨立的訓練集 DtD_tDt?(共 TTT 棵樹,對應 TTT 個訓練集 D1,D2,...,DTD_1, D_2, ..., D_TD1?,D2?,...,DT?))。
-
抽樣概率推導
對單個樣本 xix_ixi?,每次抽樣未被選中的概率為 1?1n1 - \frac{1}{n}1?n1?(nnn 為原始樣本數)。經過 nnn 次有放回抽樣后,該樣本仍未被選中的概率為:
(1?1n)n→n→∞1e≈0.368 \left(1 - \frac{1}{n}\right)^n \xrightarrow{n \to \infty} \frac{1}{e} \approx 0.368 (1?n1?)nn→∞?e1?≈0.368
因此,每個 DtD_tDt? 約包含原始樣本的 63.2%(1?0.3681 - 0.3681?0.368),未被選中的樣本稱為“袋外樣本(OOB)”,可用于無額外驗證集的模型評估。 -
核心作用:通過樣本隨機,使不同樹的訓練集存在差異,避免所有樹擬合相同樣本的噪聲,降低樹之間的相關性。
2. 特征隨機選擇:進一步提升樹的多樣性
構建每棵決策樹的每個節點時,不使用全部 MMM 個特征,而是從 MMM 個特征中隨機選擇 mmm 個特征(通常取 m=Mm = \sqrt{M}m=M? 或 m=log?2Mm = \log_2 Mm=log2?M),僅在這 mmm 個特征中選擇最優分裂特征。
-
數學表達:對第 ttt 棵樹的第 jjj 個節點,特征子集為 St,j?{1,2,...,M}S_{t,j} \subset \{1,2,...,M\}St,j??{1,2,...,M},滿足 ∣St,j∣=m|S_{t,j}| = m∣St,j?∣=m,且 St,jS_{t,j}St,j? 是從全體特征中均勻隨機抽取的。
-
核心作用:若所有樹使用全部特征,易導致樹的分裂方式高度相似(相關性高),集成后無法有效降低方差;特征隨機選擇強制樹依賴不同特征,進一步降低樹的相關性。
三、隨機森林的預測規則(集成輸出)
完成 TTT 棵決策樹的訓練后,通過“多數投票”(分類)或“均值聚合”(回歸)得到最終預測結果。
1. 分類任務:多數投票
設第 ttt 棵樹對樣本 xxx 的預測類別為 ht(x)h_t(x)ht?(x)(ht(x)∈{1,2,...,K}h_t(x) \in \{1,2,...,K\}ht?(x)∈{1,2,...,K}),定義指示函數:
I(ht(x)=c)={1若第?t?棵樹預測?x?為類別?c0否則
I(h_t(x) = c) = \begin{cases}
1 & \text{若第 } t \text{ 棵樹預測 } x \text{ 為類別 } c \\
0 & \text{否則}
\end{cases}
I(ht?(x)=c)={10?若第?t?棵樹預測?x?為類別?c否則?
隨機森林的最終預測類別為“得票最多的類別”: H(x)=arg?max?c∈{1,...,K}∑t=1TI(ht(x)=c)H(x) = \arg\max_{c \in \{1,...,K\}} \sum_{t=1}^T I(h_t(x) = c)H(x)=argmaxc∈{1,...,K}?∑t=1T?I(ht?(x)=c)
2. 回歸任務:均值聚合
第 ttt 棵樹對樣本 xxx 的預測值為 ht(x)h_t(x)ht?(x)(連續值),最終預測為所有樹預測值的均值:
H(x)=1T∑t=1Tht(x)
H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x)
H(x)=T1?t=1∑T?ht?(x)
四、隨機森林有效性的數學解釋(方差降低)
隨機森林的核心優勢是降低方差(避免過擬合),其數學邏輯可通過“集成模型的方差分解”說明:
設集成模型的預測為 H(x)=1T∑t=1Tht(x)H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x)H(x)=T1?∑t=1T?ht?(x),單棵樹的期望預測為 hˉ(x)=E[ht(x)]\bar{h}(x) = \mathbb{E}[h_t(x)]hˉ(x)=E[ht?(x)],則:
- 單棵樹的方差:Var(ht(x))=E[(ht(x)?hˉ(x))2]\text{Var}(h_t(x)) = \mathbb{E}[(h_t(x) - \bar{h}(x))^2]Var(ht?(x))=E[(ht?(x)?hˉ(x))2]
- 樹之間的協方差:Cov(ht(x),hs(x))=E[(ht(x)?hˉ(x))(hs(x)?hˉ(x))]\text{Cov}(h_t(x), h_s(x)) = \mathbb{E}[(h_t(x) - \bar{h}(x))(h_s(x) - \bar{h}(x))]Cov(ht?(x),hs?(x))=E[(ht?(x)?hˉ(x))(hs?(x)?hˉ(x))](t≠st \neq st=s)
集成模型的方差為:
Var(H(x))=1T2[T?Var(ht(x))+T(T?1)?Cov(ht(x),hs(x))]
\text{Var}(H(x)) = \frac{1}{T^2} \left[ T \cdot \text{Var}(h_t(x)) + T(T-1) \cdot \text{Cov}(h_t(x), h_s(x)) \right]
Var(H(x))=T21?[T?Var(ht?(x))+T(T?1)?Cov(ht?(x),hs?(x))]
=Var(ht(x))T+(1?1T)?Cov(ht(x),hs(x))
= \frac{\text{Var}(h_t(x))}{T} + \left(1 - \frac{1}{T}\right) \cdot \text{Cov}(h_t(x), h_s(x))
=TVar(ht?(x))?+(1?T1?)?Cov(ht?(x),hs?(x))
- 當 T→∞T \to \inftyT→∞ 時,第一項 Var(ht(x))T→0\frac{\text{Var}(h_t(x))}{T} \to 0TVar(ht?(x))?→0;
- 第二項由“樹的相關性”決定:Bootstrap抽樣和特征隨機選擇降低了 Cov(ht(x),hs(x))\text{Cov}(h_t(x), h_s(x))Cov(ht?(x),hs?(x)),因此集成方差顯著低于單棵樹的方差。
五、總結
隨機森林的數學邏輯可概括為:
- 用CART樹作為基學習器,通過Gini系數/MSE實現節點最優分裂;
- 用Bootstrap抽樣和特征隨機選擇構建多樣化的樹,降低樹的相關性;
- 用多數投票/均值聚合集成多棵樹的預測,最終實現“低方差、強泛化”的模型效果。