决策树基本理论知识

news2024/11/17 7:55:16

目录

1、决策树是一种树模型

2、决策树的训练与测试

3、信息增益(ID3)

3.1、衡量标准-熵

3.2、决策树构造实例

4、决策树算法

​5、连续值离散化

6、预剪枝


1、决策树是一种树模型:

(1)、从根结点开始一步步走到叶子结点(决策)

(2)、所有的数据最终都会落到叶子结点,既可以做分类问题也可以做回归问题(分类中使用熵值构建决策树,回归中选择使用方差构建决策树)

2、决策树的训练与测试

(1)、训练阶段:从给定的训练集中构造出一棵树(从根结点开始选择特征,如何进行特征切分)

(2)、测试阶段:根据构造出来的树模型从上到下走一遍就好了

(3)、一旦构造好了绝二叉树,那么分类或者预测问题就很简单,只需要走一遍即可,难点是如何构造出一棵树模型。方法是通过一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出来最好的那个当成根节点,以此类推

3、信息增益(ID3)

3.1、衡量标准-熵

(1)、熵:熵表示随机变量不确定性的度量。它表示物体内部的混乱程度,越混乱熵值越大,反之熵值越小。比如国内要是全是咱中国人,那就是熵值很低。但是若是随着国际化程度越来越高,更多的黑人、白人来中国发展、定居,那么此时国内的熵值就特别高。

(2)、计算信息熵公式,对每一个类别的概率pi取对数然后求和。概率pi取值范围为[0,1],所以概率越大信息熵越接近为0。信息熵的计算公式中取负号是因为pi在[0,1]的取值范围内,若是没有负号H(X)取对数结果为负,所以加一个符号让它的结果始终为正。

(3)、使用信息增益建立树模型

3.2、决策树构造实例

从上面图中可以看出, 根节点的选择有四种情况:基于天气、基于温度、基于湿度、基于是否有风

 

 (1)、首先在历史数据(14天)中有 9 天在打球,5 天不打球,所以此时的熵应该为:

(2)、对四个特征进行逐一分析,首先选择基于天气outlook如下:

当outlook = sunny时,熵值为 H(x) = -(2/5*log2/5 + 3/5*log3/5) = 0.971

当outlook = overcast时,因为全是yes,所以熵值为 H(x) = -(5/5*log5/5) = 0

当outlook = rainy时,熵值为  H(x) = -(2/5*log2/5 + 3/5*log3/5) = 0.971

(3)、根据数据统计,outlook取值分别为sunny,overcast,rainy的概率分别为 5/14,4/14,5/14

outlook的加权信息熵为:

(4)、信息增益:gain(outlook) =  0940 -  0.693 = 0.247

 循环重复上面的(1)、(2)、(3)、(4)步骤 计算基于温度、基于湿度、基于是否有风这三个特征。下面是其余三个特征的信息增益

 很明显outlook的信息增益最大(从历史信息熵到选择outlook得到的加权信息熵,纯度越来越高),所以根节点选择 outlook特征,如下图

所以下一步直接从sunny和rainy开始

以sunny为例。又以sunny为前提,求sunny对应的信息熵,作为历史信息熵

然后在此前提下按照前面的步骤计算基于温度、基于湿度、基于是否有风的加权信息熵,选择增益信息最大的即为sunny分支对应的根节点(也就是sunny信息熵和它们各自的加权信息熵之差,加权信息熵越小,增益信息越大,也即发生的概率越大)

对rainy执行和sunny同样的操作即可

按照上面的步骤直到每一个分支都是信息熵为0,即要么一定去,要么一定不去,而不会出现两者的混合情况

基于基尼方法构建决策树的过程也是这样,唯一不同的是使用的计算方法不同,为Gini = 1 - (x/n)^2 - (y/n)^2,然后直接选择基尼加权值最小的即可,具体python代码实现过程点击下方连接即可

https://blog.csdn.net/qq_51691366/article/details/130836272?spm=1001.2014.3001.5501

4、决策树算法

ID3:信息增益

C4.5:(解决ID3问题,考虑自身信息熵)信息增益率,用来解决信息增益可能会偏向于选择具有更多取值的特征的问题。信息增益率越大,表示使用该特征来划分样本集合后,对样本分类的影响相对于特征本身的取值数量更大。信息增益和信息增益率都是用来选择最优特征的指标,但信息增益率能更好地处理特征取值数量不同的情况(比如在上面的例子要是再加入一个特征ID,编号从1—14开始,但是经过计算,这个特征的每一个分支的信息熵都是为H(X) = 1/1*log1 = 0,加权信息熵为 0,所以我们就要选择这个特征作为根节点吗?很显然不能,所以这个时候就要使用信息增益率C4.5算法来解决ID3存在的问题,考虑自身信息熵,避免了ID3算法中存在的对取值较多的特征有偏好的情况,提高了决策树分类器的泛化性能。信息增益率越大表示该特征对于划分数据集具有更好的区分能力)

