一句话定义:随机森林(Random Forest)是训练很多棵决策树(Decision Tree),再让它们投票或取平均值来给结论的集成模型(Ensemble)。
打个比方:预测一套房子值多少钱,一棵决策树就像一位房评师,顺着"地段好吗→面积大吗→楼层高吗"一路问下去,走到某个结论。问题是这位评师要是一个人拍板,很容易钻牛角尖——训练数据里几个偶然的怪样本,就可能把整棵树的判断带偏。
随机森林的做法是:请来几百位评师,但加两道"随机"。
- 样本随机:每人只拿到一份有放回抽样(bootstrap)的数据,大约三分之二的原始样本会落到他手里,剩下三分之一叫袋外样本(OOB),天然可以当免费验证集。
- 特征随机:每次做判断时,只允许他从随机挑出的一小部分特征里选最优的。
最后所有人投票(分类)或取平均(回归)。关键在第二道随机:如果每棵树都看全部特征,它们会长得非常像,投票等于同一个人投了几百票,白搭。强制看不同特征,树之间才会"各有关注点",错误也才不相关,平均时能互相抵消——这就是随机森林降方差(variance)的核心,而偏差(bias)基本维持单棵树的水平。
和邻居们的区别:
| 维度 | 单棵决策树 | 随机森林 | 梯度提升树(GBDT 系) |
|---|---|---|---|
| 训练方式 | 一棵 | 多棵并行 | 多棵串行、互相纠错 |
| 主要收益 | — | 降方差 | 降偏差 |
| 调参难度 | 低 | 低 | 高 |
| 对噪声异常值 | 敏感 | 较稳健 | 较敏感 |
随机森林可以理解为 Bagging 的最著名特例:Bagging 只做样本随机,随机森林在它基础上又加了特征随机。
对从业者的意义:在表格数据(Excel、数据库里的结构化数据)上,随机森林到今天依然是极其能打的基线——开箱即用、不容易翻车、对超参不挑剔,还能顺手吐出特征重要性(feature importance)帮你做初步归因。典型场景有风控评分、客户流失预测、医疗初筛和特征筛选。
它的短板也清楚:模型体积大、推理比单棵树慢;面对文本、图像这类高维稀疏或强结构数据,不如神经网络;真要抠最后那点精度,调好的梯度提升往往更强。所以务实的选择是:先用随机森林快速拿到一个靠谱结果,再决定要不要上更重的模型。想上手可以从 scikit-learn 的实现开始,具体参数以官方文档页面为准。
