决策树是类似流程图的结构,其中每个内部节点表示一个测试功能(例如,硬币翻转出现正面或反面),每个叶节点都表示一个类标签(在计算所有特征之后做出的决定)和分支表示导致这些类标签的功能的连接。从根到叶的路径表示分类规则,下图说明了使用标签进行决策的决策树的基本流程(下雨(Yes),不下雨(No))。
雨水预测决策树
决策树是统计、数据挖掘和机器学习中使用的预测建模方法之一。
决策树是通过算法方法构建的,该方法识别基于不同条件分割数据集的方法。它是监督学习中使用最广泛和最实用的方法之一。决策树是一种非参数监督学习方法,用于分类和回归任务。
目标变量可以采用一组离散值的树模型称为分类树。目标变量可以采用连续值(通常是实数)的决策树称为回归树。分类和回归树(CART)是此的通用术语。
在这篇文章中,我将尝试使用这些示例进行解释。
数据格式
数据的记录形式
(X,Y)=(X1,X2,X3,...,XK,Y)
因变量Y是我们试图理解、分类或概括的目标变量。向量x由用于该任务的特征x1、x2、x3等组成。
示例
制定决策树的方法
在制作决策树时,在树的每个节点处我们会询问不同类型的问题。根据问题,我们将计算与之对应的信息增益。
信息增益
信息增益用于决定在构建树的每个步骤中要拆分的特征。简单是最好的,所以我们希望保持树很小。要做到这一点,我们应该在每一步选择产生最纯子节点的分割。常用的纯度测量称为测量信息。对于树的每个节点,信息值测量特征为我们提供有关类的信息量。具有最高信息增益的分割将被视为第一次分割,并且该过程将继续直到所有子节点都是纯的,或者直到信息增益为0。
问问题
让我们尝试查询问题及其输出。
现在我们将尝试根据问题对数据集进行分区。每个步骤将数据分为两类。
用于构造决策树的算法通常通过在每个步骤中选择最佳分割项目集的变量来自上而下地工作。不同的算法使用不同的矩阵进行最佳测量。
基尼杂质
首先让我们了解纯和不纯度的含义。
纯
纯意味着,在选定的数据集样本中,所有数据都属于同一类(PURE)。
不纯
不纯意味着,数据是不同类别的混合。
基尼杂质的定义
如果根据数据集中类标签的分布对新实例进行随机分类,则Gini杂质是对随机变量的新实例的不正确分类的可能性的度量。
如果我们的数据集是纯粹的,则不正确分类的可能性为0。如果我们的样本是不同类别的混合,则错误分类的可能性将很高。
示例
制定决策树的步骤
- 获取在制作决策树时考虑的行(数据集)列表(在每个节点递归)。
- 计算我们的数据集或基尼杂质的不确定性或我们的数据混合的程度等。
- 生成需要在该节点询问的所有问题的列表。
- 根据询问的每个问题将行分为True行和False行。
- 根据基尼杂质和上一步数据的划分计算信息增益。
- 根据提出的每个问题更新最高信息收益。
- 根据信息增益(更高的信息增益)更新最佳问题。
- 在最佳问题上划分节点。再次从步骤1重复,直到我们得到纯节点(叶节点)。
上述步骤的代码
现在,在每个节点上递归地基于上面讨论的步骤构建决策树。
建立决策树
让我们根据训练数据构建决策树。
产量
从上面的输出中我们可以看到,在每个步骤中,数据被分为True和False行。这个过程不断重复,直到我们到达信息增益为0的叶节点,并且由于节点是纯的,因此无法进一步分割数据。
决策树的优势
- 易于使用和理解
- 可以处理分类和数字数据
- 抵抗异常值,因此几乎不需要数据预处理
决策树的缺点
- 容易过度拟合
- 需要某种程度的测量来衡量他们的表现
- 需要小心对待参数调优
- 如果某些类占主导地位,可以创建有偏见的学习树
如何避免过度拟合决策树模型
过度拟合是机器学习中每个模型的主要问题之一。如果模型过度拟合,它将很难推广到新样本。为了避免决策树过度拟合,我们删除了使用具有低重要性的特征的分支。此方法称为剪枝( Pruning)或后剪枝。这样我们将降低树的复杂性,从而通过减少过度拟合来提高预测精度。
剪枝应该减小学习树的大小,而不降低由交叉验证集测量的预测准确性。有两种主要的剪枝技术。
- 最小错误:树被修剪回交叉验证错误最小的点。
- 最小树:树比最小误差略微修剪。从技术上讲,剪枝会创建一个决策树,其交叉验证错误在最小错误的1个标准误差范围内。
提前停止或预修剪
防止过度拟合的另一种方法是在产生非常小样本的叶子之前尽早停止增长树法。这种启发式被称为早期停止,但有时也被称为预剪枝决策树。
在拆分树的每个阶段,我们检查交叉验证错误。如果错误没有明显减少,那么我们就停止了。通过过早停止可能会导致早期停止。当前的分裂可能没什么好处,但是已经做到了,随后的分割也更加显著地减少了误差。
早期停止和修剪可以一起使用,也可以单独使用,或者根本不使用。修剪后的决策树在数学上更加严谨,找到一棵至少和早期停止一样好的树。早期停止是快速修复启发式。如果与剪枝一起使用,提前停止可以节省时间。
现实生活中的决策树
- 选择要旅行的航班
假设您需要为下次旅行选择航班。我们怎么做呢?我们需要先检查当天是否有航班,如果当天不行,我们将寻找其他日期,但如果它可以,那么我们下一步可能是考虑航班的持续时间如何。如果我们只想选择直飞航班,那么接下来我们会查看该航班的价格是否在预定义预算中。如果它太贵了,我们会查看其他一些我们预订的航班!
- 应用
决策树在现实生活中有更多的应用。您可以检查这个以及更多决策树的应用程序。
在本文中,我试图解释决策树的基础知识以及它的基本工作原理。您可以在github上找到本文中使用的源代码。(https://github.com/java-byte/ML-Decision-Tree/blob/master/Decision_tree.ipynb)
作者:Prince Yadav
文章来源:https://towardsdatascience.com/decision-tree-in-machine-learning-e380942a4c96
本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/264437.html
如有侵犯您的合法权益请发邮件951076433@qq.com联系删除