决策树是类似流程图的结构,其中每个内部节点表示一个测试功能(例如,硬币翻转出现正面或反面),每个叶节点都表示一个类标签(在计算所有特征之后做出的决定)和分支表示导致这些类标签的功能的连接。从根到叶的路径表示分类规则,下图说明了使用标签进行决策的决策树的基本流程(下雨(Yes),不下雨(No))。

 

2.1、决策树是什么

决策树呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用决策模型进行分类。

决策树的分类:决策树可以分为两类,主要取决于它目标变量的类型。

  • 离散性决策树:离散性决策树,其目标变量是离散的,如性别:男或女等;
  • 连续性决策树:连续性决策树,其目标变量是连续的,如工资、价格、年龄等;

        决策树相关的重要概念:

(1)根结点(Root Node):它表示整个样本集合,并且该节点可以进一步划分成两个或多个子集。

(2)拆分(Splitting):表示将一个结点拆分成多个子集的过程。

(3)决策结点(Decision Node):当一个子结点进一步被拆分成多个子节点时,这个子节点就叫做决策结点。

(4)叶子结点(Leaf/Terminal Node):无法再拆分的结点被称为叶子结点。

(5)剪枝(Pruning):移除决策树中子结点的过程就叫做剪枝,跟拆分过程相反。

(6)分支/子树(Branch/Sub-Tree):一棵决策树的一部分就叫做分支或子树。

(7)父结点和子结点(Paren and Child Node):一个结点被拆分成多个子节点,这个结点就叫做父节点;其拆分后的子结点也叫做子结点。

【机器学习】决策树_数据

 

2.2、决策树的构造过程



决策树的构造过程一般分为3个部分,分别是特征选择、决策树生产和决策树裁剪。

(1)特征选择:

特征选择表示从众多的特征中选择一个特征作为当前节点分裂的标准,如何选择特征有不同的量化评估方法,从而衍生出不同的决策树,如ID3(通过信息增益选择特征)、C4.5(通过信息增益比选择特征)、CART(通过Gini指数选择特征)等。

目的(准则):使用某特征对数据集划分之后,各数据子集的纯度要比划分钱的数据集D的纯度高(也就是不确定性要比划分前数据集D的不确定性低)

(2)决策树的生成

根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。这个过程实际上就是使用满足划分准则的特征不断的将数据集划分成纯度更高,不确定行更小的子集的过程。对于当前数据集的每一次划分,都希望根据某个特征划分之后的各个子集的纯度更高,不确定性更小。

(3)决策树的裁剪

决策树容易过拟合,一般需要剪枝来缩小树结构规模、缓解过拟合。

 

 

 

 

目标变量是一组离散值的树模型,称为分类树。目标变量是连续值(通常是实数)的决策树称为回归树。分类和回归树(CART)是此的通用术语。

在这篇文章中,我将尝试使用这些示例进行解释。

数据格式

数据的记录形式

(X,Y)=(X1,X2,X3,...,XK,Y)

因变量Y是我们试图理解、分类或概括的目标变量。向量x由用于该任务的特征x1、x2、x3等组成。

示例

【机器学习】决策树_结点_02

 

制定决策树的方法

在制作决策树时,在树的每个节点处我们会询问不同类型的问题。根据问题,我们将计算与之对应的信息增益。

信息增益

信息增益用于决定在构建树的每个步骤中要拆分的特征。简单是最好的,所以我们希望保持树很小。要做到这一点,我们应该在每一步选择产生最纯子节点的分割。常用的纯度测量称为测量信息。对于树的每个节点,信息值测量特征为我们提供有关类的信息量。具有最高信息增益的分割将被视为第一次分割,并且该过程将继续直到所有子节点都是纯的,或者直到信息增益为0。

问问题

【机器学习】决策树_结点_03

 

让我们尝试查询问题及其输出。

【机器学习】决策树_决策树_04

 

现在我们将尝试根据问题对数据集进行分区。每个步骤将数据分为两类。

【机器学习】决策树_决策树_05

 

用于构造决策树的算法通常通过在每个步骤中选择最佳分割项目集的变量来自上而下地工作。不同的算法使用不同的矩阵进行最佳测量。

基尼杂质

首先让我们了解纯和不纯度的含义。

