决策树

决策树

  • 基本概念
  • 特征选择
  • 常见算法
  • 连续值,缺失值处理
  • 优化方法

基本概念

分类决策树模型是一种描述对实例进行分类的树形结构. 决策树由结点和有向边组成. 结点有两种类型: 内部结点和叶节点. 内部节点表示一个特征或属性, 叶节点表示一个类.
决策树(Decision Tree),又称为判定树, 是一种以树结构(包括二叉树和多叉树)形式表达的预测分析模型.

  • 通过把实例从根节点排列到某个叶子节点来分类实例
  • 叶子节点为实例所属的分类
  • 树上每个节点说明了对实例的某个属性的测试, 节点的每个后继分支对应于该属性的一个可能值

1、信息论:

在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。设X XX是一个取有限个值的离散随机变量,其概率分布为P(X=xi)=pi 则随机变量X的熵定义为:
在这里插入图片描述

条件熵

假设随机变量(X,Y), 其联合分布概率为P(X=xi,Y=yi)=Pij, i=1,2,…,n;j=1,2,…,m 则条件熵H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性, 其定义为X在给定条件下Y的条件概率分布的熵对X的数学期望:
在这里插入图片描述
 H ( Y | X ) = -∑ pi * H ( Y | X = xi ) 这里 pi = P( X = xi ) ,i = 1,2,…,n
  当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到是,所对应的熵与条件熵分别称为经验熵和经验条件熵。

信息增益

用信息增益表示分裂前后跟的数据复杂度和分裂节点数据复杂度的变化值,计算公式表示为:
在这里插入图片描述
其中Gain表示节点的复杂度,Gain越高,说明复杂度越高。信息增益说白了就是分裂前的数据复杂度减去孩子节点的数据复杂度的和,信息增益越大,分裂后的复杂度减小得越多,分类的效果越明显。

信息增益比

用信息增益作为选择分裂的条件有一个不可避免的缺点:倾向选择分支比较多的属性进行分裂。为了解决这个问题,引入了信息增益率这个概念。信息增益率是在信息增益的基础上除以分裂节点数据量的信息增益(听起来很拗口),其计算公式如下:
在这里插入图片描述

其中Info_gain 表示信息增益,InstrinsicInfo 表示分裂子节点数据量的信息增益,其计算公式为:
在这里插入图片描述

基尼值

基尼值计算公式如下:
在这里插入图片描述
基尼指数表示集合D的不确定性,基尼指数越大,样本集合的不确定性越大。

常见算法

ID3 算法

ID3算法的核心是在决策树各个结点上应应信息增益准则选择特征,递归地构建决策树。
具体方法是:

1、从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征。
2、由该特征的不同取值建立子节点,再对子结点递归地调用以上方法,构建决策树;
3、直到所有特征的信息增益均很小或没有特征可以选择为止;

最后得到一个决策树。
算法的优缺点:
ID3是基本的决策树构建算法,作为决策树经典的构建算法,其具有结构简单、清晰易懂的特点。虽然ID3比较灵活方便,但是有以下几个缺点:

(1)采用信息增益进行分裂,分裂的精确度可能没有采用信息增益率进行分裂高

(2)不能处理连续型数据,只能通过离散化将连续性数据转化为离散型数据

(3)不能处理缺省值

(4)没有对决策树进行剪枝处理,很可能会出现过拟合的问题

c4.5 算法

C4.5在ID3的基础上对上述三个方面进行了相应的改进:

1、C4.5对节点进行分裂时采用信息增益率作为分裂的依据;
2、能够对连续数据进行处理,能够处理具有缺失属性值的训练数据
3、C4.5采用剪枝的策略,对完全生长的决策树进行剪枝处理,一定程度上降低过拟合的影响

优缺点:
C4.5是分类树最终要的算法,算法的思想其实很简单,但是分类的准确性高。可以说C4.5是ID3的升级版和强化版,解决了ID3未能解决的问题。
1、C4.5是采用信息增益率选择分裂的属性,解决了ID3选择属性时的偏向性问题;
2、C4.5能够对连续数据进行处理,采用一刀切的方式将连续型的数据切成两份,在选择切割点的时候使用信息增益作为择优的条件;
3、C4.5采用悲观剪枝的策略,一定程度上降低了过拟合的影响。

CART 生成算法

