目录
1衡量样本集合纯度的几种指标
1.1信息熵
信息熵是信息量的数学期望,是信源发出信息前的先验不确定性,也称为先验熵,信息熵的数学定义为:
1.2信息增益
信息增益 = entroy(前) - entroy(后)
条件熵:
信息增益的定义公式:
1.3信息增益率
信息增益率的定义公式:
1.4基尼指数
基尼指数的定义公式:
直观来说,Gini(p)反映了从数据集中任意取两个样本,其分类表及不一致的概率,因此,Gini(p)越小,则数据集的纯度越高。通常来说,基尼指数越低信息纯度越高,决策树也越好
2构建决策树的三种常用算法
2.1 ID3.0算法
ID3算法(Iterative Dichotomiser 3,迭代二叉树3代)是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。
算法流程如下:
- 如果节点满足停止分裂条件(所有记录属同一类别 or 最大信息增益小于阈值),将其置为叶子节点;
- 选择信息增益最大的特征进行分裂;
- 重复步骤1-2,直至分类完成。
2.2 C4.5算法
ID3.0算法往往偏好取值数目较大的特征,因此为了避免这一不足,在此基础上提出了C4.5算法。C4.5算法和ID3.0算法类似,但是是以信息增益率作为分裂的依据。
算法流程如下:
- 如果节点满足停止分裂条件(所有记录属同一类别),将其置为叶子节点;
- 考查已有的特征,挑选其中信息增益率高于平均水平的特征;(避免对取值数目较少的特征的偏好)
- 选择信息增益率最大的特征进行分裂;
- 重复步骤1-2,直至分类完成。
2.3 CART算法
CART算法是以基尼系数作为分裂的依据。
算法流程如下:
- 如果节点满足停止分裂条件(所有记录属同一类别),将其置为叶子节点;
- 选择基尼指数最小的特征进行分裂;
- 重复步骤1-2,直至分类完成。
3剪枝算法
3.1过拟合
过拟合是指为了得到一致假设而使假设变得过度严格。在决策树学习中,为了尽可能正确分类训练样本,节点划分过程将不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以至于把训练集自身的一些特点当做所有数据都具有的一般性质而导致过拟合。
3.2预剪枝(自顶向下)
预剪枝是在构建决策树的过程中,提前终止决策树的生长,从而避免过多的节点产生(如何判断分支前后的泛化能力是否提升,从而判断是否需要分支,这里采用了2.2节的留出法)。
具体做法:
1.将数据划分为训练集和验证集(留出法)
2.在划分每个节点之前进行评估,若当前节点的划分不能提升泛化性能,则停止划分,并将其标记为叶节点;
3.若当前节点的划分能够提升泛化性能(从信息增益 or 其他方式 选择最优属性),则继续划分;
4.若 划分前>=划分后,则选择不划分。
优缺点:
预剪枝方法虽然简单但实用性不强,因为很难精确的判断何时终止树的生长,可能会带来欠拟合的风险。
3.3后剪枝(自底向上)
后剪枝是先从训练集中生成一颗完整的决策树,然后逐个考察分支节点,比较分支节点前后的验证精度,若精度提升则保留分支,否则就将将分支替换为叶子节点。
具体做法:
1.将数据划分为训练集和验证集
2.生成一颗完整的决策树
3.自底向上考查每一个分支节点,若当前节点的划分不能提升泛化性能,则不划分,并将其标记为叶节点;
3.若当前节点的划分能够提升泛化性能(从信息增益 or 其他方式 选择最优属性),则保持划分;
4.若 划分前>=划分后,则选择不划分。
优缺点:
时间开销大,但是保留的分支更多,泛化能力更强。
4一些补充
4.1连续值处理
因为连续属性的可取值数目不再有限,因此不能像前面处理离散属性枚举离散属性取值来对结点进行划分。因此需要连续属性离散化,常用的离散化策略是二分法,这个技术也是C4.5中采用的策略。
具体的做法如下:
4.2缺失值处理
在决策树中处理含有缺失值的样本的时候,需要解决两个问题:
1.如何在属性值缺失的情况下进行划分属性的选择?(比如“色泽”这个属性有的样本在该属性上的值是缺失的,那么该如何计算“色泽”的信息增益?)
2.给定划分属性,若样本在该属性上的值是缺失的,那么该如何对这个样本进行划分?(即到底把这个样本划分到哪个结点里?)
下面就来介绍如何解决这两个问题:
4.3多变量决策树