跳到主要内容

极端随机化集成

ExtraTrees分类

每棵树在节点上随机抽特征、再从该特征的取值区间里乱抽一条切缝,用许多这样的乱切树投票,换速度和更低方差。

更新日期 2026-08-29 机器学习

这篇能回答什么

ExtraTrees(Extremely Randomized Trees,极端随机树)分类回答的是:「如果连分裂阈值都不优化,只靠大量乱切的树投票,这批住房会被推进哪几个档」。与随机森林不同:森林会在候选特征上搜索使基尼下降最大的切点;ExtraTrees 在节点取值的最小值与最大值之间均匀随机画一条切缝,再在若干条乱切里挑相对不坏的一条。训练更快,树与树之间更不像,方差通常更低,偏差略升。

适合:标签已给定(教学结果记为 A/B/C 三档占用),特征以面积、楼层、总楼层、建筑年份、单价等定量为主,需要一条比单棵树稳、又比精细调参的提升树便宜的多分类基线。本表装修情况、房屋类型可整数编码后参与乱切,但乱切的物理含义在连续面积上更清楚。

什么时候不该用

若你必须讲清「面积在 89.3 平米处切开是因为基尼最优」,应改用决策树分类或随机森林分类——那些方法会报告搜出来的切点,ExtraTrees 的切点本身没有「最优」故事。定类列极多、还想避免独热泄漏时,优先CatBoost分类。没有金标准标签时用K-Means 聚类分析。

如何选择方法

把「随机」拆成三层:样本是否有放回、特征是否子集、阈值是否搜索。只打乱样本和特征、仍搜索最优切点,是随机森林;连阈值也乱抽,才是 ExtraTrees。需要间隔和核,走 SVM;需要邻居投票,走 KNN。ExtraTrees 几乎总是用全样本建树,因此没有经典的袋外误差曲线可画。

  • ExtraTrees分类:全样本进树,节点内均匀抽阈值;输出各类占用与平均不纯度下降。

  • 随机森林分类:bootstrap + 特征子集 + 最优切点;可看 OOB。

  • 决策树分类:单棵、可打印路径,方差大。

  • CatBoost分类:阈值不乱抽,而是在有序目标统计上做提升分裂。

输入、输出与限制

输入

目标为 1 个定类标签。特征以定量为主;定类会被编成整数后再参与「在编码值的最小最大之间乱切」,因此装修情况的切缝没有「简装与精装之间」的业务保证。

  • 特征变量:最少 2 个,最多 80 个。

  • 目标变量:正好 1 个定类,2–20 个水平。

输出

占用表列出各类频数与占比,教学示例为 A/B/C。本例 C 占 62.78%,应首先当成「投票结果的占用结构」,而不是准确率。另输出各特征因乱切而累计的不纯度下降(比基尼最优森林更嘈杂,排序仍可参考)。图为占用柱。

产品限制

  • 有效行至少 25 条;超过 12000 行先按种子 42 下采样。

  • 树数固定 200,每次分裂随机抽 √p 个特征,阈值在节点 min–max 上均匀抽取。

  • 不做 bootstrap:每棵树看见同一份有效表,因此没有 OOB 准确率。

  • 最大深度 16,叶最小样本 2。

  • 房源ID、小区名称拒绝进入特征。

  • 不要拿 SPSS 随机森林的「最优分裂」或 scikit-learn ExtraTrees 默认 100 棵、bootstrap=False 以外的网格来对占用格子。

案例

研究问题。 希望尽快得到一条多分类基线:用面积、楼层、总楼层、建筑年份、单价(以及整数化的装修、户型)预测三档标签,并看乱切投票会不会把大多数房子推进同一档。

有效样本 309。占用:A 59(19.09%)、B 56(18.12%)、C 194(62.78%)。C 一档吃掉六成以上套数,和 CatBoost 那次相对均匀的占用不是同一回事——乱切集成更容易跟着多数类先验走。下载评价表后用同样定量列复现。

下载教学示例表(综合评价)

