决策树简介
决策树:
- 是⼀种树形结构,本质是⼀颗由多个判断节点组成的树
- 其中每个内部节点表示⼀个属性上的判断,
- 每个分⽀代表⼀个判断结果的输出,
- 最后每个叶节点代表⼀种分类结果。
决策树分类原理
熵
概念
物理学上,熵 Entropy 是“混乱”程度的量度
系统越有序,熵值越低;系统越混乱或者分散,熵值越⾼。
信息理论:
- 1、从信息的完整性上进⾏的描述 : 当系统的有序状态⼀致时,数据越集中的地⽅熵值越⼩,数据越分散的地⽅熵值越⼤。
- 2、从信息的有序性上进⾏的描述 : 当数据量⼀致时,系统越有序,熵值越低;系统越混乱或者分散,熵值越⾼。
“信息熵” (information entropy)是度量样本集合纯度最常⽤的⼀种指标。
- 假定当前样本集合 D 中第 k 类样本所占的⽐例为 pk (k = 1, 2,. . . , |y|)
- pk = Ck / D,
- D为样本的所有数量,
- Ck 为第k类样本的数量。
- 则 D的信息熵定义为((log是以2为底,lg是以10为底)
其中:Ent(D) 的值越⼩,则 D 的纯度越⾼
随堂练习
篮球⽐赛⾥,有4个球队 {A , B , C , D} ,获胜概率分别为{1/2 , 1/4 , 1/8 , 1/8}
- 求Ent(D)
决策树的划分依据
信息增益
概念
- 信息增益:以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越⼤,样本的不确定性就越⼤。 因此可以使⽤划分前后集合熵的差值来衡量使⽤当前特征对于样本集合D划分效果的好坏。
- 信息增益 = entroy(前) - entroy(后)
定义与公式
-
假定离散属性a有 V 个可能的取值:
-
若使⽤a来对样本集 D 进⾏划分,则会产⽣ V 个分⽀结点
-
其中第v个分⽀结点包含了 D 中所有在属性a上取值为av 的样本,记为Dv
-
我们可根据前⾯给出的信息熵公式计算出Dv 的信息熵,再考虑到不同的分⽀结点所包含的样本数不同,给分⽀结点赋予权重 Dv / D
- 即样本数越多的分⽀结点的影响越⼤,于是可计算出⽤属性a对样本集 D 进⾏划分所获得的"信息增益" (information gain)
-
其中:
- 特征a对训练数据集D的信息增益Gain(D , a),定义为集合D的信息熵Ent(D)与给定特征a条件下D的信息条件熵Ent(D ∣ a)之 差,即公式为:
- 特征a对训练数据集D的信息增益Gain(D , a),定义为集合D的信息熵Ent(D)与给定特征a条件下D的信息条件熵Ent(D ∣ a)之 差,即公式为:
公式的详细解释:
-
信息熵的计算:
-
条件熵的计算:
-
其中:
- Dv 表示a属性中第v个分⽀节点包含的样本数
- Ckv 表示a属性中第v个分⽀节点包含的样本数中,第k个类别下包含的样本数
-
⼀般⽽⾔,信息增益越⼤,则意味着使⽤属性 a 来进⾏划分所获得的"纯度提升"越⼤。因此,我们可⽤信息增益来进⾏ 决策树的划分属性选择,著名的 ID3 决策树学习算法 [Quinlan, 1986] 就是以信息增益为准则来选择划分属性。
- 其中,ID3 名字中的 ID 是 Iterative Dichotomiser (迭代⼆分器)的简称
案例:
- 如下图,第⼀列为论坛号码,第⼆列为性别,第三列为活跃度,最后⼀列⽤户是否流失。
- 我们要解决⼀个问题:性别和活跃度两个特征,哪个对⽤户流失影响更⼤?
其中Positive为正样本(已流失),Negative为负样本(未流失)
-
a.计算类别信息熵
- 整体熵:
- 整体熵:
-
b.计算性别属性的信息熵(a=“性别”)
-
c.计算性别的信息增益(a=“性别”)
-
b.计算活跃度属性的信息熵(a=“活跃度”)
-
c.计算活跃度的信息增益(a=“活跃度”)
活跃度的信息增益⽐性别的信息增益⼤,也就是说,活跃度对⽤户流失的影响⽐性别⼤。在做特征选择或者数据分析的 时候,我们应该重点考察活跃度这个指标。
信息增益率
概念
增益率:增益率是⽤前⾯的信息增益Gain(D, a)和属性a对应的"固有值"(intrinsic value) [Quinlan , 1993J的⽐值来共同定 义的。
属性 a 的可能取值数⽬越多(即 V 越⼤),则 IV(a) 的值通常会越⼤.
案例一
-
a.计算类别信息熵
-
b.计算性别属性的信息熵(性别、活跃度)
-
c.计算活跃度的信息增益(性别、活跃度)
-
d.计算属性分裂信息度量
- ⽤分裂信息度量来考虑某种属性进⾏分裂时分⽀的数量信息和尺⼨信息,我们把这些信息称为属性的内在信息 (instrisic information)。信息增益率⽤信息增益/内在信息,会导致属性的重要性随着内在信息的增⼤⽽减⼩(也就是 说,如果这个属性本身不确定性就很⼤,那我就越不倾向于选取它)
- ⽤分裂信息度量来考虑某种属性进⾏分裂时分⽀的数量信息和尺⼨信息,我们把这些信息称为属性的内在信息 (instrisic information)。信息增益率⽤信息增益/内在信息,会导致属性的重要性随着内在信息的增⼤⽽减⼩(也就是 说,如果这个属性本身不确定性就很⼤,那我就越不倾向于选取它)
-
e.计算信息增益率
- 活跃度的信息增益率更⾼⼀些,所以在构建决策树的时候,优先选择
- 通过这种⽅式,在选取节点的过程中,我们可以降低取值较多的属性的选取偏好。
案例⼆
- 如下图,第⼀列为天⽓,第⼆列为温度,第三列为湿度,第四列为⻛速,最后⼀列该活动是否进⾏。
- 我们要解决:根据下⾯表格数据,判断在对应天⽓下,活动是否会进⾏?
该数据集有四个属性,属性集合A={ 天⽓,温度,湿度,⻛速}, 类别标签有两个,类别集合L={进⾏,取消}。
-
a.计算类别信息熵
- 类别信息熵表示的是所有样本中各种类别出现的不确定性之和。根据熵的概念,熵越⼤,不确定性就越⼤,把事情搞清 楚所需要的信息量就越多。
- 类别信息熵表示的是所有样本中各种类别出现的不确定性之和。根据熵的概念,熵越⼤,不确定性就越⼤,把事情搞清 楚所需要的信息量就越多。
-
b.计算每个属性的信息熵
- 每个属性的信息熵相当于⼀种条件熵。他表示的是在某种属性的条件下,各种类别出现的不确定性之和。属性的信息熵 越⼤,表示这个属性中拥有的样本类别越不“纯”。
- 每个属性的信息熵相当于⼀种条件熵。他表示的是在某种属性的条件下,各种类别出现的不确定性之和。属性的信息熵 越⼤,表示这个属性中拥有的样本类别越不“纯”。
-
c.计算信息增益
- 信息增益的 = 熵 - 条件熵,在这⾥就是 类别信息熵 - 属性信息熵
- 它表示的是信息不确定性减少的程度。如果⼀个属性 的信息增益越⼤,就表示⽤这个属性进⾏样本划分可以更好的减少划分后样本的不确定性,当然,选择该属性就可以更 快更好地完成我们的分类⽬标。 信息增益就是ID3算法的特征选择指标。
-
d.计算属性分裂信息度量
- ⽤分裂信息度量来考虑某种属性进⾏分裂时分⽀的数量信息和尺⼨信息,我们把这些信息称为属性的内在信息 (instrisic information)。
- 信息增益率⽤信息增益/内在信息,会导致属性的重要性随着内在信息的增⼤⽽减⼩(也就是 说,如果这个属性本身不确定性就很⼤,那我就越不倾向于选取它),这样算是对单纯⽤信息增益有所补偿。
-
e.计算信息增益率
天⽓的信息增益率最⾼,选择天⽓为分裂属性。发现分裂了之后,天⽓是“阴”的条件下,类别是”纯“的,所以把它定义 为叶⼦节点,选择不“纯”的结点继续分裂。
基尼值和基尼指数
概念
CART 决策树 使⽤"基尼指数" (Gini index)来选择划分属性.
基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不⼀致的概率。故,Gini(D)值越⼩,数据集D的纯 度越⾼。
基尼指数Gini_index(D):⼀般,选择使划分后基尼系数最⼩的属性作为最优化分属性。
案例
请根据下图列表,按照基尼指数的划分依据,做出决策树。
- 1,对数据集⾮序列标号属性 { 是否有房,婚姻状况,年收⼊ } 分别计算它们的Gini指数,取Gini指数最⼩的属性作为决策 树的根节点属性。
第⼀次⼤循环
-
2,根节点的Gini值为:
-
3,当根据是否有房来进⾏划分时,Gini指数计算过程为:
-
4,若按婚姻状况属性来划分,属性婚姻状况有三个可能的取值{ married,single,divorced},分别计算划分后的Gini系 数增益。
- {married} | {single,divorced}
- {single} | {married,divorced}
- {divorced} | {single,married}
- 对⽐计算结果,根据婚姻状况属性来划分根节点时取Gini指数最⼩的分组作为划分结果,即: {married} | {single,divorced}
-
5,同理可得年收⼊Gini:
-
对于年收⼊属性为数值型属性,⾸先需要对数据按升序排序,然后从⼩到⼤依次⽤相邻值的中间值作为分隔将样本划分 为两组。例如当⾯对年收⼊为60和70这两个值时,我们算得其中间值为65。以中间值65作为分割点求出Gini指数。
-
根据计算知道,三个属性划分根节点的指数最⼩的有两个:年收⼊属性和婚姻状况,他们的指数都为0.3。此时,选取 ⾸先出现的属性【married】作为第⼀次划分。
-
第⼆次⼤循环
-
6,接下来,采⽤同样的⽅法,分别计算剩下属性,其中根节点的Gini系数为(此时是否拖⽋贷款的各有3个records)
-
7,对于是否有房属性,可得:
-
8,对于年收⼊属性则有:
经过如上流程,构建的决策树,如下图:
cart剪枝
剪枝 (pruning)是决策树学习算法对付"过拟合"的主要⼿段。
- 在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分⽀过多,这时就可能 因训练样本学得"太好"了,以致于把训练集⾃身的⼀些特点当作所有数据都具有的⼀般性质⽽导致过拟合。因此,可通 过主动去掉⼀些分⽀来降低过拟合的⻛险。
常⽤的减枝⽅法
决策树剪枝的基本策略有"预剪枝" (pre-pruning)和"后剪枝"(post- pruning)
- 预剪枝是指在决策树⽣成过程中,对每个结点在划分前先进⾏估计,若当前结点的划分不能带来决策树泛化性能提 升,则停⽌划分并将当前结点标记为叶结点;
- 后剪枝则是先从训练集⽣成⼀棵完整的决策树,然后⾃底向上地对⾮叶结点进⾏考察,若将该结点对应的⼦树替换 为叶结点能带来决策树泛化性能提升,则将该⼦树替换为叶结点。
预剪枝
在划分之前,所有样例集中在根结点。
- 若不进⾏划分,该结点将被标记为叶结点,其类别标记为训练样例数最多的类别,假设我们将这个叶结点标记 为"好⽠"。
- ⽤前⾯表的验证集对这个单结点决策树进⾏评估。则编号为 { 4,5,8 } 的样例被分类正确。另外 4个样例分类错 误,于是验证集精度为 42.9%
- 在⽤属性"脐部"划分之后,上图中的结点2、3、4分别包含编号为 {1,2,3, 14}、 {6,7, 15, 17}、 {10, 16} 的训 练样例,因此这 3 个结点分别被标记为叶结点"好⽠"、 “好⽠”、 “坏⽠”。
此时,验证集中编号为 {4, 5, 8,11, 12} 的样例被分类正确,验证集精度为 71.4% > 42.9%. 于是,⽤"脐部"进⾏划分得以确定。
- 然后,决策树算法应该对结点2进⾏划分,基于信息增益准则将挑选出划分属性"⾊泽"。然⽽,在使⽤"⾊泽"划分后,编 号为 {5} 的验证集样本分类结果会由正确转为错误,使得验证集精度下降为 57.1%。于是,预剪枝策略将禁 ⽌结点2被 划分。
- 对结点3,最优划分属性为"根蒂",划分后验证集精度仍为 71.4%. 这个 划分不能提升验证集精度,于是,预剪枝策略禁 ⽌结点3被划分。
- 对结点4,其所含训练样例⼰属于同⼀类,不再进⾏划分.
后剪枝
-
后剪枝⾸先考察结点6,若将其领衔的分⽀剪除则相当于把6替换为叶结点。替换后的叶结点包含编号为 {7, 15} 的训 练样本,于是该叶结点的类别标记为"好⽠",此时决策树的验证集精度提⾼⾄ 57.1%。于是,后剪枝策略决定剪枝,如 下图所示。
-
然后考察结点5,若将其领衔的⼦树替换为叶结点,则替换后的叶结点包含编号为 {6,7,15}的训练样例,叶结点类别 标记为"好⽠’;此时决策树验证集精度仍为 57.1%. 于是,可以不进⾏剪枝.
-
对结点2,若将其领衔的⼦树替换为叶结点,则替换后的叶结点包含编号 为 {1, 2, 3, 14} 的训练样例,叶结点标记 为"好⽠"此时决策树的验证集精度提⾼⾄ 71.4%. 于是,后剪枝策略决定剪枝.
-
对结点3和1,若将其领衔的⼦树替换为叶结点,则所得决策树的验证集 精度分别为 71.4% 与 42.9%,均未得到提⾼, 于是它们被保留。 最终,基于后剪枝策略所⽣成的决策树就如上图所示,其验证集精度为 71.4%