C4.5算法的基本原理?C4.5算法与ID3算法的区别?

2023年1月11日10:38:11C4.5算法的基本原理?C4.5算法与ID3算法的区别?已关闭评论

ID3还存在许多需要改进的地方,于是,Quinlan在1993年提出了ID3算法的改进版本C4.5。C4.5算法的核心思想与ID3完全一样,它与ID3算法不同的地方包括:

(1)划分度量采用增益率;

(2)能够处理数值属性;

(3)能够处理未知属性;

(4)采用 次迭代交叉验证来评估模型的优劣程度;

(5)提供了将决策树模型转换为If-then规则的算法。

1.增益率

信息增益趋向选择具有最大不同取值的属性。因为具有大量不同值的属性被选为分支属性后,能够产生许多小而纯的子集,会很明显地降低子女结点的不纯性,但这种属性很多时候不是一个具有预测性的属性。例如用户ID,根据这样的属性划分的子集都是单元集,对应的结点当然就是纯结点。即使在不太极端的情况下,也不希望产生大量输出的条件,因为与每个划分相关联的记录太少,以致不能够做出可靠的预测。

解决以上问题的方法有两种。一种方法是限制测试条件的划分个数,例如CART算法就限制测试条件只能二元划分;另一种方法是修改度量标准,把划分属性的输出数也考虑进去。Quinlan提出使用增益率来代替增益比例。

我们先来考虑训练数据集关于属性 的信息量(熵) SplitInfo ( ),这个信息量与训练数据集的类别无关,计算公式如下:

C4.5算法的基本原理?C4.5算法与ID3算法的区别?

假设,属性 的值将数据集 分成子集合 , ,…, ,那么式子中 表示 所包含的训练数据的个数, 表示训练数据集的样本总数。训练数据集在属性 上的分布越均匀 SplitInfo ( )的值越大。因此, SplitInfo ( )可以用来衡量分裂属性数据的广度和均匀性。关于属性 的增益率计算如下:

C4.5算法的基本原理?C4.5算法与ID3算法的区别?

如果某个属性产生了大量的划分,那么数据集关于该属性的信息量就会很大,从而降低了信息率。但是,当某个属性存在一个 ≈ 时,它的 SplitInfo 将非常小,从而导致增益率异常大,为了解决此问题C4.5算法进行了进一步的改进,它计算每个属性的信息增益,只对超过平均信息增益的属性通过增益率来进一步比较选取。

2.处理有连续值的属性

C4.5算法处理具有连续值属性的方法如下:

(1)按照属性值对训练数据集进行排序;

(2)取当前样本的属性值和前一个样本属性值的中点作为一个阈值;

(3)按照步骤(1)中排好的顺序,依次改变当前样本的属性值,重复步骤(2);

(4)得到所有可能的阈值、增益、增益率。

如此,每个具有连续值的属性就会被划分为两个区间,大于阈值或者小于阈值。

3.对未知属性值的处理

C4.5算法在处理训练数据集时,若遇到未知属性值一般会采取以下方法之一:

(1)将未知值用最常用的值代替;

(2)将未知值用该属性所有取值的平均值代替;

(3)采用概率的办法,为未知属性值取每一个值赋予一个概率,这些概率的获取依赖于已知的属性值的分布,在建立决策树时将这些概率分配到子结点中去。

4. 次迭代交叉验证

把数据分为大小相同的 份,每次运行,选择其中一份作为检验集,其余的全作为训练集,并重复 次该过程,使得每份数据都用于验证恰好一次。这么做可以使尽可能多的样本用于训练模型,从而更加接近原始样本的分布。另外,也可以减少随机因素对实验结果的影响。

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。