计算公式为 gain(A) / splitInfo(A),分子表示使用特征A作为划分依据时的信息增益,分母slitInfo(A)表示特征A的分裂信息,定义为所有特征A的取值对样本集合的信息熵的平均值,计算公式如下: splitInfo(A) = - sum(p(i) * log2(p(i))) 其中,p(i)是特征A的第i个取值在样本集合中出现的概率。 在实际应用中,为了避免分母为0的情况,可以对分裂信息加上一个小的常数,例如0.1

CART:使用GINI系数来当做衡量标准,它是一种常用的决策树算法,可以用于分类和回归问题。CART算法与其他决策树算法不同的是,可以处理数值型属性,而不仅仅是离散型属性

GINI系数(基尼方法,具体实现方法看上面的链接),和熵值一样,越小效果越好

5、连续值离散化

首先拿到一个乱序数组,对其进行排序

 然后对排序完之后的每两个数据之间进行二分划分

比如在60到70之间划分,划分点即为65.5,所以以65.5为中间点将上面已经排好序的数组划分为两组,即

 循环进行二分就会得到9个分界点,然后对每一个分界点计算,选取熵值最小,而信息增益最大的分界点即可。这个过程就是连续值离散化的过程。同样在链接https://blog.csdn.net/qq_51691366/article/details/130836272?spm=1001.2014.3001.5501

中对于连续数值离散化的过程就是使用这种方法实现的

6、预剪枝

为什么要进行剪枝:避免出现过拟合问题(指的是模型在训练集上表现良好,但在测试集或新数据上表现不佳的现象),提高模型的泛化能力

解决方法:预剪枝和后剪枝

预剪枝:一边建立决策树,一边建立进行剪枝的操作(更实用),通过限制树的深度、叶子结点个数、叶子结点样本数和信息增益等

后剪枝:决策树建立完成之后进行剪枝的操作,通过一定的衡量标准,叶子结点越多,损失越大

,其中C(T)是熵值乘样本数量,表示叶子结点个数

 比如对于为 0.44 * 6 + 1a

而要是的两个叶子结点则为 0*3 + 1a + 0.4444 * 3 + 1a

所以人为设置a的数值,比较前后剪枝完的结果,看看损失的情况,损失程度要是很高,就不进行后剪枝,要是很低就可以进行后剪枝

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】哈希表封装unordered系列

文章目录 前言一、哈希表的封装总结 前言 在看本篇文章前大家尽量拿出上一篇文章的代码跟着一步步实现,否则很容易引出大量模板错误而无法解决。 一、哈希表的封装 首先我们要解决映射的问题,我们目前的代码只能映射整形,那么如何支撑浮点数…

Java使用zxing.jar生成二维码

由于时代科学的进步,二维码已经和我们的生活密不可分,在开发过程中往往会涉及到和二维码相关的开发,今天这篇文章就教会大家如何使用zxing.jar包生成二维码 下面这个就是百度上面自带的一个生成二维码的功能,那他是怎么实现这个功…

计算机组成原理与体系结构概述

目录 一、计算机的发展 二、计算机的硬件系统 三、硬件的工作原理 四、计算机系统的层次结构 五、计算机的性能指标 一、计算机的发展 第一代计算机:电子管计算机 第一台电子计算机:ENIAC(1946) 设计目的:计算导弹…

平板触控笔哪种好?主动式电容笔推荐

现在市面上的电容笔分为主动式和被动式电容笔,很多小伙伴都分不清主动式和被动式电容笔的区别。今天给大家介绍一下这两款电容笔的区别。给大家分享几款好用的平替电容笔。 一、主动式电容笔和被动式电容笔的区别: 1.主动式电容笔: 主动式电…

数据结构与算法(九)

红黑树复习 图 图,是一种数据结构 集合只有同属于一个集合;线性结构存在一对一的关系,树形结构一对多的关系,图形结构,多对多的关系。 微信中:许多的用户组成了一个多对多的朋友关系网,这个关…

【C语言】变量

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

【机器学习】分类问题和逻辑(Logistic)回归算法详解

在阅读本文前,请确保你已经掌握代价函数、假设函数等常用机器学习术语,最好已经学习线性回归算法,前情提要可参考https://blog.csdn.net/weixin_45434953/article/details/130593910 分类问题是十分广泛的一个问题,其代表问题是&…