纯意味着,在选定的数据集样本中,所有数据都属于同一类(PURE)。

不纯

不纯意味着,数据是不同类别的混合。

基尼杂质的定义

如果根据数据集中类标签的分布对新实例进行随机分类,则Gini杂质是对随机变量的新实例的不正确分类的可能性的度量。

如果我们的数据集是纯粹的,则不正确分类的可能性为0。如果我们的样本是不同类别的混合,则错误分类的可能性将很高。

示例

【机器学习】决策树_信息增益_06

 

制定决策树的步骤

  • 获取在制作决策树时考虑的行(数据集)列表(在每个节点递归)。
  • 计算我们的数据集或基尼杂质的不确定性或我们的数据混合的程度等。
  • 生成需要在该节点询问的所有问题的列表。
  • 根据询问的每个问题将行分为True行和False行。
  • 根据基尼杂质和上一步数据的划分计算信息增益。
  • 根据提出的每个问题更新最高信息收益。
  • 根据信息增益(更高的信息增益)更新最佳问题。
  • 在最佳问题上划分节点。再次从步骤1重复,直到我们得到纯节点(叶节点)。

上述步骤的代码

【机器学习】决策树_信息增益_07

 

现在,在每个节点上递归地基于上面讨论的步骤构建决策树。

【机器学习】决策树_决策树_08

 

建立决策树

让我们根据训练数据构建决策树。

【机器学习】决策树_数据_09

 

产量

【机器学习】决策树_信息增益_10

 

从上面的输出中我们可以看到,在每个步骤中,数据被分为True和False行。这个过程不断重复,直到我们到达信息增益为0的叶节点,并且由于节点是纯的,因此无法进一步分割数据。

决策树的优势

  • 易于使用和理解
  • 可以处理分类和数字数据
  • 抵抗异常值,因此几乎不需要数据预处理

决策树的缺点

  • 容易过度拟合
  • 需要某种程度的测量来衡量他们的表现
  • 需要小心对待参数调优
  • 如果某些类占主导地位,可以创建有偏见的学习树

如何避免过度拟合决策树模型

过度拟合是机器学习中每个模型的主要问题之一。如果模型过度拟合,它将很难推广到新样本。为了避免决策树过度拟合,我们删除了使用具有低重要性的特征的分支。此方法称为剪枝( Pruning)或后剪枝。这样我们将降低树的复杂性,从而通过减少过度拟合来提高预测精度。

剪枝应该减小学习树的大小,而不降低由交叉验证集测量的预测准确性。有两种主要的剪枝技术。

  • 最小错误:树被修剪回交叉验证错误最小的点。
  • 最小树:树比最小误差略微修剪。从技术上讲,剪枝会创建一个决策树,其交叉验证错误在最小错误的1个标准误差范围内。

提前停止或预修剪

防止过度拟合的另一种方法是在产生非常小样本的叶子之前尽早停止增长树法。这种启发式被称为早期停止,但有时也被称为预剪枝决策树。

在拆分树的每个阶段,我们检查交叉验证错误。如果错误没有明显减少,那么我们就停止了。通过过早停止可能会导致早期停止。当前的分裂可能没什么好处,但是已经做到了,随后的分割也更加显著地减少了误差。

早期停止和修剪可以一起使用,也可以单独使用,或者根本不使用。修剪后的决策树在数学上更加严谨,找到一棵至少和早期停止一样好的树。早期停止是快速修复启发式。如果与剪枝一起使用,提前停止可以节省时间。

现实生活中的决策树

  • 选择要旅行的航班

假设您需要为下次旅行选择航班。我们怎么做呢?我们需要先检查当天是否有航班,如果当天不行,我们将寻找其他日期,但如果它可以,那么我们下一步可能是考虑航班的持续时间如何。如果我们只想选择直飞航班,那么接下来我们会查看该航班的价格是否在预定义预算中。如果它太贵了,我们会查看其他一些我们预订的航班!

  • 应用

决策树在现实生活中有更多的应用。您可以检查这个以及更多决策树的应用程序。

在本文中,我试图解释决策树的基础知识以及它的基本工作原理。您可以在github上找到本文中使用的源代码。(https://github.com/java-byte/ML-Decision-Tree/blob/master/Decision_tree.ipynb)