正在加载中...

展开本页目录
算法教程极端随机树(ExtraTrees)

极端随机树(ExtraTrees)

No.029 · 在线教程

极端随机树(Extremely Randomized Trees, ExtraTrees)是一类基于随机化分裂与集成学习的树模型。与随机森林相比,ExtraTrees 在每个节点上不仅随机选择特征子集,还随机生成切分点,再从这些随机切分中选择最优分裂,从而提升随机性、降低方差、…

极端随机树(ExtraTrees)

1. 方法概述

极端随机树(Extremely Randomized Trees, ExtraTrees)是一类基于随机化分裂集成学习的树模型。与随机森林相比,ExtraTrees 在每个节点上不仅随机选择特征子集,还随机生成切分点,再从这些随机切分中选择最优分裂,从而提升随机性、降低方差、提升泛化能力。该方法同时适用于分类回归任务。

设共有 \(n\) 个样本、\(d\) 个特征,数据集表示为

$$ \mathcal{D}=\{(x_i,y_i)\}_{i=1}^{n},\quad x_i\in\mathbb{R}^d \tag{1} $$

其中 \(y_i\) 为类别标签(分类)或连续值(回归)。

2. 公共部分(预处理与特征工程)

系统在模型训练前支持缺失处理、编码、缩放、特征构造、特征选择与降维等步骤(均在训练集上拟合,再作用于测试集或交叉验证折内,避免数据泄漏)。

2.1 标准化与归一化

Z-score 标准化: $$ z_{ij}=\frac{x_{ij}-\mu_j}{\sigma_j} \tag{2} $$

Min-Max 归一化: $$ z_{ij}=\frac{x_{ij}-\min x_j}{\max x_j-\min x_j+\varepsilon} \tag{3} $$

2.2 One-Hot 编码(类别型变量)

$$ x^{(k)}_{ij}= \begin{cases} 1,& x_{ij}=\text{cat}_k\\ 0,& \text{otherwise} \end{cases} \tag{4} $$

2.3 多项式特征(可选)

$$ \phi(x)=\{x_1^{a_1}x_2^{a_2}\cdots x_d^{a_d}\mid a_1+\cdots+a_d\le d_p\} \tag{5} $$

2.4 特征选择(方差阈值 / 互信息)

方差阈值: $$ \operatorname{Var}(x_j)=\frac{1}{n-1}\sum_{i=1}^{n}(x_{ij}-\mu_j)^2 \tag{6} $$

互信息: $$ I(X;Y)=\sum_{x\in X}\sum_{y\in Y}p(x,y)\log\frac{p(x,y)}{p(x)p(y)} \tag{7} $$

2.5 降维(PCA)

协方差矩阵: $$ \Sigma=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})(x_i-\bar{x})^\top \tag{8} $$

主成分解释率: $$ \eta_k=\frac{\lambda_k}{\sum_{j=1}^{d}\lambda_j} \tag{9} $$

2.6 IQR 异常值截断(可选)

$$ \text{IQR}=Q_3-Q_1,\quad x\leftarrow \min(\max(x,Q_1-k\cdot\text{IQR}),\,Q_3+k\cdot\text{IQR}) \tag{10} $$

2.7 符号说明

符号 含义
\(n\) 样本数量
\(d\) 特征维度
\(T\) 树的数量(n_estimators)
\(m_{\text{try}}\) 每个节点随机选取的特征数(max_features)
\(S\) 当前节点样本集合
\(S_L,S_R\) 分裂后的左右子节点样本集合
\(I(\cdot)\) 节点不纯度/误差度量
\(\hat{y}_i\) 预测值
\(TP,FP,TN,FN\) 分类混淆矩阵四要素

2.8 参数说明表(与实现/UI 一致)

参数 含义 UI 默认值 推荐(常用) 说明
n_estimators 树数量 \(T\) 200 分类/回归:200–500 树越多方差越低但训练更慢
max_depth 树深度上限 None 分类/回归:None 或 10–30 None 表示不限制深度
max_features 每次分裂候选特征数 \(m_{\text{try}}\) sqrt 分类:sqrt;回归:1.0(全部)None 由 UI 下拉项选择
min_samples_split 内部节点最小样本数 2 分类/回归:2–10 值越大越不易过拟合
min_samples_leaf 叶子节点最小样本数 1 分类/回归:1–5 控制叶子最小规模
bootstrap 是否启用自助采样 False 分类/回归:常用 False ExtraTrees 常用不放回/全量采样
class_weight_auto 类别权重自动平衡 True 分类:不平衡时 True,否则 False 仅分类有效
random_state 随机种子 42 固定整数 保证可复现
test_size 测试集比例 0.20 0.2–0.3 训练/测试划分比例
cv_folds 交叉验证折数 0 5 或 10(不做则 0) 0 表示不做交叉验证

