1.是⼀种树形结构,本质是⼀颗由多个判断节点组成的树
2.每个内部节点表示⼀个属性上的判断
3.每个分⽀代表⼀个判断结果的输出
4.最后每个叶节点代表⼀种分类结果
决策树算法基本原理是用决策点代表决策问题,用方案分枝代表可供选择的方案,用概率分枝代表方案可能出现的各种结果,经过对各种方案的各种结果的比较,为决策者提供决策依据。
名称 | 分支方式 | 提出时间 | 备注 |
---|---|---|---|
ID3 | 信息增益 | 1975 | 只能对离散数据集进行构建决策树 |
C4.5 | 信息增益率 | 1993 | 优化解决ID3分支过程中总是偏向分类多的属性 |
CART | Gini系数 | 1984 | 可以进行分类回归,可以处理离散数据集,也可以处理连续数据集 |
集美大学三好学生评选表
— | 是否挂科 | 获得奖学金次数 | 综测评价 | 体质健康是否达标 | 宿舍检评 | 是否符合条件 |
---|---|---|---|---|---|---|
1 | no | 4 | excellect | yes | excellent | yes |
2 | no | 1 | good | no | excellent | no |
3 | no | 0 | excellect | yes | excellent | yes |
4 | no | 1 | excellect | no | excellent | no |
5 | no | 2 | good | yes | excellent | yes |
6 | no | 1 | excellect | yes | excellent | no |
7 | no | 1 | excellect | yes | excellent | yes |
8 | yes | 0 | good | yes | excellent | no |
9 | no | 2 | good | yes | good | no |
10 | no | 2 | excellect | yes | excellent | yes |
11 | yes | 2 | excellect | yes | excellent | no |
12 | yes | 0 | good | yes | good | no |
13 | yes | 0 | excellect | yes | pass | no |
14 | no | 4 | excellect | yes | excellent | yes |
15 | no | 2 | excellect | yes | excellent | yes |
“信息熵”是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占的比例为 p k (K=1, 2, …, |y|),则D的信息熵定义为
离散属性a有V个可能的取值{a 1 , a 2 , …, a V },用a来进行划分,则会产
生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为
a v 的样本,记为D v 。则可计算出用属性a对样本集D进行划分所获得的
“信息增益” :
一般而言,Ent(D)的值越小,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。
ID3算法就是以信息增益为准则来选择划分属性
以属性"是否挂科"为例,其对应的数据子集分别为D1(是否挂科=yes) ,D2(是否挂科=no)
获 得 奖 学 金 次 数
综 测 评 价
体 质 健 康 是 否 达 标
宿 舍 检 评
此时,属性“是否挂科”的信息增益最大,其被选为划分属性
继续对每个分支进行划分,又因为(是否挂科=yes)里面都是不符合条件的,所以,就以(是否挂科=yes)为例继续划分:
获 得 奖 学 金 次 数
综 测 评 价
体 质 健 康 是 否 达 标
宿 舍 检 评
显然,获得奖学金次数信息增益最大,则以获得奖学金次数为下一个节点继续划分,以此类推,一直以这个信息熵最大的节点为下一个节点来分支,最终得到的决策树如图:
如果把编号作为一个属性进行划分,那么就意味着,每个节点分支都是百分之百是这个类型,那信息熵Ent(D)=0,信息增益为0.9963-0,那就是0.9963,那不就用编号为属性划分不就更好吗?
所以,信息增益对可取值数目较多的属性有所喜好,为了更好的优化这个ID3算法,就有了下面C4.5算法。
其中,
属性 a 的可能取值数⽬越多(即 V 越⼤),则 IV(a) 的值通常会越⼤
是否挂科:{yes, no}
D1 = yes:{8,11,12,13}
D2 = no:{1,2,3,4,5,6,7,9,10,14,15}
是 否 挂 科
所以,同理可得:
获 得 奖 学 金 次 数
IV(获得奖学金次数)= 1.9329
IV(综测评价)= 0.9183
IV(体质健康是否达标)= 0.3875
IV(宿舍检评)= 0.9055
IV(编号)= 3.9062
还有上面的IV(是否挂科)=0.8366
则信息增益率为:
Gain_ratio(D,是否挂科) = 0.3620
Gain_ratio(D,获得奖学金次数) = 0.1243
Gain_ratio(D,综测评价) = 0.1184
Gain_ratio(D,体质健康是否达标) = 0.3452
Gain_ratio(D,宿舍检评) = 0.2350
Gain_ratio(D,编号) = 0.2550
可以看出是否挂科的信息增益率最高,所以在构建决策树的时候,优先选择是否挂科
通过这种⽅式,在选取节点的过程中,我们可以降低取值较多的属性的选取喜好,这样编号对决策树节点选择的影响就会降低。
降低了用信息增益选择属性时偏向选择值多的属性的影响
分类问题中,假设D有K个类,样本点属于第k类的概率为pk,则概率
分布的基尼值定义为:
还是以上面集美大学三好学生评选表为例,求(是否挂科=no)的基尼系数?
总样本数|D|=15
是否挂科=yes时 全是no,
则基尼指数:gini = 4/15 *gini1+ 11/15 * gini92
特征选择采⽤了基尼指数来简化计算。