[机器学习与scikit-learn-14]:算法-决策树-工作原理图解

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[机器学习与scikit-learn-14]:算法-决策树-工作原理图解相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123340741


目录

第1章 什么是决策树

1.1 生活中的决策树二分类决策

1.2 类决策树直观解读(可以是二分类,也开始是多分类)

1.3 与深度学习的比较

1.4 决策树使用的两个阶段

第2章 关键问题1:训练好后的模型

2.1 训练前的样本

2.2 训练后的模型

2.3 预测

第3章 决策树的决策过程以及熵值的应用

3.1 第1步骤:选择并分析样本数据

3.2 第2步骤:确定目标

3.3 第3步骤:计算所有样本分类的总的信息熵

3.4 第4步骤:以每个特征为基准,分别计算以每个特征为根节点各种情况的概率

3.5 第5步骤:构造根节点

3.6 第6步骤:其它节点

第4章 决策树的优化

4.1 上述迭代的问题-1

4.2 上述迭代的问题-1的解决办法:剪枝 

4.3 上述迭代的问题-3

4.4 上述迭代的问题-3的解决办法:信息熵增益率替代信息熵增益。

第5章 随机深林

5.1 随机森林概述

5.2 随机深林的分类

第6章 决策树的优缺点

6.1 决策树优点

6.2 决策树的缺点

参考


第1章 什么是决策树

1.1 生活中的决策树二分类决策

决策树在生活中无处不在。

1.2 类决策树直观解读(可以是二分类,也开始是多分类)

决策树是一种机器学习的模型算法,该算法通过对样本数据进行学习,还原出样本数据中隐藏的分类判断的规则,该判决规则是树形结构,简称决策树。

也就是说,决策树的学习过程是把带标签的一个个的表格样本数据,抽象出一个数学模型,这个数学模型是一个判决树。
 

(1)叶子节点:这个树的普通节点是样本属性,而叶子节点是分类的类型,所有的分类类型,都会呈现在一个个的叶子节点上。

(2)单个路径:每一个从根节点到叶子节点的分支,代表了根据各种属性参数,判决为某个分类类型的判决过程。

(3)叶子节点的概率:叶子节点,并非100%的判决为叶子节点,只表示,沿着该判决路径,判断为叶子节点分类的概率满足一定的要求,按照该判决路径,允许一定的判决错误。

(4)根节点:不是固定的,是算法根据样本数据计算获得的,根节点反应的是,所有的属性中,影响判决的权重最大的属性,是根据样本动态计算出来的。

(4)树的深度:树的深度越深,判决分支越多,判决过程越复杂,极限情况下,所有的样本,判决,都有可能自己的分支,并且不会判决出错。但这种情况并非是期望的,这种情况,大多数是属于过拟合,适应性和泛化能力较差。另外,分支越多、深度越深,则判决的时间越长。因此,通常情况下,会设定数的深度,防止过拟合。树越浅,则判决为叶子节点所属分类的正确率可能就越低。通常情况下3-5层即可。

(5)多分支:某一个叶子节点的分类类别,可能会出现多种判决路径/规则,并非是唯一的路径。

备注:

样本数据集:输入数据和标签,称为样本数据集。

模型算法:根据样本数据还原出树形结构的规则、策略就是算法。

机器学习:样本数据+还原出树形结构的规则、策略得到对应的树形结构的过程,就是机器学习。

1.3 与深度学习的比较

在这里,模型的最终形态:树形结构,与还原出树形算法是分离的,不是一回事。

(1)决策树中的还原出来的树形判决结构 VS  深度学习中训练好的神经网络

(2)决策树中的商值 VS 深度学习中loss函数

(3)决策树中的学习过程/还原过程 VS 深度学习的梯度下降法

1.4 决策树使用的两个阶段

这两个阶段深度学习也是一致的:

(1)第一个阶段:学习阶段(难点)

就是学习或构建决策树的过程,这个过程称为机器学习。

