Java教程

决策树全面讲解

本文主要是介绍决策树全面讲解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

更多机器学习方法总结请到我这个博客链接

文章目录

  • 6 决策树(Decision Tree)
    • 6.1 决策树模型与学习
      • 6.1.1 决策树模型
      • 6.1.2 决策树与if-then规则
      • 6.1.3 决策树与条件概率分布
      • 6.1.4 决策树学习
    • 6.2 特征选择
      • 6.2.1 信息增益(ID3)
      • 6.2.2 信息增益比(C4.5)
      • 6.2.3 Gini指数(CART法)
    • 6.3 ID3算法(决策树的生成)
      • 6.3.1 思想
      • 6.3.2 ID3算法流程:
      • 6.3.3 ID3不足之处:
    • 6.4 C4.5算法(决策树的生成)
      • 6.4.1 二元分割(连续值特征离散化)
      • 6.4.2 C4.5不足之处
    • 6.5 决策树过拟合?——剪枝
    • 6.6 CART算法(分类与回归树 classification and regression Tree)
      • 6.6.1 与ID3的不同
      • 6.6.2 回归树的生成
      • 6.6.3 分类树的生成
        • 1.基尼指数(Gini指数)
      • 6.6.4 CART剪枝
    • 6. 7决策树的优缺点

6 决策树(Decision Tree)

  • 决策树(decision tree)是一种基本的分类与回归方法。
  • 决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的修剪。
  • 这些决策树学习的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法

6.1 决策树模型与学习

     决策树解决分类问题的一般方法

在这里插入图片描述

6.1.1 决策树模型

      定义:分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。

在这里插入图片描述

6.1.2 决策树与if-then规则

     可以将决策树看成一个if-then规则的集合。将决策树转换成if-then规则的过程是这样的:由决策树的根结点到叶结点的每一条路径构建一条规则;路径上内部结点的特征对应着规则的条件,而叶结点的类对应着规则的结论。

     决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。这里所谓覆盖是指实例的特征与路径上的特征一致或实例满足规则的条件。

6.1.3 决策树与条件概率分布

在这里插入图片描述

6.1.4 决策树学习

     决策树学习本质上是从训练数据集中归纳出一组分类规则,与训练数据集不相矛盾的决策树(即能对训练数据进行正确分类的决策树)可能有多个,也可能一个也没有。从另一个角度看,决策树学习是由训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型有无穷多个。我们选择的条件概率模型应该不仅对训练数据有很好的拟合,而且对未知数据有很好的预测。
     决策树的损失函数是正则化的极大似然函数。当损失函数确定以后,学习问题就变为在损失函数意义下选择最优决策树的问题。因为从所有可能的决策树中选取最优决策树是NP完全问题,所以现实中决策树学习算法通常采用启发式方法,近似求解这一最优化问题。这样得到的决策树是次最优(sub-optimal)的。
     决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。开始,构建根结点,将所有训练数据都放在根结点。选择一个最优特征,按照这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。如果这些子集已经能够被基本正确分类,那么构建叶结点,并将这些子集分到所对应的叶结点中去;如果还有子集不能被基本正确分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的结点。如此递归地进行下去,直至所有训练数据子集被基本正确分类,或者没有合适的特征为止。最后每个子集都被分到叶结点上,即都有了明确的类。这就生成了一棵决策树。
     以上方法生成的决策树可能对训练数据有很好的分类能力,但对未知的测试数据却未必有很好的分类能力,即可能发生过拟合现象。我们需要对已生成的树自下而上进行剪枝,将树变得更简单,从而使它具有更好的泛化能力。具体地,就是去掉过于细分的叶结点,使其回退到父结点,甚至更高的结点,然后将父结点或更高的结点改为新的叶结点。
决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。决策树学习算法包含特征选择、决策树的生成与决策树的剪枝过程。
     决策树学习常用的算法有ID3、C4.5与CART,下面结合这些算法分别叙述决策树学习的特征选择决策树的生成剪枝过程

6.2 特征选择

     如果利用一个特征进行分类的结果与随机分类的结果没有很大差别,则称这个特征是没有分类能力的。通常特征选择的准则是信息增益或信息增益比。

6.2.1 信息增益(ID3)

  1. 熵:表示随机变量不确定性的度量。
    在这里插入图片描述

  2. 熵的理论解释:
    在这里插入图片描述

  3. 条件熵
         设有联合分布:
    在这里插入图片描述
         则条件熵为:在已知随机变量x的条件下随机变量Y的不确定性,定义为条件x下Y的条件概率分布的熵对X的数学期望。
    在这里插入图片描述
         当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵(empirical entropy)和经验条件熵(empirical conditional entropy )

  4. 信息增益
          特征A对训练集数据D的信息增益:G(D,A)定义为集和D下的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)的差值。
    在这里插入图片描述
         信息增益表示的是,在给定特征X的信息下,使得类Y的信息不确定性的减少程度。因此,对训练数据集(或集)D,计算其每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征。信息增益越大,说明特征X对Y分类的不确定性影响程度也就越大,即可以有效的分类。
         一般地,熵H(Y)与条件熵H(Y|X)之差称为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。

  5. 信息增益计算
    在这里插入图片描述