Android studio 环境安装

1. Java JDK安装 https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe 下载jdk-17 并安装 安装完成后设置环境变量 #新增环境变量JAVA_HOME C:\Program Files\Java\jdk-17#Path 环境变量添加 %JAVA_HOME%\bin %JAVA_HOME%\jdk\bin#新增环境变量CLASSPAT…

HEVC量化编码介绍

介绍 ● 视频编码中,残差信号经过DCT,变换系数具有较大动态范围,因此对变换系数量化可以有效减小信号取值空间,获得更好的压缩效果; ● 多对一映射机制,所以不可避免的引入失真,这是视频编码中…

Spring(三)对bean的详解

一、引入外部属性文件 首先我们将依赖进行导入&#xff1a; <!--MySQL驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.22</version></dependency><!--数据…

idea连接Linux服务器

一、 介绍 配置idea的ssh会话和sftp可以实现对linux远程服务器的访问和文件上传下载&#xff0c;是替代Xshell的理想方式。这样我们就能在idea里面编写文件并轻松的将文件上传到linux服务器中。而且还能远程编辑linux服务器上的文件。掌握并熟练使用&#xff0c;能够大大提高我…

烂怂if-else代码优化方案 | 京东云技术团队

0.问题概述 代码可读性是衡量代码质量的重要标准&#xff0c;可读性也是可维护性、可扩展性的保证&#xff0c;因为代码是连接程序员和机器的中间桥梁&#xff0c;要对双边友好。Quora 上有一个帖子&#xff1a; “What are some of the most basic things every programmer s…

日本医疗保健和健康管理公司【Zerospo】申请纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;来自日本的医疗保健和健康管理公司【Zerospo】&#xff0c;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为&#xff…

感谢海洋一所陈老师用Pospac MMS解算pospac数据及GNSS验潮

非常感谢海洋一所陈老师 帮忙用Pospac MMS解算博主的pospa从数据。解算的结果txt文件大小有2个G&#xff0c;令人非常吃惊&#xff0c;因为原始数据的时长不到1天&#xff0c;打开文件才知道每行位置数据的间隔时间是5ms&#xff0c;5ms正是惯导数据的采样频率。 用抽稀软件按…

短视频矩阵系统源码-开源开发php语言搭建

短视频矩阵系统源码---------- php源码是什么&#xff1f; PHP源码指的就是PHP源代码&#xff0c;源代码是用特定编程语言编写的人类可读文本&#xff0c;源代码的目标是为可以转换为机器语言的计算机设置准确的规则和规范。因此&#xff0c;源代码是程序和网站的基础。 PHP…

【数据结构】插入排序详细图解(一看就懂)

&#x1f4af; 博客内容&#xff1a;【数据结构】插入排序详细图解&#xff08;一看就懂&#xff09; &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f989;所属专栏&#xff1a;数据结构笔记 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准前端&#xff0c;…

ARM-FS6818-点亮LED灯

点亮LED灯 1.开发板介绍 2.cpu控制硬件原理 六大指令里边&#xff0c;只有内存访问指令能访问cpu之外的内容。那cpu如何控制硬件&#xff1f; *load/store指令-->操作4G内存 任何一个芯片都有一个地址映射表。告诉地址空间是如何映射的&#xff0c;便于我们找到对应的硬件地…

ChatGPT3.5-4资源汇总,直连无梯子

什么是ChatGPT? ChatGPT&#xff0c;全称&#xff1a;聊天生成预训练转换器&#xff08;英语&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;是OpenAI开发的人工智能聊天机器人程序&#xff0c;于2022年11月推出。该程序使用基于GPT-3.5、GPT-4…

limou的C语言学习路径

0.前言 你好这里是limou3434的一篇个人博文&#xff0c;感兴趣的话您可以到我的CSDN博客上看看&#xff0c;下面我将以前学习了大概7个月的C语言学习总结给您做一个集合&#xff0c;希望能够帮助到您。 1.C语言大略 学习C前的一些基础知识 这篇文章简单过一下C语言的基础&a…

U盘移动硬盘变本地硬盘怎么办 ,移动硬盘变本地硬盘的恢复方法

这是分区逻辑损坏后最常见的表现。U盘移动硬盘变本地硬盘怎么办 &#xff0c;移动硬盘变本地硬盘的恢复方法有些用人到这种情况后首先会尝试使用Windows系统自带的硬盘修复工具chk命令进行修复&#xff0c;不过&#xff0c;这样操作并不能解决问题&#xff0c;往往会造成更严重…