这个阶段的难点包括:

  • 模型的数学形式是什么?这里是树形判决结构。但数的形态和深度并非一开始构建好的,而是根据设定的超参数(如层数和熵值门限)样本数据逐步构建起来的。
  • 学习好坏的评估标准是什么?即如何通过数学的方式表示loss函数,这里是商值。
  • 通过何种算法使得模型判决结果与尽可能得达到评估标准(不能完全一致,否则就是过拟合),即通过何种算法使得loss函数的值最小。

(2)第二个阶段:预测阶段

利用训练好的模型(树形判决过程),对新的样本数据进行判决,判决为某一个分类类型,这个过程,在深度学习中,称为“预测”。

这个阶段没啥难点。

第2章 关键问题1:训练好后的模型

案例:根据西瓜的外形特征,判断西瓜好坏的决策过程

2.1 训练前的样本

第一列:样本编号

最后一列:样本分类标签

其他列:样本特征以及对应的实际数据。

2.2 训练后的模型

特征/属性:纹理、敲声、根蒂、色泽、脐部、触感

样本数据:不同瓜在上述属性特征上的实际数值,构成了西瓜的一个样本数据,多个西瓜的上述特征的数据,构成了一个表格样本数据。

分类标签:好瓜、坏瓜,每个西瓜的样本数据,多会根据实际情况表标注为好瓜或坏瓜。

机器学习:更加一堆的实际样本数据,还原出其判断一个瓜是好瓜还是坏瓜的判决规则(判决树),在上图中:

西瓜的纹理在判决是好瓜还是坏瓜上起着最关键性的作用,=》根节点 

其实是敲声、根蒂和色泽, =》第一层

然后是脐部, =》第二层

最后才是触感 =》 第三层

这里的核心是:

如何根据表格样本数据,还原出对应的树形判决规则,即构建出决策树的?

这就涉及到决策树模型算法,该算法是如何使得机器进行学习的?如何表示学习的目标?其基本原理是什么?

2.3 预测

当决策树模型训练好后,就可以用决策树模型对一个未切开的新的西瓜的好坏进行预测了。

(1)给定一个新的西瓜,并获得西瓜上述特征:纹理、敲声、根蒂、色泽、脐部、触感对应的实际数值。

(2)把上述参数送入训练好的预测模型中进行推理与预测

(3)预测出新西瓜的好坏。

第3章 决策树的决策过程以及熵值的应用

3.1 第1步骤:选择并分析样本数据

(1)上述表格中有14个样本数据,即14个向量点。

(2)每个样本包含4个天气相关的特征:天气、温度、湿度、是否有风。

(3)分类类别:打球/外出游玩、不打球/不外出游玩,这两个类别。

3.2 第2步骤:确定目标

找到样本数据中进行判决是否外出或不外出的规则,或者上述样本中,当事人选择外出或不外出的判决逻辑,这里选择决策树作为内在的数学模型。

然后当新的天气情况出现时,就按照这个规则来进行判决,决定是否需要外出。

3.3 第3步骤:计算所有样本分类的总的信息熵

(1)play为yes的个数为=9次

(2)play为no的个数为=5

(3)play为yes的概率/纯度为=9/14 = 0.64

(4)play为no的概率/纯度为=9/14 =  0.36

(5)计算信息熵 = -(0.64*log(0.64) + 0.36*log(0.63)) =  0.94

备注:这里的log是2为底数。

如果不考虑对特征值判决,只看最终的分类结果来看,play=yes和play=no的概率相差不大,不确定性较大。

3.4 第4步骤:以每个特征为基准,分别计算以每个特征为根节点各种情况的概率

 (1)属性outlook:天气

  • 天晴时:此情形占总体的比率=5/14, 其中, play=yes的概率是2/5,    play=no的概率为3/5
  • 多云时:此情形占总体的比率=4/14,其中, play=yes的概率为1,    play=no的概率为0
  • 下雨时:此情形占总体的比率=5/14,其中, play=yes的概率为3/5, play=no的概率为2/5

