一、C4.5算法仍存在的不足
(1)计算效率不高
C4.5使用的信息增益率计算涉及熵的对数计算,特别是当属性值数量大时,计算成本较高。
(2)处理连续数值属性不够高效
ID3算法只能处理离散属性,需要预先对连续属性进行离散化处理。C4.5虽然也能处理连续属性,但效率不高。
二、CART算法原理
分类与回归树(Classification And Regression Trees,CART)算法是一种决策树构建方法。同时适用于分类和回归任务。它是机器学习中的监督学习算法。
(1)算法核心思想
CART算法的核心思想是通过递归地选择最佳特征和阈值来分割数据集,直至满足预设的停止条件,最终形成一个二叉树结构。这个树结构可以用来做分类或预测连续值的回归。
(2)什么是基尼不纯度?
基尼不纯度(Gini Impurity)是衡量数据集中类别的混乱程度的一种指标,用于决策树算法中确定最佳分裂特征。其计算公式如下:
假设数据集共有K个类别,第k类样本所占的比例为(其中)则该数据集的基尼不纯度计算公式为:
这个公式的直观理解是:
- 每一个类别的概率越大,它“纯净”的贡献(即)就越大,而基尼不纯度作为整体的“不纯净”程度就越小;
- 反之,如果各类别分布均匀,每个类别的概率都很小,那么基尼不纯度就会接近其最大值1,表示数据集非常“混乱”。
在决策树构建过程中,会选择使得分割后两个子集的加权基尼不纯度之和最小的特征作为最佳分割特征。
(3)算法步骤
CART算法的工作过程主要分为以下三个步骤:
① 特征选择与阈值确定
在每个节点上,算法会遍历所有特征的所有可能分割点,计算分割后的不纯度或误差,并选择使得不纯度或误差降低最多的特征和分割点。
- 对于分类任务,CART使用基尼不纯度作为衡量标准来选择最佳分割特征和分割点。基尼不纯度越低表示数据划分后类别分布越纯净。
- 对于回归任务,CART使用均方误差作为衡量标准,寻找使得各子集残差平方和最小的分割点。
② 树的生成
从根节点开始,根据选定的特征和分割点划分数据集,然后对每个子集重复此过程,直到满足停止条件,如节点中的样本属于同一类别、达到预设的最大深度、子集中的样本数小于某个阈值等。
③ 树的剪枝
为了避免过拟合,CART使用后剪枝策略。即先生成一棵完整的树,然后自底向上地检查是否可以通过合并某些子树来降低测试集上的误差。剪枝的目的是找到一个子树,它在训练集上的性能可能略差,但在未知数据上的泛化能力更强。
三、CART算法如何解决前辈们遗留的问题
(1)处理连续数值属性
CART算法能够直接处理连续属性,通过选择最优的分割点来划分数据(即确定节点阈值),而ID3算法只能处理离散属性,需要预先对连续属性进行离散化处理。C4.5虽然也能处理连续属性,但CART在处理连续属性时更为直接和高效。
(2)同时支持分类与回归
CART算法不仅适用于分类任务,还能处理回归问题,即预测连续数值,这是ID3和C4.5所不具备的能力。这一灵活性拓宽了CART的应用场景。
(3)计算效率高
CART使用基尼不纯度作为分裂标准,计算上相对简单,避免了ID3和C4.5信息增益计算中的对数运算,从而提高了效率。基尼不纯度在处理类别不平衡的数据集时表现得更为稳健。