当前位置:   article > 正文

C4.5算法原理详解

c4.5

1.C4.5算法与决策树算法

C4.5算法是决策树算法的一种。决策树是一种基于特征对实例进行分类或回归的过程。罗斯昆(J Ross Quinlan)在ID3算法的基础上进行了优化,提出了C4.5算法。 C4.5算法与ID3算法的最大变化在于,引入了信息增益比作为特征分裂的依据。如此,类似于将信息增益进行了“正则化”处理,减轻“过拟合”的风险(这里仅是打个比方。越是简单的规律,越有可能泛化。)。

ID3算法可参见:ID3算法原理详解_blinkyou001的博客-CSDN博客

2.C4.5算法原理

此部分先讲解一下信息熵(经验熵、条件熵)、信息增益、信息增益比,然后讲解一下算法的步骤。部分内容在ID3算法的文章中有详细讲解,此处只简述。

2.1 信息熵

信息熵是描述信息源各可能事件发生的不确定性。其公式为:

H(D) = -\sum_{i}^{} p_{_{i}} \log p_{i}

其中,p_{i}表示第 i 个类别的概率。

由此衍生出两个概念:经验熵、条件熵。

1)经验熵

特征A的经验熵为:

H(D_{}) = - \sum_{i}^{}p_{i}\log p_{i}

2)条件熵

设特征AJ个属性A_{1},A_{2},...,A_{J}

属性A_{j}的信息熵为H(A_{j}) = -\sum_{i}^{}p_{ji}\log p_{ji}  , 其中,i表示该属性的第i个类别,p_{ji}表示该属性中第i个类别的概率。 

属性A_{j}的权重为w_{j} = \frac{|A_{j}|}{|A|},其中|A_{j}|表示 A_{j}对应的样本数量,|A|表示特征A对应的样本数量。

则特征A的条件熵为:

H(D|A) = \sum_{j=1}^{J}w_{j}H(A_{j}) = - \sum_{j=1}^{J}(\frac{|A_{j}|}{|A|}*\sum_{i}^{}p_{ji}\log p_{ji})

2.2 信息增益

特征A的信息增益:

Gain = H(D) - H(D|A)

2.3 信息增益比

按特征AJ个属性将数据集D划分为D_{1},D_{2},...,D_{J}\left | D_{j} \right |表示数据集D_{j}的样本数量,

j=1,2,...,J

特征A的分裂信息:

H_{split}=\sum_{j=1}^{J}\frac{|D_{j}|}{|D|}log_{2}\frac{|D_{j}|}{|D|}

特征A的信息增益比:

Gain_{r} = \frac{Gain}{H_{split}(D)}=\frac{H(D)-H(D|A)}{H_{split}(D)}

从信息增益的计算过程可以看出,当特征的属性较多时,条件熵的值倾向于越小,信息增益越大。从信息增益比的公式可以看出,当两特征的信息增益相同时, 分裂信息越小的(“混沌”程度越低)特征的信息增益比越大。

2.4 C4.5算法步骤

C4.5算法步骤与ID3算法步骤类似。

2.4.1 输入与输出

输入:训练数据集D,特征集A,信息增益分裂阈值\epsilon。其中训练数据集D中包括分类值(可以类似理解为目标值、被解释变量等),分裂阈值\epsilon是为了判断是否进一步分裂的条件。

 输出:决策树T

2.4.2 算法过程

1、节点预判断

1)若该节点的数据集D中所有实例都属于同一类C_{k}, 则以C_{k}作为此节点的分类,此节点分裂结束;

2)若该节点的数据集D中所有实例无任何特征或无可用于分裂的属性,以D中实例类别数量最多的C_{k}作为此节点的实例分类,此节点分裂结束。

否则进入下一步。

2、选择分裂特征

在该分裂的样本集下,计算每一个特征的信息增益比,以信息增益比最大的特征为该节点的分裂特征,进入下一步。

若多个特征的信息增益比相等,随机选择一个特征作为分裂特征;若所有特征最大的信息增益比<\epsilon,则该节点分裂停止,以该节点数据集中实例类别数量最多的C_{k}作为该节点的实例分类。

3、节点分类

按该特征的属性分裂产生子节点,以各属性中实例类别数量最多的C_{k}作为各子节点的类别。

