← 返回题目列表

回归树是怎么工作的?和分类树有什么区别?

高频 中等 第 1 / 25 题 更新于 2026/08/02
决策树回归树CART平方误差

简化版

回归树 用决策树来预测连续值(如房价)。和分类树的区别主要在两点:① 分裂标准——分类树用信息增益/基尼衡量「纯度」,回归树用平方误差(方差) 衡量「离散程度」,每次选让子集内平方误差和最小的分裂(即让每个子集的目标值尽量集中);② 叶子输出——分类树叶子输出类别(多数投票),回归树叶子输出该叶子内所有样本目标值的均值。构建同样是贪心递归二分(CART 回归树)。它把特征空间切成若干矩形区域,每个区域用一个常数(均值)预测——所以回归树的预测是分段常数、阶梯状的。

详细版

分类树 vs 回归树:

维度分类树回归树
预测目标离散类别连续数值
分裂标准信息增益/增益比/基尼平方误差(方差)最小
叶子输出该叶子多数类该叶子样本目标均值
预测形态类别分段常数(阶梯)

回归树分裂准则:

对特征 j 和阈值 s,把样本分成 R₁(≤s)、R₂(>s),
选让下式最小的 (j, s):
  Σ_{i∈R₁}(yᵢ - c₁)² + Σ_{i∈R₂}(yᵢ - c₂)²
其中 c₁ = R₁ 中 y 的均值,c₂ = R₂ 中 y 的均值
  • 每个叶子的预测值 = 落入该叶子的样本目标均值(使平方误差最小的常数就是均值)。

预测:样本从根走到某叶子,输出该叶子的均值。整体是把输入空间划分成矩形区域、每区域一个常数。

完整版教学

一、回归树要解决什么

分类树输出类别,但很多任务要预测连续数值(房价、销量、温度)。回归树就是把决策树的框架用到回归上——同样递归地把特征空间切分成小区域,只不过每个区域给出的不是类别,而是一个数值

它继承了决策树的所有优点(可解释、不需缩放、能处理非线性和交互),也继承了缺点(易过拟合、高方差),只是「衡量分裂好坏」和「叶子输出」这两处换成了适合回归的形式。CART 的回归版本就是标准回归树。

二、核心区别一:用平方误差代替纯度

分类树用「纯度」(基尼、熵)衡量分裂好坏——同类样本聚在一起就好。回归里没有「类别」,无从谈纯度,改用目标值的离散程度:一个子集里样本的 y 值越集中(方差越小),说明用一个常数预测它们的误差越小,这个子集就越「好」。

于是回归树的分裂准则是最小化平方误差(等价于最小化方差)。对候选的 (特征 j, 阈值 s),把样本分成 R₁、R₂ 两组,计算:

误差(j, s) = Σ_{i∈R₁}(yᵢ - c₁)² + Σ_{i∈R₂}(yᵢ - c₂)²

其中 c₁、c₂ 分别是两组 y 的均值。遍历所有特征和阈值,选让这个总平方误差最小的分裂。 直觉:好的分裂能把 y 值相近的样本聚到一组,让每组用均值预测时误差最小。

三、核心区别二:叶子输出均值

分类树叶子输出「该叶子里最多的类别」。回归树叶子输出该叶子里所有样本目标值的均值

为什么是均值?因为在平方误差准则下,用一个常数 c 去预测一组数 yᵢ,使 Σ(yᵢ-c)² 最小的 c 恰好就是它们的均值(这是均值的定义性质)。所以每个叶子用「样本均值」预测是平方误差意义下的最优常数。

(如果改用绝对误差准则,则叶子最优输出变成中位数——这也是为什么中位数对离群点更稳健。)

四、预测形态:分段常数、阶梯状

回归树把整个特征空间切成若干个互不重叠的矩形区域(每个叶子对应一个区域),每个区域内预测一个固定常数(均值)。所以回归树的预测函数是分段常数的:

预测值
  │        ┌────
  │   ┌────┘
  │───┘
  └──────────────→ 特征
      每段是一个常数(叶子均值),整体呈阶梯状

