随机森林(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∑Kpk=1 -
定义2:Gini系数(节点不纯度)
Gini系数表示“随机抽取两个样本,类别不同的概率”,数学表达式为:
Gini(D)=1−∑k=1Kpk2\text{Gini}(D) = 1 - \sum_{k=1}^K p_k^2Gini(D)=1−k=1∑Kpk2- 推导逻辑:两个样本类别相同的概率为 ∑k=1Kpk⋅pk=∑pk2\sum_{k=1}^K p_k \cdot p_k = \sum p_k^2∑k=1Kpk⋅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=1nyi,则节点的平方误差为:
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)=n1i=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=log2Mm = \log_2 Mm=log2M),仅在这 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)=argmaxc∈{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=1TI(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)=T1t=1∑Tht(x)
四、随机森林有效性的数学解释(方差降低)
随机森林的核心优势是降低方差(避免过拟合),其数学逻辑可通过“集成模型的方差分解”说明:
设集成模型的预测为 H(x)=1T∑t=1Tht(x)H(x) = \frac{1}{T} \sum_{t=1}^T h_t(x)H(x)=T1∑t=1Tht(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抽样和特征随机选择构建多样化的树,降低树的相关性;
- 用多数投票/均值聚合集成多棵树的预测,最终实现“低方差、强泛化”的模型效果。