3. 算法原理(ExtraTrees)

3.1 随机特征子集

在每个节点上随机抽取特征子集: $$ \mathcal{F}_k\subseteq\{1,\ldots,d\},\quad |\mathcal{F}_k|=m_{\text{try}} \tag{11} $$

3.2 随机切分点

对每个候选特征 \(j\in\mathcal{F}_k\),在该节点样本范围内随机生成切分点: $$ s_j\sim \mathcal{U}\big(\min_{x\in S}x_j,\ \max_{x\in S}x_j\big) \tag{12} $$

3.3 最优分裂准则

对所有随机切分,选择不纯度下降最大的分裂: $$ \Delta I=I(S)-\frac{|S_L|}{|S|}I(S_L)-\frac{|S_R|}{|S|}I(S_R) \tag{13} $$

3.4 分类不纯度

Gini: $$ I_G(S)=1-\sum_{c=1}^{C}p_c^2 \tag{14} $$

Entropy: $$ I_H(S)=-\sum_{c=1}^{C}p_c\ln p_c \tag{15} $$

3.5 回归不纯度(方差/MSE)

$$ I_{MSE}(S)=\frac{1}{|S|}\sum_{i\in S}(y_i-\bar{y}_S)^2 \tag{16} $$

3.6 单棵树的叶子输出

回归叶子输出: $$ \hat{y}_t(x)=\frac{1}{|S_{\text{leaf}}|}\sum_{i\in S_{\text{leaf}}}y_i \tag{17} $$

3.7 集成预测

回归: $$ \hat{y}(x)=\frac{1}{T}\sum_{t=1}^{T}\hat{y}_t(x) \tag{18} $$

分类概率平均: $$ \hat{p}_c(x)=\frac{1}{T}\sum_{t=1}^{T}\hat{p}_{t,c}(x) \tag{19} $$

分类决策: $$ \hat{y}(x)=\arg\max_{c}\hat{p}_c(x) \tag{20} $$

3.8 特征重要性(不纯度下降)

$$ \text{FI}_j=\frac{1}{T}\sum_{t=1}^{T}\sum_{v\in\mathcal{V}_{t,j}}\frac{|S_v|}{|S|}\Delta I_v \tag{21} $$

其中 \(\mathcal{V}_{t,j}\) 表示第 \(t\) 棵树中使用特征 \(j\) 的节点集合。

4. 回归版(ExtraTreesRegressor)

4.1 回归评价指标

MAE $$ \text{MAE}=\frac{1}{n}\sum_{i=1}^{n}|y_i-\hat{y}_i| \tag{22} $$

MSE / RMSE $$ \text{MSE}=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y}_i)^2 \tag{23} $$

$$ \text{RMSE}=\sqrt{\text{MSE}} \tag{24} $$

决定系数 $$ R^2=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2} \tag{25} $$

4.2 回归文字说明(可直接用于论文)

  • 采用 ExtraTreesRegressor 建模,树间输出均值作为最终预测(见式(18))。
  • 评价指标使用 MAE、MSE、RMSE 与 \(R^2\)(见式(22)–(25))。
  • 图表输出包含预测–真实对比图、残差直方图、残差–拟合图、Q-Q 图与预测趋势对比图。
  • 可选交叉验证用于评估模型在不同折上的稳定性与泛化能力。

5. 分类版(ExtraTreesClassifier)

5.1 分类评价指标

准确率 $$ \text{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN} \tag{26} $$

精确率 / 召回率 $$ \text{Precision}=\frac{TP}{TP+FP} \tag{27} $$

$$ \text{Recall}=\frac{TP}{TP+FN} \tag{28} $$

F1 值 $$ F1=\frac{2\cdot \text{Precision}\cdot \text{Recall}}{\text{Precision}+\text{Recall}} \tag{29} $$

宏/加权平均 $$ \text{Macro}=\frac{1}{C}\sum_{c=1}^{C}M_c,\quad \text{Weighted}=\sum_{c=1}^{C}\omega_c M_c \tag{30} $$

