决策树叶子节点的预测值是怎么确定的?
简化版
叶子预测值是该叶内让训练损失最小的常数:平方误差回归取加权均值,绝对误差回归取加权中位数,分类取各类(加权)频率并选择最大者。叶值必须和训练损失配套理解。
详细版
-
样本沿规则到达叶节点,叶内不再使用特征,只输出一个常数或概率向量。
-
平方误差对常数求导可得均值;绝对误差的最优点是中位数。
-
分类叶通常保存各类计数归一化后的概率。
-
sample_weight 会把普通均值、频率变成加权版本。
-
单树叶值分段常数,导致回归预测不平滑且不能向训练范围外外推。
完整版教学
一、叶值是一个局部常数优化问题
树结构完成后,每个叶覆盖特征空间中的一个区域。
对这个区域选一个统一输出,最优值由该节点使用的损失函数决定,而不是任意取平均。
这也解释了稳健性差异:平方损失对大残差惩罚二次增长,均值会被异常值拉动;绝对损失线性增长,中位数对极端值更稳。
二、数学机制怎么落到节点上
squared loss: c* = argmin_c sum w_i(y_i-c)^2 = weighted mean;absolute loss: c* = weighted median。
squared loss: c* = argmin_c sum w_i(y_i-c)^2 = weighted mean
absolute loss: c* = weighted median
classification: p_k = sum w_i 1[y_i=k] / sum w_i
三、带数字的推演
回归叶标签 [1,2,3,100]:平方损失叶值为均值 26.5,绝对损失叶值可取 2~3 之间,中位数约 2.5。
一个异常值让均值大幅移动,却几乎不改变中位数。
四、方法对比
| 方法/对象 | 核心特点 | 代价或限制 |
|---|---|---|
| 平方误差回归 | 加权均值 | 平滑可导但怕异常值 |
| 绝对误差回归 | 加权中位数 | 稳健但优化更复杂 |
| 分类交叉熵/Gini | 类别频率 | 小叶概率方差大 |
五、从训练到验证的执行链
样本按切分进入叶 -> 收集目标与权重 -> 按损失求最优常数
-> 分类归一化成概率 -> 可选平滑/校准 -> 输出预测
六、边界条件与工程代价
梯度提升树的叶值不是原始标签均值,而是当前损失下的负梯度或牛顿步,例如二分类会结合一阶、二阶导数。
不能把单棵 CART 结论机械套到 boosting。
若叶内没有足够样本,任何统计量都不稳定。
min_samples_leaf、正则化和后剪枝不仅控制结构,也控制叶值估计方差。
记忆钩子:不要死记“叶子取均值”,而要记“叶值最小化叶内损失”:L2 对均值,L1 对中位数,分类对频率。
七、常见误区与追问
-
误区:所有回归树叶子都输出均值。 只有平方误差等目标下均值才是对应最优常数。
-
追问:均值结论如何推导? 对叶内平方损失关于常数 c 求导并令其为零。
-
误区:分类叶只存最终类别。 常见实现还保存各类计数或概率向量。
-
追问:权重如何影响叶值? 高权重样本对加权均值、频率或中位数贡献更大。
-
追问:树为何不能线性外推? 叶内输出固定常数,超出训练区域仍落到边界叶。
八、加强记忆
不要死记“叶子取均值”,而要记“叶值最小化叶内损失”:L2 对均值,L1 对中位数,分类对频率。
再区分单树与 boosting 的梯度叶值。