4、继续分裂

对上一步产生的各子节点,返回第1步循环(递归调用)。直至所有节点分裂结束。

3.C4.5算法演示

本部分算法演示选择与ID3算法原理详解_blinkyou001的博客-CSDN博客文中相同的例子进行演示。

以客户的申请信息来判断是否给予贷款。涉及的特征有年龄、性别、收入、房产、信用表现、审批结果,前5个特征分别记为A^{1},A^{2},A^{3},A^{4},A^{5}。以此数据集为样本,记为D

3.1 数据集

序号年龄性别收入房产信用表现审批结果
1青年优秀通过
2青年一般通过
3青年拒绝
4青年优秀通过
5青年一般通过
6中年一般拒绝
7中年拒绝
8中年优秀通过
9中年优秀通过
10中年一般拒绝
11老年优秀通过
12老年通过
13老年拒绝
14老年一般通过
15老年拒绝

 3.2 算法步骤

1)第一层分裂

样本数据的分类,即“审批结果”有两个类别:通过、拒绝,并非同一类,需要分裂。

为选择分裂特征,需要计算各特征的信息增益。为计算信息增益,先计算经验熵和条件熵。

经验熵:

H_{1}(D) = -(\frac{9}{15}log_{2}\frac{9}{15}+\frac{6}{15}log_{2}\frac{6}{15}) = 0.9710

年龄的条件熵:

人数通过拒绝
年龄青年541
中年523
老年532

 青年、中年、老年的权重分别为:w_{1} =\frac{5}{15},w_{2} =\frac{5}{15},w_{3} =\frac{5}{15}

青年的信息熵:H(A_{1}^{1}) = -(\frac{4}{5}log_{2}\frac{4}{5}+\frac{1}{5}log_{2}\frac{1}{5}) = 0.8879

中年的信息熵:H(A_{2}^{1}) = -(\frac{2}{5}log_{2}\frac{2}{5}+\frac{3}{5}log_{2}\frac{3}{5}) = 0.9710

老年的信息熵:H(A_{3}^{1}) = -(\frac{3}{5}log_{2}\frac{3}{5}+\frac{2}{5}log_{2}\frac{2}{5}) = 0.9710

计算年龄特征的条件熵:

H(D|A^{1}) = w_{1}H(A_{1}^{1}) + w_{2}H(A_{2}^{1}) + w_{3}H(A_{3}^{1}) = 0.8879

年龄特征的信息增益:

G(D,A_{1})=H(D)-H(D,A^{1})=0.9710-0.8879=0.0831

年龄的分裂信息:

H_{split}(D)=-(\frac{5}{15}*log_{2}\frac{5}{15}+\frac{5}{15}*log_{2}\frac{5}{15}+\frac{5}{15}*log_{2}\frac{5}{15})=1.5850

年龄特征的信息增益比:

G_{r}(D,A)=\frac{G(D,A)}{H_{1}(D)}=\frac{0.0831}{1.5850}=0.0524

类似可以计算其它特征的信息增益:

人数通过拒绝
性别844
752
人数通过拒绝
收入532
541
523

人数通过拒绝
房产862
734
人数通过拒绝
信用表现优秀550
一般532
514
特征经验熵条件熵信息熵分裂信息信息增益比
年龄0.9710.88790.08311.5850.0524
性别0.9710.93610.03490.99680.035
收入0.9710.88790.08311.5850.0524
房产0.9710.89250.07850.99680.0788
信用表现0.9710.56430.40671.5850.2566

从上表可以看出,信用表现的信息增益比最高。若最大信息增益的特征有多个,可以随机选择一个。其属性有优秀、一般、差。特征选择完毕。

该节点的分类。“优秀”属性中,类别最多的为“通过”,该属性归类为“通过”;“一般”属性中,类别最多的为“通过”,该属性归类为“通过”;“差”属性中,类别最多的为“拒绝”,该属性归类为“拒绝”。 

 2)第二层分裂

分别对信用表现特征的三个属性作为预判断,再决定是否继续分裂。

a)优秀

该节点下的数据都属于“通过”一类。无需再分裂。

b)一般

样本数据的分类,即“审批结果”有两个类别:通过、拒绝,并非同一类,需要分裂。