ROC 曲线与 AUC $$ \text{TPR}=\frac{TP}{TP+FN},\quad \text{FPR}=\frac{FP}{FP+TN} \tag{31} $$

$$ \text{AUC}=\int_0^1 \text{TPR}(\text{FPR})\,d(\text{FPR}) \tag{32} $$

5.2 分类文字说明(可直接用于论文)

  • 采用 ExtraTreesClassifier 进行分类建模,类别概率为各树概率平均(见式(19)),预测类别为最大概率类别(见式(20))。
  • 输出 Accuracy、Precision、Recall、F1 及宏/加权平均指标(见式(26)–(30))。
  • 以混淆矩阵展示分类结构,并提供 ROC/PR 曲线、阈值–F1 与阈值–TPR/FPR 分析图。
  • 对多分类任务,可计算宏平均指标与各类别曲线。

6. 训练与验证(公共)

6.1 训练/测试划分

若设置测试集比例为 \(t\in(0,1)\),则 $$ n_{\text{test}}=\lceil n\cdot t\rceil,\quad n_{\text{train}}=n-n_{\text{test}} \tag{33} $$

6.2 \(K\)-折交叉验证

对 \(K\) 折的评价指标取均值: $$ \bar{M}=\frac{1}{K}\sum_{k=1}^{K}M_k \tag{34} $$

7. 结果输出说明

系统输出的 Excel 通常包含:原始数据、处理后数据、训练/测试集、指标、预测、特征重要性、学习曲线、参数、图表清单、CV 汇总、报告摘要等。
图表输出按任务分为:

  • 回归:预测–真实散点、残差直方图、残差–拟合图、Q-Q 图、预测趋势对比图、学习曲线;
  • 分类:混淆矩阵、ROC 曲线、PR 曲线、阈值—F1、阈值—TPR/FPR、校准曲线、类别分布图、学习曲线。

7.1 图表样例与用途(名称与导出文件一致)

分类图表:

  • confusion_matrix:混淆矩阵,展示分类错误结构
  • roc / pr:ROC 与 PR 曲线,用于评估阈值无关性能
  • threshold_f1:阈值–F1 曲线,用于阈值选择
  • threshold_tpr_fpr:阈值–TPR/FPR 曲线,用于权衡
  • calibration:校准曲线,检验概率输出可靠性
  • class_distribution_full / class_distribution_triptych:类别分布图
  • feature_importance_topN:特征重要性 Top-N
  • learning_curve:学习曲线,观察样本量与泛化趋势

回归图表:

  • pred_vs_true:预测–真实散点(拟合程度)
  • true_vs_pred_line:预测趋势对比图
  • residuals_hist:残差直方图
  • residuals_vs_pred:残差–拟合图(异方差检查)
  • residuals_qq:残差 Q-Q 图(正态性检验)
  • feature_importance_topN:特征重要性 Top-N
  • learning_curve:学习曲线

7.2 论文描述模板(可直接替换参数)

分类模板:
本文采用 ExtraTreesClassifier 进行分类建模,设置树数量 \(T={n\_estimators}\),最大深度 \(d_{\max}={max\_depth}\),每次分裂候选特征数 \(m_{\text{try}}={max\_features}\),最小分裂样本数 \(min\_split={min\_samples\_split}\),最小叶子样本数 \(min\_leaf={min\_samples\_leaf}\),是否启用 Bootstrap 为 \({bootstrap}\)。若类别不均衡则采用 class_weight=balanced(对应 class_weight_auto=True)。训练/测试集按 \(test\_size={test\_size}\) 划分,随机种子为 \({random\_state}\),交叉验证折数为 \({cv\_folds}\)(若不启用则为 0)。模型评价指标包括 Accuracy、Precision、Recall 与 F1(见式(26)–(30)),并提供 ROC/PR 等曲线分析(见式(31)–(32))。

回归模板:
本文采用 ExtraTreesRegressor 进行回归建模,设置树数量 \(T={n\_estimators}\),最大深度 \(d_{\max}={max\_depth}\),每次分裂候选特征数 \(m_{\text{try}}={max\_features}\),最小分裂样本数 \(min\_split={min\_samples\_split}\),最小叶子样本数 \(min\_leaf={min\_samples\_leaf}\),是否启用 Bootstrap 为 \({bootstrap}\)。训练/测试集按 \(test\_size={test\_size}\) 划分,随机种子为 \({random\_state}\),交叉验证折数为 \({cv\_folds}\)(若不启用则为 0)。评价指标使用 MAE、MSE、RMSE 与 \(R^2\)(见式(22)–(25)),并通过残差分析与学习曲线检验模型稳定性。