6.2.2 信息增益比(C4.5)

     信息增益值的大小是相对于训练数据集而言的,并没有绝对意义。在分类问题困难时,也就是说在训练数据集的经验熵大的时候,信息增益值会偏大。反之,信息增益值会偏小。使用信息增益比(information gain ratio)可以对这一问题进行校正。这是特征选择的另一准则。

     定义:为其信息增益g(D,A)与训练数据集D关于特征A的经验熵H(D)之比
在这里插入图片描述
在这里插入图片描述

6.2.3 Gini指数(CART法)

详见6.3.3.1

6.3 ID3算法(决策树的生成)

6.3.1 思想

     以信息熵为度量,用于决策树节点的属性选择,每次优先选取信息量最多的属性,亦即能使信息增益最大的属性(熵值变为最小),以构造一颗熵值下降最快的决策树,到叶子节点处的熵值为0。此时,每个叶子节点对应的实例集中的实例属于同一类。

6.3.2 ID3算法流程:

在这里插入图片描述

6.3.3 ID3不足之处:

  1. 没有考虑连续特征,比如长度、密度值(C4.5采用了特征离散)
  2. 对于缺失值的情况没有考虑
  3. 信息增益作为标准容易偏向于去取值较多的特征(C4.5 采用信息增益比改进)
  4. 由于只有树的生成,容易出现过拟合

由此出现了改进算法C4.5

6.4 C4.5算法(决策树的生成)

     整体思路和ID3区别不大,只是在处理连续数据特征和采用信息增益比作为特征选取的参数。

6.4.1 二元分割(连续值特征离散化)

     比如m个样本的连续特征A有m个,从小到大排列为a1,a2,…,am,则C4.5取相邻两样本值的中位数,一共取得m-1个划分点,其中第i个划分点Ti表示为:Ti=[a(i)+a(i+1)]/2。对于这m-1个点,分别计算以该点作为二元分类点时的信息增益。选择信息增益最大的点作为该连续特征的二元离散分类点。比如取到的增益最大的点为at,则小于at的值为类别1,大于at的值为类别2,这样我们就做到了连续特征的离散化。

6.4.2 C4.5不足之处

  1. 由于决策树算法非常容易过拟合,因此对于生成的决策树必须要进行剪枝。
  2. C4.5生成的是多叉树,即一个父节点可以有多个节点。很多时候,在计算机中二叉树模型会比多叉树运算效率高。如果采用二叉树,可以提高效率。

6.5 决策树过拟合?——剪枝

     剪枝:将已生成的树进行简化的过程。剪枝从已生成的树上裁掉一些子树或叶结点,并将其根结点或父结点作为新的叶结点,从而简化分类树模型。
通过极小化决策树整体的损失函数或代价函数来实现。在这里插入图片描述

6.6 CART算法(分类与回归树 classification and regression Tree)

     CART模型由Breiman等人在1984年提出,是应用广泛的决策树学习方法。CART同样由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。以下将用于分类与回归的树统称为决策树。如果目标变量是类别,就是分类树;如果是是连续值,就是回归树。

6.6.1 与ID3的不同

  1. 二元划分,二叉树精度更高,且不容易产生数据碎片
  2. 特征选择变量使用不纯性度量
    • 分类目标:Gini指数、Towing、order Towing
    • 回归目标:最小平方残差、最小绝对残差
  3. 剪枝:使用预剪枝或者后剪枝
    在这里插入图片描述

6.6.2 回归树的生成

在这里插入图片描述
如何对空间进行划分?

在这里插入图片描述

最小二乘回归树生成算法
在这里插入图片描述在这里插入图片描述

6.6.3 分类树的生成

1.基尼指数(Gini指数)

      基尼指数Gini(D)表示集合D的不确定性,基尼指数Gini(D,A)表示经A=a分割后集合D的不确定性。基尼指数值越大,样本集合的不确定性也就越大,这一点与熵相似。用基尼指数选择最优特征,同时决定该特征的最优二值切分点。

在这里插入图片描述
对于二分类问题,基尼指数为:
在这里插入图片描述

对于给定的集合D,基尼指数为:
在这里插入图片描述
在这里插入图片描述
     下图显示二类分类问题中基尼指数Gini§、熵(单位比特)之半 H§和分类误差率的关系。横坐标表示概率p,纵坐标表示损失。可以看出基尼指数和熵之半的曲线很接近,都可以近似地代表分类误差率。

在这里插入图片描述
CART生成算法:
在这里插入图片描述

6.6.4 CART剪枝

6. 7决策树的优缺点

1.优点

  • 推理过程简单,表示成if-then的形式
  • 推理过程完全依赖于属性变量的取值特点
  • 可以自动忽略对目标属性没有贡献的属性变量,为判断属性的重要性,降维提供了参考。
  • 可以很好的处理缺失特征的情况下
  • 对异常点有良好的鲁棒性

2.缺点

  • 信息增益偏向取值多的的特征
  • 容易过拟合
  • 忽略了属性之间的联系
这篇关于决策树全面讲解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!