[机器学习]决策树ID3,C4.5,CART

676 阅读6分钟

ID3、C4.5和CART是三种经典的决策树算法(生成决策树的方法)

他们之间根本性的区别, 就是生成树的方式不同.

它们在特征选择、树结构(多叉树or二叉树)、适用任务(分类or回归)等方面各有特点。

以下是它们的详细对比:

1. ID3 (Iterative Dichotomiser 3)

  • 提出时间与作者:Ross Quinlan于1986年提出。

  • 任务类型:分类任务

  • 树结构: 多叉树

  • 支持数据类型: 只能处理离散型特征(不能处理连续型特征和缺失值)

  • 特征选择标准信息增益(基于熵的减少,信息增益越大,代表熵减少的越多),选择使信息增益最大的特征进行分裂。(熵代表信息的混乱程度, 代表信息的不确定性. 信息越混乱,熵越大.)

  • 特点

    • 生成多叉树,每个特征的分裂对应其所有的取值.
    • 只能处理离散型特征, 无法处理连续型特征, 无法处理缺失值。
    • 容易过拟合,没有剪枝步骤。
  • 局限性:信息增益偏向多值特征(比如ID类特征),可能导致过拟合。


2. C4.5

  • 提出时间与作者:Ross Quinlan在ID3基础上改进,1993年提出。

  • 任务类型:分类任务

  • 树结构: 多叉树

  • 支持数据类型: 能处理离散型特征+连续型特征+缺失值

  • 特征选择标准信息增益率(信息增益除以分裂信息量),平衡多值特征的偏好。

  • 特点

    • 支持连续特征(通过二分法离散化)和缺失值处理(按比例分配样本)。
    • 生成多叉树,但通过后剪枝(如悲观错误剪枝)减少过拟合。
    • 引入剪枝技术,提升泛化能力。
  • 改进:解决了ID3对多值特征的偏好问题,扩展了数据类型的支持, 同时还有了对过拟合问题的处理(后剪枝)


3. CART (Classification and Regression Trees)

  • 提出时间与作者:Breiman等人于1984年提出。

  • 任务类型:分类任务和回归任务

  • 树结构: 二叉树

  • 支持数据类型: 支持离散型特征+连续型特征+缺失值

  • 特征选择标准

    • 分类任务:基尼不纯度(衡量数据不纯度,计算更快),追求基尼系数最小化,基尼系数越小代表数据越纯.
    • 回归任务:最小平方误差或最小绝对误差。
  • 特点

    • 生成严格的二叉树,每个节点仅分裂为两个子节点。
    • 支持离散特征+连续特征+缺失值(通过替代分裂处理)。
    • 使用代价复杂度剪枝(基于交叉验证)优化模型。
  • 优势:结构简单、适用性广(分类和回归),基尼指数计算效率高。


关键对比总结

特性ID3C4.5CART
任务类型分类分类分类、回归
特征选择标准信息增益信息增益率基尼指数(分类)/平方误差(回归)
树结构多叉树多叉树二叉树
支持特征类型离散型离散型+连续型+缺失值离散型+连续型+缺失值
缺失值处理是(按比例分配样本)是(替代分裂)
剪枝策略后剪枝(如悲观错误剪枝)代价复杂度剪枝
过拟合风险高(无剪枝)较低(剪枝支持)低(剪枝和二叉树结构)

应用场景建议

  • ID3:适用于小规模离散数据快速建模,但对过拟合敏感。
  • C4.5:适合需要处理连续特征和缺失值的分类任务,泛化能力更强。
  • CART:广泛用于分类和回归(如房价预测),二叉树结构适合集成学习(如随机森林、GBDT)。

这些算法为后续集成方法(如随机森林、XGBoost)奠定了基础,理解其原理对掌握现代机器学习模型至关重要。

总结

1/  id3和c4.5是多叉树,cart是二叉树。
2/  id3算法只能只能处理离散特征,c4.5和cart可以处理离散特征+连续特征+缺失值
3/  id3和c4.5只可以解决分类任务,cart可以解决分类和回归任务

4/  id3采用的是熵(信息增益) info-gain,信息增益越大越好(信息增益越大, 代表从不纯到纯的跨度越大)
5/  c4.5采用的是信息增益比 info-gain-rate,信息增益比越大越好
6/  cart采用是gini指数(分类),mse均方差(回归),gini指数越小越好。

信息熵,或者称为香农熵. 
代表一份信息的混乱程度, 或者是代表一份信息的不确定性.
信息越混乱, 则熵越大.

4/信息增益(info-gain)

信息增益可以理解是2个熵值之间的diff.
基于某个属性划分数据集前后的熵的变化diff, 这个diff就是信息增益. 

信息增益越大, 代表信息的不确定性减少的越多. 

信息增益比(info-gain-rate)

之所以引入了信息增益比,是由于信息增益有一个缺点: 信息增益总是偏向于多值特征.
信息增益比在此基础上增加了一个惩罚项,解决了这个问题。

Gini系数

gini系数也是表示数据的混乱程度,纯度. 

既然这两个都可以表示数据的纯度(混乱程度),那么这两个有什么区别那?

Gini系数的计算不需要对数运算,更加高效;
Gini系数更偏向于连续属性,熵更偏向于离散属性。

树模型为什么不需要归一化?

因为无论是分类决策树,还是回归决策树,
无论是离散特征,还是连续特征,
我们在构建树的时候,都是需要去寻找某个特征的某个最佳的分裂点。
数据的归一化,并不会影响分裂点的位置,对树的结构不会造成影响,
所以,树模型不需要进行数据的归一化。

注意:数值缩放,不影响分列点位置。
        
      

总结

信息增益:根据信息熵选择可以带来最大信息增益的属性,缺点是:偏好多值特征.
信息增益比:对信息增益加了一个分母,移除了信息增益对含有较多取值的属性有偏好,
         但是随之而来的是对含有较少取值的特征的偏好,
         通常的使用方法是:首先选择信息增益超过平均值的属性,
         再从这些属性中选择增益率最大的属性
基尼指数:根据从样本集中选择2个样本其类别不一样的概率选择最优划分属性,基尼指数越小越好