论文写作建议按以下顺序组织结果:

  1. 参数与特征工程(树数量、max_features、max_depth、min_samples_split/leaf、是否 bootstrap);
  2. 核心指标表(回归:MAE/MSE/RMSE/R²;分类:Accuracy/Precision/Recall/F1);
  3. 可视化图表(残差分析、ROC/PR 等);
  4. 交叉验证稳定性(各折指标与均值)。

在正文中给出模型公式与核心指标,详细参数、折内预测与图表清单可放入附录,以兼顾可读性与可复现性。

8. 与代码实现的对应关系

ExtraTrees 程序的实现位于 具体的算法/极端随机树(ExtraTrees)/core/critic_calculator.py。从代码可见,它虽然在评估与导出结构上与随机森林相近,但程序仍保留了 ExtraTrees 自身的独立模型文件与推理模板。

应在文档中补充以下实现事实:

  1. 程序会导出独立模型与预测模板
    结果目录中不仅有 Excel 和图表,还可生成 extra_trees_model.pkl、元数据文件以及 predict_template.py,便于后续单独推理。

  2. Excel 结构偏向“案例复盘”
    原始数据处理后数据训练集测试集指标预测混淆矩阵分类报告学习曲线特征重要性图表清单参数 外,还可能包含 CV汇总CV折i_预测验证集参数与配置(分组)报告摘要

  3. 特征重要性和学习曲线都是程序原生输出
    不是只给最终精度。代码会同步导出 Top-N 特征重要性图和学习曲线,因此论文中可据此解释变量作用与样本规模敏感性。

  4. 分类场景支持概率后处理图
    若模型可提供概率输出,程序会进一步生成 ROC、PR、阈值分析和校准曲线,因此 ExtraTrees 的论文结果部分也可以包含阈值敏感性讨论。

  5. 程序保留逐折预测明细
    如果启用交叉验证明细导出,研究者能够追踪每一折验证集上的逐样本预测,便于审稿回复或附录复核。

9. 论文写作模板

方法描述模板:
“本文采用极端随机树模型开展监督学习分析。与随机森林相比,该方法在分裂时不仅随机选择候选特征,还随机生成切分点,从而增强模型随机性并降低方差。建模前对原始数据进行缺失处理、编码和必要的特征工程,然后通过训练测试划分与交叉验证评估模型泛化性能。”

结果描述模板:
“程序结果文件包含处理后数据、逐样本预测、特征重要性、学习曲线、参数配置、CV 汇总及图表清单等内容。若为分类任务,还可进一步获得混淆矩阵、ROC/PR 曲线和阈值分析;若为回归任务,则可结合残差分析评估模型误差结构。因此论文中既能报告最终精度,也能说明模型稳定性和变量影响特征。”

10. 单篇终审补充

10.1 图题与表题对齐建议

  • 原始数据 表可写为:表X ExtraTrees 原始数据表。
  • 处理后数据 表可写为:表X ExtraTrees 处理后数据表。
  • 训练集 表可写为:表X ExtraTrees 训练集数据表。
  • 测试集 表可写为:表X ExtraTrees 测试集数据表。
  • 指标 表可写为:表X ExtraTrees 性能指标表。
  • 预测 表可写为:表X ExtraTrees 逐样本预测结果表。
  • 混淆矩阵 表可写为:表X ExtraTrees 混淆矩阵表。
  • 分类报告 表可写为:表X ExtraTrees 分类报告表。
  • 特征重要性 表可写为:表X ExtraTrees 特征重要性表。
  • 图表清单 表可写为:表X ExtraTrees 图表索引表。
  • 参数 表可写为:表X ExtraTrees 参数设置表。
  • CV汇总 表可写为:表X ExtraTrees 交叉验证汇总表。
  • 参数与配置(分组) 表可写为:表X ExtraTrees 分组参数配置表。
  • 报告摘要 表可写为:表X ExtraTrees 结果摘要表。
  • feature_importance_topN.png 建议写为:图X ExtraTrees Top-N 特征重要性图。
  • confusion_matrix.png 建议写为:图X ExtraTrees 混淆矩阵图。
  • roc.png 建议写为:图X ExtraTrees ROC 曲线图。
  • pr.png 建议写为:图X ExtraTrees PR 曲线图。
  • threshold_f1.png 建议写为:图X ExtraTrees 阈值-F1 曲线图。
  • threshold_tpr_fpr.png 建议写为:图X ExtraTrees 阈值-TPR/FPR 曲线图。
  • calibration.png 建议写为:图X ExtraTrees 校准曲线图。
  • class_distribution_triptych.png 建议写为:图X ExtraTrees 类别分布图。

