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年提出。
-
任务类型:分类任务和回归任务
-
树结构: 二叉树
-
支持数据类型: 支持离散型特征+连续型特征+缺失值
-
特征选择标准:
- 分类任务:基尼不纯度(衡量数据不纯度,计算更快),追求基尼系数最小化,基尼系数越小代表数据越纯.
- 回归任务:最小平方误差或最小绝对误差。
-
特点:
- 生成严格的二叉树,每个节点仅分裂为两个子节点。
- 支持离散特征+连续特征+缺失值(通过替代分裂处理)。
- 使用代价复杂度剪枝(基于交叉验证)优化模型。
-
优势:结构简单、适用性广(分类和回归),基尼指数计算效率高。
关键对比总结
| 特性 | ID3 | C4.5 | CART |
|---|---|---|---|
| 任务类型 | 分类 | 分类 | 分类、回归 |
| 特征选择标准 | 信息增益 | 信息增益率 | 基尼指数(分类)/平方误差(回归) |
| 树结构 | 多叉树 | 多叉树 | 二叉树 |
| 支持特征类型 | 离散型 | 离散型+连续型+缺失值 | 离散型+连续型+缺失值 |
| 缺失值处理 | 否 | 是(按比例分配样本) | 是(替代分裂) |
| 剪枝策略 | 无 | 后剪枝(如悲观错误剪枝) | 代价复杂度剪枝 |
| 过拟合风险 | 高(无剪枝) | 较低(剪枝支持) | 低(剪枝和二叉树结构) |
应用场景建议
- 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个样本其类别不一样的概率选择最优划分属性,基尼指数越小越好