跳到主要内容

决策树算法详解:信息熵、信息增益、Gini 系数与剪枝

· 阅读需 3 分钟
Apache王也道长
软件开发者与技术作者

决策树是一种可解释性较强的监督学习算法,可用于分类和回归。模型通过不断选择特征并划分数据,让同一叶子节点中的样本尽可能相似。

决策树如何工作

一棵分类树通常包含三类节点:

  • 根节点:包含全部训练样本。
  • 内部节点:根据某个特征和判断条件拆分数据。
  • 叶子节点:给出最终类别或预测值。

训练的核心问题是:每一步应该选择哪个特征,才能让划分后的数据更“纯”。

信息熵

设数据集中共有 $K$ 个类别,第 $k$ 类所占比例为 $p_k$,信息熵为:

$$ H(D)=-\sum_{k=1}^{K}p_k\log_2p_k $$

当样本全部属于同一类别时,熵为 0;类别越混杂,熵通常越大。

某个特征 $A$ 带来的信息增益为:

$$ Gain(D,A)=H(D)-\sum_{v=1}^{V}\frac{|D_v|}{|D|}H(D_v) $$

信息增益越大,说明使用该特征划分后不确定性下降得越多。ID3 算法使用信息增益选择特征。

信息增益率

信息增益容易偏向取值数量较多的特征。C4.5 使用信息增益率进行修正:

$$ GainRatio(D,A)=\frac{Gain(D,A)}{IV(A)} $$

其中 $IV(A)$ 表示特征自身取值分布带来的固有信息。

Gini 系数

CART 分类树常使用 Gini 不纯度:

$$ Gini(D)=1-\sum_{k=1}^{K}p_k^2 $$

Gini 值越小,节点中的样本越集中于少数类别。二分类中,如果正样本比例为 $p$,则:

$$ Gini(D)=2p(1-p) $$

熵和 Gini 都用于衡量数据纯度,但计算形式不同,不能简单理解为完全相同。

回归树

回归树的叶子节点输出连续数值,通常使用均方误差选择划分点。一个常见做法是让左右子节点内部的平方误差之和最小:

$$ \sum_{x_i\in D_L}(y_i-\bar{y}L)^2+ \sum{x_i\in D_R}(y_i-\bar{y}_R)^2 $$

叶子节点预测值通常是该节点训练样本目标值的平均数。

如何防止过拟合

决策树不断分裂后很容易记住训练数据。常见控制方法包括:

  • 限制树的最大深度。
  • 限制叶子节点的最少样本数。
  • 设置节点继续划分所需的最少样本数。
  • 要求划分带来的纯度提升达到阈值。
  • 先生成完整树,再通过验证集进行后剪枝。

决策树、随机森林和 XGBoost

随机森林通过训练多棵相互有差异的决策树,再对结果投票或取平均,以降低单棵树的方差。

XGBoost 属于梯度提升树。它按顺序添加弱学习器,让新树拟合前面模型尚未解释好的部分:

$$ \hat{y}i=\sum{t=1}^{T}f_t(x_i) $$

其中 $f_t$ 表示第 $t$ 棵树。XGBoost 还在目标函数中加入模型复杂度正则项,以控制过拟合。

小结

  • ID3:主要使用信息增益。
  • C4.5:主要使用信息增益率。
  • CART:分类使用 Gini,回归常使用平方误差。
  • 随机森林:并行训练多棵树后集成。
  • XGBoost:按顺序进行梯度提升并加入正则化。

本文阅读量:--

总访问量 -- · 访客数 --