目录
一、决策树
1.1原理
1.2决策树的特点
1.3决策树的三种基本类型
二、ID3(信息增益)算法
2.1信息熵
2.2条件熵
2.3信息增益详解
3. ID3算法缺点
三、C4.5算法(分类树)
1.信息增益率
2.剪枝
2.1 预剪枝
2.2后剪枝
3.缺点
四、CART算法 (分类树)
4.1.连续特征处理
4.2.离散特征处理
4.3.基尼指数(分类树)
4.4.基尼指数(回归树)
五、连续与缺失值
5.1连续值
5.2缺失值
六.多变量决策树
决策树:从训练数据中学习得出一个树状结构的模型。
- 决策树属于判别模型。
- 决策树是一种树状结构,通过做出一系列决策(选择)来对数据进行划分,这类似于针对一系列问题进行选择。
- 决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果。
就相当于这种树状模型。比如说女生找对象,首先看长相,家庭背景,等等以此往下。
- 决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新数据进行预测。
- 决策树算法属于监督学习方法。
- 决策树归纳的基本算法是贪心算法,自顶向下来构建决策树。
- 贪心算法:在每一步选择中都采取在当前状态下最好/优的选择。
- 在决策树的生成过程中,分割方法即属性选择的度量是关键。
优点:
缺点:
建立决策树的关键,即当前状态下选择哪个属性作为分类依据。根据不同的目标函数,建立决策树主要有以下三个算法:ID3(Iterative Dichotomiser)、C4.5、CART(Classification And Regression Tree)。
ID3算法最早是由罗斯昆(J.Ross Quinlan)于1975年提出的一种决策树构建算法,算法的核心是“信息嫡”,期望信息越小,信息嫡越大,样本纯度越低。
- ID3算法是以信息论为基础,以信息增益为衡量标准,从而实现对数据的归纳分类。
- ID3算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定的测试属性。
其大致步骤:
“信息熵”是度量样本集合纯度最常用的一种指标。
按年龄划分:
条件熵 H(X|Y) 表示在已知随机变量Y的条件下,随机变量 X 的不确定性。
信息增益 = 信息熵 - 条件熵
有几个公式不能弄混,很相似,但完全不同。这个信息熵是针对类别算出。而那个条件熵,是针对一个条件进行计算,步骤是先算出在该条件下的信息熵,然后按照公式
上图是按照老年属性算的条件熵,所以最后算出的是老年的信息增益。基本前面有样例,可对比查看。同理,我也可以按照年龄的信息熵来计算信息增益,就是一个不同属性划分的问题。西瓜书上那个p78页就是根据每一个属性划分类别,判断好坏瓜。
针对于ID3的算法缺点,进行改进,C4.5算法。
C4.5算法是Ross 对ID3算法的改进
举例一:
举例二:
把每一个特征都计算出来信息增益率,选出最大的信息增益率,进行分列。
因为决策树会出现过拟合的原因:
预剪枝不仅可以降低过拟合的风险而且还可以减少训练时间,但另一方面它是基于“贪心”策略,会带来欠拟合风险。
针对数据集:
讲述一下预剪枝过程,用表4.2的验证集对这个单节点决策树进行评估,则编号为{4,5,8}的样例被分类正确,另外四例分类错误,于是验证集是3/7 *100%=42.9%。预剪枝是从根结点往下来,首先从脐部划分,上图中的序号2,3,4,分别包含编号为{1,2,3,14},{6,7,15,17},{10,16}的训练样例,因此这三个节点分别被标记为叶结点“好瓜”,“好瓜”,“坏瓜”。此时,验证集中编号为{4,5,8,11,12}的样例被分类正确,其中4,5,8是好瓜,11,12是坏瓜。验证集精度为5/7*100%=71.4%>42.9%,于是能够进行往下划分。
对于序号2,进行划分,基于信息增益准则将挑选划分属性“色泽”。然而在划分71.4%的基础上,再使用“色泽”划分后,编号5将由分配正确变为错误(浅白是坏瓜),验证精度下降为57.1%。于是不可以进行划分。所以序号2直接为好瓜。
下一级划分的时候,就要按71.4%来划分,首先从左边划分属性是色泽,对于验证集来看{5}的色泽是浅白,将是从分类正确划分为错误,分类正确的还有{4,5,11,12},于是4/7*100%=57.1%,小于71.4%。所以不能划分。
同理,根蒂,将其改成好瓜,验证集还是71.4%,禁止划分。
序号4就不行划分了。
- 在已经生成的决策树上进行剪枝,从而得到简化版的剪枝决策树。
- 后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情况下,后剪枝的欠拟合风险更小,泛化性能往往优于预剪枝决策树。
后剪枝先从训练集生成一课完整决策树,例如基于表4.2的数据训练集得到后剪枝前的决策树。易知,该决策树的验证集精度为42.9%。
后剪枝是从后往前,首先看序号6 纹理,如果将其替换调,就会变成叶结点,替换后的叶节点包含编号为{7,15}的训练样本,于是将叶结点的类别标记为“好瓜”,此时决策树的验证集精度提升到57.1%(9号加入到好瓜队列,所以4/7*100%=57.1%),能够进行剪枝。
序号5 ,如果将其替换调,就会变成叶结点,替换后的叶节点包含编号为{6,7,14,15}的训练样本,于是将叶结点的类别标记为“好瓜”,此时决策树的验证集精度提升到57.1%(验证集的9号加入到好瓜队列,所以4/7*100%=57.1%),
序号2,如果将其替换调,就会变成叶结点,替换后的叶节点包含编号为{1,2,3,14}的训练样本,于是将叶结点的类别标记为“好瓜”,此时决策树的验证集精度提升到71.4%(在序号6剪枝的基础上,把13号加入好瓜队列,验证集精度为5/7*100%=71.4%)超过了57.1%(在序号6剪枝后的基础上),进行剪枝。
序号3 ,如果将其替换调,就会变成叶结点,将叶结点的类别标记为“好瓜”,此时决策树的验证集精度未发生变化(在序号2,5剪枝的基础上5/7*100%=71.4%)
就变成了后面的结果:
后剪枝后:
因为 C4.5算法是基于多叉树的,所以说效率是比较低的。
- Classification and Regression Tree (CART)是决策树的一种。
- 用基尼指数来选择属性(分类),或用均方差来选择属性(回归)。
- 顾名思义,CART算法既可以用于创建分类树,也可以用于创建回归树,两者在构建的过程中稍有差异。
- 如果目标变量是离散的,称为分类树。
- 如果目标变量是连续的,称为回归树。
CART的特征会多次参与节点的建立,而在ID3或C4.5的一颗子树中,离散特征只会参与一次节点的建立。
Gini指数最早应用在经济学中,主要用来衡量收入分配公平度的指标。
在决策树Cart算法中用Gini指数来衡量数据的不纯度或者不确定性。
EART算法--分类
第一次先把工资作为根。然后在工资基础上看压力与平台的基尼指数。
前面几个都是基于分类,下面是基于回归,基于分类的话,上面的例子中是从几个维度来分析(工资、压力、平台),回归的话是看输出为这个工作的好坏程度。
用均方差来选择属性
前面也提到剪枝分为预剪枝和后剪枝,因为过拟合,观察的过于细致,把重要的看成了一般,所以引进剪枝,针对于上图的CART回归树,可以进行剪枝。
对于西瓜书上的训练集,算出信息增益:
可以看出纹理的信息增益最大,所以作为根部。在纹理之后,在计算再纹理清晰的情况下在计算各个属性的信息增益,依次按照递归的方式进行划分
如何想办法利用有缺失的特征?
对于下面的第二点说明,如果说纹理的权重分布是5/17,6/17,6/17。在纹理中的稍糊下面,如果说敲声的一个属性也是有特征缺失,那么需要将权重相乘,最终以最高权重为判断依据。
在之前生成的决策树中,每个特征都只被用了一次。但对于连续特征,每个特征在进行一次划分后,理论上还能进行二次划分,因为此时特征的取值并不受限于决策树的分支数量,称这样的决策树为(特征)多变量决策树。