在 StatsX 中操作

  1. 步骤 1 · 导入评价表

    工作表用 Sheet1。先删或忽略房源ID,避免被当成特征。

  2. 步骤 2 · 分清连续切缝与编码切缝

    面积、单价的 min–max 乱切有单位含义;装修情况被编成 0–3 之后,随机阈值可能切在 1.7,没有「简装/精装」解释。

  3. 步骤 3 · 选择 ExtraTrees分类

    目录搜「ExtraTrees」或「极端随机」。不要和随机森林点错——后者会搜索切点。

  4. 步骤 4 · 放入定量骨干

    特征至少勾选面积、楼层、总楼层、建筑年份、单价;目标为三档标签。装修、房屋类型可选,但解读时标明是整数编码。

  5. 步骤 5 · 先看 C 档占用

    若 C 超过六成,先回去数标签先验,再谈「模型发现了高价模式」。

导入住房评价表
评价表示例进入工作台。
面积与单价的列画像
确认面积、单价为定量,乱切才有区间。
选择 ExtraTrees分类
点选极端随机树分类,而不是随机森林。
为 ExtraTrees 指定定量特征
定量骨干进特征,三档标签进目标。

如何阅读输出

占用表显示:在 309 套里,C 独占 194 套,A、B 合计才 115 套。62.78% 这个数字是预测标签的份额。若原始标签里 C 本来就过半,乱切投票「跟着大头走」并不奇怪;若标签本身均衡而预测却堆到 C,才需要怀疑随机阈值加深度 16 把少数类切碎了。

ExtraTrees分类结果表
项目类别统计量取值
ExtraTrees分类类别 A频数59
ExtraTrees分类类别 B频数56
ExtraTrees分类类别 C频数194
ExtraTrees分类合计有效样本 N309
ExtraTrees分类类别 A占比(%)19.09
ExtraTrees分类类别 B占比(%)18.12
ExtraTrees分类类别 C占比(%)62.78

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

ExtraTrees 占用结果表
C 档 194 套应与工作台第一屏一致。
ExtraTrees 三类占用图
C 柱显著高于 A、B,对应 62.78% 占用。

极端随机树在 309 套有效住房上的预测占用极度偏向 C:194 套(62.78%),A 仅 59 套、B 仅 56 套。随机阈值不会去「找最好的面积切点」,多数类先验容易在投票里占上风;先核对标签本身是否已经是 C 档为主,再决定要不要加平衡抽样。

阅读顺序:N → 是否出现「一档吃掉一半以上」→ 不纯度重要性是否全由单价或面积包办。乱切的重要性比最优分裂更抖,前两名对调很常见,不要只因某次运行里「单价第一」就写死变量排序。A、B 各自不足 60 套,分层再建模时这两档的叶会很瘦。

理论与公式

在节点 t,从 p 个特征中无放回抽 K=\lfloor\sqrt{p}\rfloor 个。对抽到的特征 j,设该节点上的取值范围为 [a_{t j}, b_{t j}],切点

对这 K 条随机切缝分别算基尼(或熵)下降,留下下降最大的一条。注意:候选切缝本身不是最优搜索的结果,只是「在随机提案里挑相对好的」。T 棵这样的树对样本 x 投票:

Geurts 等指出,额外的阈值噪声换来树之间的去相关,从而使投票方差下降。全样本进树意味着每棵树的叶纯度往往高于 bootstrap 树,但切点更「傻」,因此对多数类 C 的先验更敏感——这与本例 194/309 的占用偏向一致。不纯度重要性是各次乱切上 \Delta Gini 的平均,不是 Shapley 值。

注意事项

  • 乱切没有「面积=89.3 是最优门槛」这种句子可写,论文里应写「随机阈值集成」。

  • 没有 OOB。要估计泛化,需自行留出测试行,产品占用表默认含拟合所用行。

  • C 占用 63% 可能只是标签失衡,先做一张标签频数再指责算法。

  • 整数编码的装修情况被切在 1.7,不能翻译成装修档位的业务规则。

  • 200 棵、深度 16 是产品常数,换 sklearn 默认超参占用会变。

  • 重要性嘈杂,应用SHAP 模型解释才能谈方向,不能从 \Delta Gini 读「单价导致档位」。

常见问题

参考文献

  • Geurts, P., Ernst, D., Wehenkel, L. Extremely randomized trees[J]. Machine Learning, 2006, 63(1): 3–42.

  • Breiman, L. Random forests[J]. Machine Learning, 2001, 45(1): 5–32.

  • 周志华. 机器学习[M]. 北京: 清华大学出版社, 2016.