机器学习分类
随机森林分类
对样本做自助抽样、对每次分裂再随机抽特征子集,把许多深浅不一的树收成一次多数投票,用来压低单棵 CART 的结构方差。
这篇能回答什么
随机森林回答的是委员会问题:同一套房被一百棵彼此没见过全部列、也没见过全部行的树分别点名之后,票数最高的档是谁。它不打印统一的 if-then。袋外(OOB)样本——某次自助抽中没抽到的那些行——给一次近似于交叉验证的免费体检。本页教学表仍然先报三档标签占用:你必须知道委员会面对的是 63% 的主导档,再解释总票数准不准。
综合评价表上,把户型压成 A/B/C 三档当金标准,特征仍是面积、楼层、总楼层、建筑年份,以及可选的单价。完整个案 295。袋装能平滑单树的抖动,但不会改写先验:多数投票在信息不足时,会老老实实把票投给人数最多的那一档。
什么时候不该用
交付物必须是一页能签字的规则,请回到决策树分类。要带标准误的发生比,用多项逻辑回归。只关心分裂贡献、不要类别预测,可用随机森林特征重要性。标签噪声很多、又想追难分样本时,袋装往往不如adaboost分类敏感——这也是 RF 更稳的原因,不是缺陷。
如何选择方法
袋装(bagging)降低的是方差:单棵深树对抽到哪几套房极其敏感,平均许多棵之后,边界不再围着某几套豪装房跳舞。提升(boosting)降低的是偏差,会主动追分错的行。逻辑回归既不抽样也不投票,它假定 logit 可加。选森林,是因为你接受「说不清第一刀」,但要求换 30 套房预测别翻盘。
随机森林分类:自助样本 + 特征子集 + 多数票;可看 OOB。
单棵 CART:路径可读,方差大。
AdaBoost / GBDT:串行改权重或拟合残差,对噪声更敏感。
多项逻辑回归:系数与 OR,线性可加,无矩形切割。
输入、输出与限制
输入
一个定类金标准,若干定量或定类特征。自助抽样按行有放回,因此同一套房可以进多棵树;占用表的 N 仍是去重后的完整个案,不是「被抽中的次数之和」。
特征变量:最少 2 个,最多 80 个。
标签变量:正好 1 个定类,水平 2–12。
输出
教学结果先给标签占用:项目固定写「随机森林分类」,类别 A/B/C,统计量为频数或占比。完整运行另有 OOB 错误、混淆矩阵与不纯度重要性。取值列没有「投票正确数」,186 不是委员会答对的套数。
产品限制
默认 100 棵树,单棵最大深度 8;每次分裂随机抽约 √p 个特征。
OOB 默认开启;行数少于 30 时不拟合。
最多使用 20000 行,随机种子固定为 42,重复同一张表应可复现票数分布。
默认不按类加权。主导档 63% 时,未加权森林的召回会偏向 C。
SPSS 统计模块没有同名过程。不要拿「决策树 CRT 跑一百次再手工投票」来对格子。
案例
研究问题。 估价团队要给新挂牌房指定户型档,供检索与定价模板使用。他们试过一棵深树,换一批深圳房源后第一刀从面积跳到了楼层。现在改用森林:不求规则漂亮,只求票数别围着某几套豪装房打转。
完整个案 295。金标准占用:A 65(22.03%)、B 44(14.92%)、C 186(63.05%)。多数票的「偷懒策略」是全投 C,基线命中 63.05%。森林只有在 OOB 上明显超过这个数,并且 B 档(只有 44 套)的召回没有被投没,才值得写进模型节。下载综合评价表,按同样特征与三档标签复现占用读法。
在 StatsX 中操作
步骤 1 · 导入住房表并丢掉标识符
上传综合评价 xlsx。画像里把房源ID、小区名称标成不要进模型。城市、装修可以留,它们会参与随机列抽样。
步骤 2 · 打开随机森林分类
搜索「随机森林」时会同时出现回归与分类、以及特征重要性。本页要的是分类:输出的是档位,不是总价。
步骤 3 · 指定金标准与特征墙
标签放压成三档的房屋类型;特征至少勾面积、楼层、总楼层、建筑年份。树数保持默认 100 即可先看占用。
步骤 4 · 占用过关再谈袋外
先核 65+44+186 是否等于 295。通过之后,才把 OOB 错误和「总准确率」跟 63.05% 的多数类基线比。B 档召回单独看,不要被总票数安慰。



如何阅读输出
四列表回答先验,不回答委员会准不准。A 档 65 套(22.03%),B 档 44 套(14.92%),C 档 186 套(63.05%),分母 295。多数投票的默认惯性就是跟着最大先验走。若你只报一个总准确率,它经常只是略高于 63.05%,看起来「能用」,其实没把两室档找回来。
| 项目 | 类别 | 统计量 | 取值 |
|---|---|---|---|
| 随机森林分类 | 类别 A | 频数 | 65 |
| 随机森林分类 | 类别 B | 频数 | 44 |
| 随机森林分类 | 类别 C | 频数 | 186 |
| 随机森林分类 | 合计 | 有效样本 N | 295 |
| 随机森林分类 | 类别 A | 占比(%) | 22.03 |
| 随机森林分类 | 类别 B | 占比(%) | 14.92 |
| 随机森林分类 | 类别 C | 占比(%) | 63.05 |
左右滑动可查看完整表格
教学示例表在 StatsX 工作台中的计算结果口径。


解读顺序:完整个案 295 → 多数类基线 63.05% → 最小档 44 套够不够撑出稳定叶子 → 然后才是 OOB。自助抽样会让同一套房进好几棵树,但占用频数仍按去重后的 295 人计,不要去对「有放回次数」。基尼重要性把面积排第一时,只说明分裂时面积常被抽中且能降不纯度,不能写成面积导致户型档。
理论与公式
记训练集为 D。第 b 棵树在自助样本 D^{(b)} 上生长,并且每次找分裂时只看见随机特征子集 \mathcal{M}_b。预测取多数票:
对第 i 行,把所有「自助时没抽到 i」的树组成它的袋外委员会,得到 OOB 预测。OOB 错误是这些免费预测与金标准不一致的比例,用来代替再切一块测试集——前提是行之间近似独立,同一小区多套房会让 OOB 偏乐观。
袋装通过平均降低方差,对偏差的帮助有限:如果每棵树都因为先验倾斜而少报 B 档,一百次投票仍会把 B 档投没。类权重或分层自助才会改这件事。逻辑回归用同一套线性 logit 解释每一套;森林的「系数」不存在,只有不纯度下降的平均。
注意事项
未加权森林继承先验。63% 的 C 档会在总准确率里看起来很体面。
OOB 不是外总体。换城市、换挂牌年份,OOB 漂亮也不保证。
特征子集是随机的:某棵树可能整棵没看见楼层,不要为单棵树的结构写故事。
相关性很高的面积与总价会分摊重要性,排序会抖。
深度 8 的一百棵树仍然可以记住噪声,只是平均之后没那么张牙舞爪。
SPSS 没有对等菜单。和 sklearn 核对时应对 n_estimators、max_depth、max_features=sqrt、random_state。
常见问题
参考文献
Breiman, L. Random Forests[J]. Machine Learning, 2001, 45(1): 5–32.
Breiman, L. Bagging Predictors[J]. Machine Learning, 1996, 24(2): 123–140.
周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.