序号年龄性别收入房产审批结果
2青年通过
5青年通过
6中年拒绝
10中年拒绝
14老年通过

先计算其经验熵:

H_{2}(A_{2}^{5}) = -(\frac{3}{5}log_{2}\frac{3}{5}+\frac{2}{5}log_{2}\frac{2}{5})=0.9710,其中H_{2}(A_{2}^{5})表示第二层分裂、第5个特征(信用表现)的第2个属性(一般)的熵。

类似计算得到:

特征经验熵条件熵信息熵分裂信息信息增益比
年龄0.97100.9711.52190.638
性别0.9710.9510.020.9710.0206
收入0.9710.40.5711.52190.3752
房产0.9710.6490.3220.72190.446

年龄的信息增益比最大,选择年龄作为进一步分裂的特征。年龄的属性有:青年、中年、老年。

继续分裂:

青年分类均为“通过”,中年分类均为“拒绝”,老年分类均为“通过”。本节点分裂结束。

c)差

样本数据的分类,即“审批结果”有两个类别:通过、拒绝,并非同一类,需要分裂。

序号年龄性别收入房产审批结果
3青年拒绝
7中年拒绝
12老年通过
13老年拒绝
15老年拒绝

先计算其经验熵:

H_{2}(A_{3}^{5}) = -(\frac{4}{5}log_{2}\frac{4}{5}+\frac{1}{5}log_{2}\frac{1}{5})=0.7219,其中H_{2}(A_{3}^{5})表示第二层分裂、第5个特征(信用表现)的第1个属性(差)的熵。

条件熵与信息增益比:

特征经验熵条件熵信息熵分裂信息信息增益比
年龄0.72190.5510.17091.3710.1247
性别0.72190.6490.07290.72190.101
收入0.72190.5510.17091.3710.1247
房产0.72190.40.32190.9710.3315


房产的信息增益最大,选择房产作为进一步分裂的特征。房产的属性有:有,无。

该节点的分类。“有”属性中,两类别数量相同,不妨将该属性归类为“拒绝”;“无”属性中,均为“拒绝”,该属性归类为“拒绝”。 

3)第三层分裂

在第二层中,信用表现中的属性“差”尚需进一步分裂。 已经选择出房产作为下一步分裂的特征。

分别对房产特征的两个属性作为预判断,再决定是否继续分裂。

a)有

该属性2个实例分属两类,需要继续分裂。

序号年龄性别收入审批结果
11老年通过
14老年拒绝

该节点的经验熵为:

H_{3}(A_{1}^{4})=-(\frac{1}{2}log_{2}\frac{1}{2}+\frac{1}{2}log_{2}\frac{1}{2})=1,其中,H_{3}(A_{1}^{4})表示第三层分裂、第4个特征(房产)的第1个属性(有)的熵。

其中,年龄特征只剩1个属性,已无法再分裂。剩余性别、收入再进行分裂。

如前文计算该节点的信息增益比:

特征经验熵条件熵信息熵分裂信息信息增益比
性别10111
收入10111

性别和收入的信息增益比均为1,不妨选择性别作为进一步分裂特征。性别的属性有:男,女。

该节点的分类。“男”属性中,类别均为“通过”,该属性归类为“通过”;“女”属性中,类别均为“拒绝”,该属性归类为“拒绝”。 

以上属性中,分类唯一,无需要进一步分裂。本节点分裂结束。

b)无

该属性分类均为“拒绝”,仅有1个分类。无需进一步分裂。

至此,所有节点均无需再进一步分裂(单一类别),分裂结束。

3.3 分裂图示

 

注:属性颜色,黑色表示进一步分裂前的分类--“通过”,红色表示进一步分裂前的分类--“拒绝”。

4.C4.5算法的总结

C4.5算法作为基础的决策树算法之一,是在ID3算法基础上改进而来:

1)是决策树算法的一种,通过信息增益比来决定分裂特征与分裂节点的选择;

在算法实现细节上,C4.5算法作了相应的处理,使得:

2)能够处理连续特征:将连续特征进行离散化;

3)能够处理缺失值;

4)C4.5算法使用了后剪枝,降低了过拟合的风险。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/611996
推荐阅读
相关标签
  

闽ICP备14008679号