(2)属性temperature:温度

  • hot炎热: 此情形占总体的比率=4/14,其中, play=yes的概率是2/4, play=no的概率为2/4
  • mild温和:此情形占总体的比率=6/14,其中,play=yes的概率是4/6, play=no的概率为2/6
  • cool冷:   此情形占总体的比率= 4/14,其中,play=yes的概率是3/4, play=no的概率为1/4

(3)属性humidity:湿度

  • high:    此情形占总体的比率=7/14,其中, play=yes的概率是3/7, play=no的概率为4/7
  • normal:此情形占总体的比率=7/14,其中,play=yes的概率是6/7/, play=no的概率为1/7

(4)属性windy:风

  • 无风:  此情形占总体的比率=8/14,其中, play=yes的概率是6/8, play=no的概率为2/8
  • 有风:  此情形占总体的比率=6/14,其中, play=yes的概率是3/6, play=no的概率为3/6

3.5 第5步骤:构造根节点

每个节点对应不同分支(分类)的概率,求节点的熵

outlook为根节点,有三种类型的概率分布,其熵为0.693,相对于总信息上的增益为0.247

temperature为根节点,有三种类型的概率分布,相对于总信息上的增益为0.029

humidity为根节点,有三种类型的概率分布,相对于总信息上的增益为0.152

windy为根节点,有三种类型的概率分布,相对于总信息上的增益为0.048

从上面可以看出,采用outlook为根节点,信息熵的降低是大的,即信息熵的增益是最大的。

构建树的情形,就是使得构建后的信息熵总体趋于为0,即信息熵的增益接近于初始熵值。

信息增益越大,熵的降低越快,不确定性消除得越快。

3.6 第6步骤:其它节点

outlook根节点计算出来只有,就得到三个分支。

 然后在对每个分支按照步骤1-5,分别在计算每个分支的根节点。依次迭代。

第4章 决策树的优化

4.1 上述迭代的问题-1

按照步骤6的迭代,最终的理想是,每个叶子节点熵为0,即每个叶子节点的分类是完全确定的,不存在不确定性,即每个分类的叶子节点为某一个分类的概率为1,不存在其他类型非分类。

这是一种理想状况,如果每个节点的熵为0,极大的可能性是过拟合,即在测试集上100%正确,然而在测试集上,准确率比较低。

在上述的14个样本案例中,最终的结果可能是每一个样本有一个判断分支,类似如下的情形,每个方框是一个叶子节点,一个独立的判决分支。

因此,实际情况下,并非要使得每个叶子节点的信息熵为0,需要提前停止迭代。

以便防止过拟合,增加模型的泛化能力。

提前结束迭代的条件有:

(1)限制树的深度

(2)限制信息熵的门限(不为0),只要小于信息熵的门限,就可以认为收敛。

我们的期望,并非100%的准确率,而是用较少判决,获得较大的收益(信息熵较小),如下列情形,只需要一根直线判决,就可以完成下列的分类。

我们不期望,为了个别的节点,需要法则的判决,在上图中,直线上方的红线,有可能是原始样本数据的错误,如果可以把该点归到下方,则需要付出如下的代价:

(1)需要更加复杂的判决条件,如下图所示:

 (2)有可能最右边的红线原本就是输入样本的错误,如果按照上述划分,导致模型预测时的泛化能力变差,如下图所示,会导致新的蓝色测试样本被误判为红色。

 

 

4.2 上述迭代的问题-1的解决办法:剪枝 

 有两种剪枝的基本策略:

(1)预剪枝

(2)后剪枝

此次,我们采用新的评价函数(loss函数),loss函数里面不仅仅取件于CT, 即信息熵,还取决于于叶子节点的个数Tleaf,叶子节点越多吗,损失函数会变大,通过这一种方式,限制叶子节点的无限的增加。

