随机森林为什么要做特征子采样?
简化版
随机森林在每个节点只从随机抽取的部分特征中寻找最佳切分,目的是降低树间相关性;候选太多会让强特征支配所有树,太少则单树过弱。分类常用 sqrt(p) 只是起点,应交叉验证。
详细版
-
特征子采样通常发生在每个节点,而非整棵树固定一次。
-
它与 bootstrap 样本采样共同制造多样性。
-
max_features=p接近 bagged trees,相关性更高。 -
相关强特征很多时需结合置换重要性解释。
-
最优比例取决于 p、稀疏性和有效信号数量。
完整版教学
一、主动让部分树看不到最强特征
若一个特征极强,所有 bootstrap 树都会在根部选择它,树结构和错误高度相似。
随机候选迫使部分节点尝试次优但互补的特征。
相关性降低能提升平均效果,但候选过少会提高单树偏差;这是集成强度与多样性的直接权衡。
二、底层机制与公式
at each node: sample m features from p
search best split only among m
common starting point for classification: m≈sqrt(p)
三、带数字的推演
p=100 时,sqrt(p)=10。
每个节点只比较 10 个随机特征;一个指定强特征入选概率约 10%,因此不会支配所有树的同一节点。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| m=p | 单树强 | 树间相关高 |
| m≈sqrt(p) | 常见分类起点 | 需任务验证 |
| 很小 m | 多样性高 | 单树偏差大 |
五、执行流程
固定树数与叶约束 -> 扫描 max_features -> 记录 OOB/验证指标
-> 计算树间相关与单树强度 -> 结合延迟选取 -> 多 seed 复核
六、边界条件与工程代价
高维稀疏数据中有效特征极少,m 太小会让许多节点抽不到任何信号;可提高比例或先做特征筛选。
特征子采样会影响 impurity importance 的竞争机会,比较重要性前应固定超参数并用置换法复核。
记忆钩子:max_features 是给每个节点的候选名额:名额大,单树强但趋同;名额小,差异大但可能看不到信号。
七、常见误区与追问
-
误区:每棵树只使用一组固定子特征。 经典随机森林通常每个节点重新抽候选。
-
追问:为什么能降低相关性? 不同节点被迫从不同候选中切分。
-
误区:sqrt(p) 是最优公式。 它只是常用默认,需要验证。
-
追问:m 太小有什么问题? 节点可能抽不到有效信号,单树明显变弱。
-
追问:如何选择? 联合看 OOB、单树强度、树间相关和成本。
八、加强记忆
max_features 是给每个节点的候选名额:名额大,单树强但趋同;名额小,差异大但可能看不到信号。
目标是强度与相关性的平衡。