根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树:
1、设结点的训练数据集为D,计算现有特征对该数据集的基尼指数。此时,对每一个特征A,对其可能取的每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1和D2两部分,并计算A=a时的基尼指数。
2、在所有可能的特征A以及它们所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。
3、对两个子结点递归地调用(1),(2),直至满足停止条件。
4、生成CART决策树。
算法停止计算的条件是结点中的样本个数小于预定阈值,或样本集的基尼指数小于预定阈值(样本基本属于同一类),或者没有更多特征。

优缺点:
1、CART是一棵二叉树,每一次分裂会产生两个子节点,对于连续性的数据,直接采用与C4.5相似的处理方法,对于离散型数据,选择最优的两种离散值组合方法。
2、CART既能是分类数,又能是二叉树。如果是分类树,将选择能够最小化分裂后节点GINI值的分裂属性;如果是回归树,选择能够最小化两个节点样本方差的分裂属性。
3、CART跟C4.5一样,需要进行剪枝,采用CCP(代价复杂度的剪枝方法)。

决策树的优化-剪枝

剪枝是指从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型。通过极小化决策树整体的损失函数或代价函数来实现,即选择损失函数最小的子树。
对于分类回归树中的每一个非叶子节点计算它的表面误差率增益值α。
α = R ( t ) − R ( T t ) ∣ N T t ∣ − 1 \alpha=\frac{R(t)-R(T_t)}{|N_{T_t}|-1} α=NTt1R(t)R(Tt)
∣ N T t ∣ |N_{T_t}| NTt是子树中包含的叶子节点个数;
R ( t ) R(t) R(t) R(t) 是节点t的误差代价,如果该节点被剪枝;
R ( t ) = r ( t ) ∗ p ( t ) R(t)=r(t)*p(t) R(t)=r(t)p(t)
r(t)是节点t的误差率;

p(t)是节点t上的数据占所有数据的比例。

R ( T t ) R(Tt) R(Tt)是子树Tt的误差代价,如果该节点不被剪枝。它等于子树Tt上所有叶子节点的误差代价之和。

决策树的剪枝过程(泛化过程)就是从叶子节点开始递归,记其父节点将所有子节点回缩后的子树为 T b Tb Tb分类值取类别比例最大的特征值),未回缩的子树为 T a Ta Ta ​如果 C α ( T a ) ≥ C α ( T b ) Cα(Ta)≥Cα(Tb) Cα(Ta)Cα(Tb) 说明回缩后使得损失函数减小了,那么应该使这棵子树回缩,递归直到无法回缩为止,这样使用“贪心”的思想进行剪枝可以降低损失函数值,也使决策树得到泛化.

  • 预剪枝

决策树生成过程中进行,会判断该结点的划分是否能带来决策树泛化性能的提升,如果不能,则该结点停止分裂。

  • 后剪枝

先生成一颗完整的决策树,然后自底向上剪枝。

连续特征和离散特征处理
  • 连续值
    当属性的类型是离散型,不用对数据进行离散化处理;当属性类型为连续型,则需要对数据进行离散化处理。
    最简单的策略采用二分法(bi-partition),将给定连续属性的区间的中位点作为候选划分点。
  • 缺失值
    缺失值面临的两个问题: 如何在属性缺失的情况下进行属性划分选择? 给定划分属性,样本在该属性上的缺失值,如何对样本进行划分?
    对于第一个问题,若取值未知,则根据其他样本的取值来计算划分点。
    对于第二个问题,若取值未知,则将该样本同时划入所有子结点,且设置一个样本权值用于计算loss。
  • 缺失值处理方法
    插值法(Imputation): QUEST, CRUISE
    替代法(Alternate/Surrogate Splits):CART, CRUISE
    缺失值单独分支(Missing value branch):CHAID, GUIDE
    概率权重(Probability weights): C4.5

Sklearn 库参数

DecisionTreeClassifier
  • 特征选择标准criterion
  • 特征划分点选择标准splitter
  • 划分时考虑的最大特征数max_features
  • 决策树最大深max_depth
  • 内部节点再划分所需最小样本数min_samples_split
  • 叶子节点最少样本数min_samples_leaf
  • 叶子节点最小的样本权重和min_weight_fraction_leaf
  • 最大叶子节点数max_leaf_nodes
  • 类别权重class_weight
  • 节点划分最小不纯度min_impurity_split

参考文章:
【1】:https://www.cnblogs.com/yonghao/p/5135386.html
【2】:https://blog.csdn.net/qyf394613530/article/details/84979715
【3】:https://www.jianshu.com/p/655d8e555494
【4】:https://www.cnblogs.com/jishengyu/p/8274991.html
【5】:https://blog.csdn.net/u013307195/article/details/90447665

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值