4.3 上述迭代的问题-3

如果样本特征中,与决策无关的特征,会导致无关属性被错当成根节点。

4.4 上述迭代的问题-3的解决办法:信息熵增益替代信息熵增益。

第5章 随机深林

5.1 随机森林概述

随机森林指的是利用多棵树对样本进行训练并预测的一种分类器

它是决策树的优化版本。

机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。

5.2 随机深林的分类

(1)随机样本法

随机的选择一定个数的样本,构建一个决策树。

多次随机选择多个样本组,构建多个决策树,就构成了随机森林。

(2)随机特征法

随机的选择一定个数的特征,构建一个决策树。

多次随机选择多个特征组,构建多个决策树,就构成了随机森林。

第6章 决策树的优缺点

6.1 决策树优点

1. 易于理解和解释,因为树木可以画出来被看见

2. 需要很少的数据准备。其他很多算法通常都需要数据规范化,需要创建虚拟变量并删除空值等。但请注意,sklearn中的决策树模块不支持对缺失值的处理。

3. 使用树的成本(比如说,在预测数据的时候)是用于训练树的数据点的数量的对数,相比于其他算法,这是一个很低的成本。

4. 能够同时处理数字和分类数据,既可以做回归又可以做分类。

其他技术通常专门用于分析仅具有一种变量类型的数据集。

5. 能够处理多输出问题,即含有多个标签的问题,注意与一个标签中含有多种标签分类的问题区别开

6. 是一个白盒模型,结果很容易能够被解释。如果在模型中可以观察到给定的情况,则可以通过布尔逻辑轻松解释条件。相反,在黑盒模型中(例如,在人工神经网络中),结果可能更难以解释。

7. 可以使用统计测试验证模型,这让我们可以考虑模型的可靠性。

8. 即使其假设在某种程度上违反了生成数据的真实模型,也能够表现良好。

6.2 决策树的缺点

1. 决策树学习者可能创建过于复杂的树,这些树不能很好地推广数据。这称为过度拟合。修剪,设置叶节点所需的最小样本数或设置树的最大深度等机制是避免此问题所必需的,而这些参数的整合和调整对初学者来说会比较晦涩。

2. 决策树可能不稳定,数据中微小的变化可能导致生成完全不同的树,这个问题需要通过集成算法来解决。

3. 决策树的学习是基于贪婪算法,它靠优化局部最优(每个节点的最优)来试图达到整体的最优,但这种做法不能保证返回全局最优决策树。这个问题也可以由集成算法来解决,在随机森林中,特征和样本会在分枝过程中被随机采样。

4. 有些概念很难学习,因为决策树不容易表达它们,例如XOR,奇偶校验或多路复用器问题。

5. 如果标签中的某些类占主导地位,决策树学习者会创建偏向主导类的树。因此,建议在拟合决策树之前平衡数据集。

6.3 决策树的本质

决策树的本质是用直线、平面等线性的函数,去分割,每一次分割就是一次决策,决策的次数越多,所需要线性判断越多。因此决策树不太擅长环形边界数据,决策树主要擅长两组数据之间的边界是直线或其他线性函数,即线性边界 。如下图所示。

参考:

机器学习第二阶段:机器学习经典算法(2)——决策树与随机森林_哔哩哔哩_bilibili

(一)《机器学习》(周志华)第4章 决策树 笔记 理论及实现——“西瓜树” - 君以沫 - 博客园

以上是关于[机器学习与scikit-learn-14]:算法-决策树-工作原理图解的主要内容,如果未能解决你的问题,请参考以下文章

包邮送书啦|《机器学习与深度学习算法基础》

机器学习机器学习入门02 - 数据拆分与测试&算法评价与调整

Python3入门机器学习 经典算法与应用

《分布式机器学习:算法理论与实践》——RE

Python3入门机器学习--经典算法与应用|Python3机器学习

从入门到精通:机器学习算法与应用