10.2 终审说明

  • 当前最适合作为终审证据的代表性目录可采用 具体的算法/极端随机树(ExtraTrees)/results/极端随机树(ExtraTrees)分析结果_20260329_163722。该目录同时具备结果簿、实体图、输入快照和 repro 脚本。
  • 真实工作表为 原始数据/处理后数据/训练集/测试集/指标/预测/混淆矩阵/分类报告/特征重要性/图表清单/参数/CV汇总/参数与配置(分组)/报告摘要。这组 sheet 已经能完整支撑分类任务的正文与附录。
  • 当前真实图文件稳定为 feature_importance_topN.pngconfusion_matrix.pngroc.pngpr.pngthreshold_f1.pngthreshold_tpr_fpr.pngcalibration.pngclass_distribution_triptych.png,并附带 class_distribution_full.png。正文一般不需要同时引用两种类别分布图。
  • 当前复现脚本为 repro_template_20260329_163722.py,采用脚本同目录输入快照 SRC_FILE = 'et_window1_input.csv',不是 repro_inputs/...。因此这篇文档应明确写成“脚本同目录 CSV 快照复现”。
  • ExtraTrees 这篇的终审重点应放在“分类图集 + 特征重要性 + CV 汇总”三类结果的联动解释,而不是把它泛化成与随机森林完全相同的文案。

10.3 全量强化补充

本篇终审补充绑定的真实算法目录为 具体的算法/极端随机树(ExtraTrees),本次采用的代表性结果目录为 具体的算法/极端随机树(ExtraTrees)/results/极端随机树(ExtraTrees)分析结果_20260329_163722

该目录当前只保留一份主结果工作簿:

  • 极端随机树(ExtraTrees)分析结果_20260329_163722.xlsx

实测工作表为:

  • 原始数据
  • 处理后数据
  • 训练集
  • 测试集
  • 指标
  • 预测
  • 混淆矩阵
  • 分类报告
  • 特征重要性
  • 图表清单
  • 参数
  • CV汇总
  • 参数与配置(分组)
  • 报告摘要

这说明当前代表性目录是分类场景,而不是回归场景;正文应围绕混淆矩阵、分类报告、特征重要性和交叉验证汇总组织结果解释。

当前目录中的真实图文件为:

  • feature_importance_topN.png
  • confusion_matrix.png
  • roc.png
  • pr.png
  • threshold_f1.png
  • threshold_tpr_fpr.png
  • calibration.png
  • class_distribution_triptych.png
  • class_distribution_full.png

因此本轮真实图证据覆盖特征重要性、分类性能、阈值敏感性、校准和类别分布;不包含回归残差图。

复现实物方面,该目录实际包含:

  • 具体的算法/极端随机树(ExtraTrees)/results/极端随机树(ExtraTrees)分析结果_20260329_163722/repro_template_20260329_163722.py
  • 具体的算法/极端随机树(ExtraTrees)/results/极端随机树(ExtraTrees)分析结果_20260329_163722/et_window1_input.csv

脚本中明确写成 SRC_FILE = 'et_window1_input.csv'。因此这篇当前的真实复现口径是“结果目录同级输入快照 + repro 脚本”,不是 repro_inputs/... 子目录方案。

10.4 软件实现核查补充(2026-07)

  • 当前源码核查到的是统一的极端随机树封装流程,分类与回归都在同一产品线里;正文可保留随机子空间、随机切分和集成平均等理论,但软件说明要按真实分支解释。
  • 本轮代表性目录是分类场景,图证覆盖特征重要性、混淆矩阵、ROC/PR、阈值曲线、校准曲线与类别分布图,说明它的核心输出仍是分类评估和可解释性。
  • 复现口径是结果目录同级输入快照与 repro_template_*.py,文中不要混用其他算法的样例文件名。
  • 如果正文提到 OOB、特征子采样或树数量变化,可作为参数说明;但不要写成当前结果目录必然包含 OOB 专表。