这带来一个重要特性:回归树不能外推、预测是阶梯而非平滑曲线。它无法预测超出训练数据范围的趋势(如线性上升),只能给出训练时见过区域的均值。这是回归树相比线性回归的一个局限。

五、构建流程和防过拟合

构建流程和分类树一样——贪心 + 递归二分

1. 遍历所有特征和阈值,选平方误差下降最多的分裂
2. 按最优分裂二分样本
3. 对每个子集递归,直到满足停止条件(深度、样本数、误差下降阈值等)
4. 每个叶子记录样本均值作为预测值

同样容易过拟合:分得太细,每个叶子几个样本,均值就拟合了噪声。防止手段和分类树一致——剪枝、限制深度/叶子样本数、集成。回归树的集成尤其重要:GBDT、XGBoost 的基学习器就是回归树(即使做分类,GBDT 也是用回归树拟合梯度/残差),随机森林回归也是多棵回归树平均。

六、常见追问

  • 回归树叶子为什么输出均值? 因为平方误差下,最优常数预测就是均值;换绝对误差则是中位数。
  • 回归树能预测训练范围外的值吗? 不能——输出是叶子均值,是分段常数,无法外推趋势。
  • 回归树 vs 线性回归? 线性回归假设全局线性、能外推、平滑;回归树无需线性假设、能自动捕捉非线性和交互,但输出是阶梯、不能外推、易过拟合。
  • GBDT 做分类为什么也用回归树? 因为 GBDT 每轮拟合的是损失的负梯度(连续值),需要回归树来拟合这些连续目标(详见 GBDT 专题)。
  • 分裂标准还有别的吗? 常用平方误差(MSE),也有绝对误差(MAE,更抗离群但慢)、Friedman MSE 等变体。

七、手算一次平方误差最优切分

四个按 x 排序的目标值为 [2, 4, 10, 12]。不分裂时均值 7,SSE 为 25+9+9+25=68;在中间切开后,左叶均值 3、右叶均值 11,两边 SSE 各为 2,总计 4,误差下降 64。因此树会偏好这个阈值,叶子预测分别是 3 和 11。

leaf_value = mean(y in leaf)
SSE(leaf) = sum_i (y_i - leaf_value)^2
split_gain = SSE(parent) - SSE(left) - SSE(right)
对象/方案核心机制选择或风险
分类树Gini/熵等分类不纯度类别分布或多数类
平方损失回归树叶内 SSE/方差均值
绝对损失回归树叶内绝对偏差中位数
枚举特征阈值 → 计算左右叶最优常数 → 比较总损失
                                  → 递归切分 → 叶子输出

记忆钩子:“回归树输出均值”不是人为规定,而是平方损失下让叶内误差最小的一阶条件。

八、常见误区与追问

  • 误区:回归树的叶子一定输出均值。 输出统计量取决于损失,绝对误差下中位数更自然。
  • 误区:回归树能像线性回归一样自然外推。 超出训练范围仍落到既有叶子,通常不能延伸趋势。
  • 追问:为什么预测呈阶梯状? 每个叶区域输出一个常数,跨阈值才跳到另一个常数。
  • 追问:分类 GBDT 为什么也用回归树? 基树拟合的是连续的负梯度或牛顿步,而非直接投票类别。
  • 追问:如何防止叶均值被少量样本带偏? 提高最小叶样本、使用稳健损失或集成,并检查异常标签。

九、加强记忆

回归树用决策树预测连续值,与分类树两点不同:① 分裂标准——不用纯度(基尼/熵),改用平方误差(方差)最小,即选让两个子集 Σ(yᵢ-c)² 之和最小的分裂,把 y 相近的样本聚到一组;② 叶子输出——不是多数类,而是叶子内样本目标值的均值(因为平方误差下最优常数就是均值;换绝对误差则是中位数)。构建同样是贪心递归二分,把特征空间切成矩形区域、每区域输出一个常数,所以预测是分段常数、阶梯状、不能外推。同样易过拟合,靠剪枝/限制复杂度/集成防止;GBDT、XGBoost 的基学习器正是回归树(做分类也用回归树拟合梯度)。