ID3算法原理详解

1.决策树算法

决策树是一种基于特征对实例进行分类或回归的过程。决策树算法最早产生于上世纪60年代,后由罗斯昆(J Ross Quinlan)提出了ID3算法,通过信息增益选择和分裂特征。之后罗斯昆对进行了优化,提出了C4.5算法。ID3算法是一种决策树分类算法。本文讲解其中的ID3算法。

2.ID3算法原理

2.1 信息熵

2.1.1 信息熵的定义

信息熵是描述信息源各可能事件发生的不确定性。信息论之父 C. E. Shannon 在 1948 年借鉴热力学概念提出了信息熵。

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

其中,p_{i}表示第 i 个类别的概率。类别是指样本的分类类别或者说是要预测的分类。

思考:为何熵的计算公式中会有个负号?由于概率介于0-1之间,取对数后的结果为负数,为了便于计量和分析,故在前面加了个负号。

2.1.2 经验熵与经验条件熵

先看二者的计算公式。

根据某一节点的类别,其经验熵的计算公式如信息熵的概念。

特征A的经验熵为:

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

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

条件熵是指在某一特征或条件下,在相应的特征或条件的各属性的加权信息熵。

设特征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.1.3 信息增益

特征A的信息增益:

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

信息熵越大,表示样本的不纯度越高,分类算法的思想是降低不纯度,而信息增益表示分裂后所带来的信息熵的下降量。按此标准,信息增益越大,分裂的效果越好。

2.2 ID3算法步骤

2.2.1 输入与输出

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

 输出:决策树T

2.2.2 算法过程

1、节点预判断

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

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

否则进入下一步。

2、选择分裂特征

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

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

3、节点分类

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

4、继续分裂

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

2.2.3 算法说明

从以上过程可以看出:

1、ID3算法是一种贪婪算法,遍历所有特征和属性;

2、ID3算法只适用于分类特征,对于连续性特征不适用;

3、没有考虑缺失值,存在缺失值的需要预处理;

4、一般来讲,特征属性越多,条件熵会越小,信息增益越大。因此,ID3算法倾向于选择属性较多的特征。

3. ID3算法演示

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

3.1 数据集

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

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.0830

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

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

人数通过拒绝
房产862
734
人数通过拒绝
信用表现优秀550
一般532
514
特征经验熵条件熵信息增益
年龄0.9710 0.8879 0.0830 
性别0.9710 0.9361 0.0348 
收入0.9710 0.8879 0.0830 
房产0.9710 0.8925 0.0785 
信用表现0.9710 0.5643 0.4067 

注:在计算信用表现的属性“优秀”的信息熵时,-(\frac{5}{5}log_{2}\frac{5}{5}+\frac{0}{5}log_{2}\frac{0}{5}) = -0 - 0 = 0,涉及计算\lim_{x\rightarrow 0^{+}}x\log_{2} x = 0,有兴趣的读者可以了解一下极限运算,此处不作说明。

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

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

 2)第二层分裂

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

a)优秀

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

b)一般

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

序号年龄性别收入房产审批结果
1青年通过
4青年通过
5中年拒绝
9中年拒绝
13老年通过

先计算其经验熵:

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.9710 0.0000 0.9710 
性别0.9710 0.95100.0200
收入0.9710 0.4000 0.5710 
房产0.9710 0.6490 0.3220 

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

继续分裂:

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

c)差

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

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

先计算其经验熵:

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.7219 0.5510 0.1709 
性别0.7219 0.6490 0.0729 
收入0.7219 0.5510 0.1709 
房产0.7219 0.4000 0.3219 

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

该节点的分类。“无”属性中,类别最多的为“拒绝”,该属性归类为“拒绝”;“有”属性中,类别数量相同,不妨该属性归类为“通过”。 

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个属性(有)的熵。

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

特征经验熵条件熵信息增益
年龄101
性别101
收入101

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

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

以上性别各属性中,分类唯一,此时无需进一步分裂。

b)无

该属性有3个实例,1个分类。无需进一步分裂。

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

3.3 分裂图示

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

4. ID3算法的总结

ID3算法作为比较早的决策树算法,其主要特点如下:

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

2)不能处理连续特征;

3)不能处理缺失值;

4)倾向于选择多属性的特征。

  • 40
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值