决策树的分类
概念
决策树是一种树形结构
树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果
决策树的建立过程
1.特征选择:选取有较强分类能力的特征。
2.决策树生成:根据选择的特征生成决策树。
3. 决策树也易过拟合,采用剪枝的方法缓解过拟合

决策树的分类
ID3 决策树
如何挑选出区分度最强的特征:
遍历所有特征, 尝试进行分类, 计算所有特征的信息增益
选择信息增益最大的特征作为当前轮选出来的特征
信息熵/信息增益
在信息论中代表随机变量不确定度的度量

其中 P(xi) 表示数据中类别出现的概率,H(x) 表示信息的信息熵值
信息增益 = 信息熵 - 条件熵
条件熵 = ∑ 当前类别特征取值在所有样本中的比例 * 当前类别特征取值的信息熵
ID3 决策树生长停止的条件
所有的叶子结点信息熵为0
所有的特征都用完了
案例
下面以常用的贷款申请样本数据表为样本集,通过数学计算来介绍信息增益计算过程。

Step1 计算经验熵
类别一共是两个拒绝/同意,数量分别是6和9,根据熵定义可得:
![]()
Step2 各特征的条件熵
将各特征分别记为 $A_1,A_2,A_3,A_4$ ,分别代表年龄、有无工作、有无房子和信贷情况,那么

Step3 计算增益

根据计算所得的信息增益,选取最大的$A_3$ 作为根节点的特征。它将训练集 $D$ 划分为两个子集$D_1$(取值为“是”)和$D_2$(取值为“否”)。由于$D_1$只有同一类的样本点,所以成为一个叶节点,节点标记为“是”。
对于$D_2$需从特征$A_1,A_2,A_4$中选择新的特征。计算各个特征的信息增益

选择信息增益最大的特征$A_2$作为节点的特征。由于$A_2$有两个可能取值,一个是“是”的子节点,有三个样本,且为同一类,所以是一个叶节点,类标记为“是”;另一个是“否”的子节点,包含6个样本,也属同一类,所以也是一个叶节点,类别标记为“否”。
最终构建的决策树如下:

ID3算法步骤
计算每个特征的信息增益
使用信息增益最大的特征将数据集 S 拆分为子集
使用该特征(信息增益最大的特征)作为决策树的一个节点
使用剩余特征对子集重复上述(1,2,3)过程
C 4.5 决策树
ID3 决策树的缺陷:
倾向于选择类别取值比较多的特征, (ID3 计算信息增益带来的缺陷)
C4.5 做特征选择的时候, 计算的是信息增益率, 而不是信息增益
信息增益率 = 信息增益/ 特征自己的信息熵
相当于对信息增益进行修正,增加一个惩罚系数
Cart树
Cart模型是一种决策树模型,它即可以用于分类,也可以用于回归。
Cart回归树使用平方误差最小化策略
Cart分类生成树采用的基尼指数最小化策略。
Cart分类生成树
基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,Gini(D)值越小,数据集D的纯度越高。
基尼指数Gini_index(D):选择使划分后基尼系数最小的属性作为最优化分属性。

注意:
信息增益(ID3)、信息增益率值越大(C4.5),则说明优先选择该特征。 基尼指数值越小
(cart),则说明优先选择该特征。
Cart回归决策树
CART 回归树和 CART 分类树的不同之处在于:
CART 分类树预测输出的是一个离散值,CART 回归树预测输出的是一个连续值 CART 分类树使
用基尼指数作为划分、构建树的依据,CART 回归树使用平方损失 分类树使用叶子节点多数类别
作为预测类别,回归树则采用叶子节点里均值作为预测输出
CART 回归树的平方损失

决策枝剪枝

为什么要剪枝:
决策树剪枝是一种防止决策树过拟合的一种正则化方法;提高其泛化能力
把子树的节点全部删掉,使用用叶子节点来替换
剪枝的方式
预剪枝:指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决
策树泛化性能提升,则停止划分并将当前节点标记为叶节点;
优点: 预剪枝使决策树的很多分支没有展开,不单降低了过拟合风险,还显著减少了决策树的
训练、测试时间开销
缺点: 有些分支的当前划分虽不能提升泛化性能,但后续划分却有可能导致性能的显著提高;
预剪枝决策树也带来了欠拟合的风险
后剪枝:是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点
对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。
优点: 比预剪枝保留了更多的分支。一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能
往往优于预剪枝
缺点: 后剪枝先生成,后剪枝。自底向上地对树中所有非叶子节点进行逐一考察,训练时间开
销比未剪枝的决策树和预剪枝的决策树都要大得多。
相关文章:
决策树的分类
概念 决策树是一种树形结构 树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果 决策树的建立过程 1.特征选择:选取有较强分类能力的特征。 2.决策树生成:根据选择的特征生…...
LateX--插入伪代码类型详解
文章目录 1.算法伪代码流程图----循环带范围1.1.算法伪代码示例图11.2.算法伪代码示例图2 2.算法伪代码流程图----循环不带范围3.算法伪代码流程图---不带行数数字4.参考文献 1.算法伪代码流程图----循环带范围 #需要插入这个宏包 \usepackage[ruled,linesnumbered]{algorithm…...
《Python数据分析技术栈》第06章使用 Pandas 准备数据 04 DataFrames
04 DataFrames 《Python数据分析技术栈》第06章使用 Pandas 准备数据 04 DataFrames A DataFrame is an extension of a Series. It is a two-dimensional data structure for storing data. While the Series object contains two components - a set of values, and index …...
wayland(xdg_wm_base) + egl + opengles 最简实例
文章目录 前言一、ubuntu 下相关环境准备1. 获取 xdg_wm_base 依赖的相关文件2. 查看 ubuntu 上安装的opengles 版本3. 查看 weston 所支持的 窗口shell 接口种类二、xdg_wm_base 介绍三、egl_wayland_demo1.egl_wayland_demo2_0.c2.egl_wayland_demo3_0.c3. xdg-shell-protoco…...
MySQL部署
1、卸载mariadb rpm -qi mariadb-libs yum remove mysql-libs -y 2、查看操作系统内核版本及硬件架构 uname -a 3、查看glibc版本 ldd --version 4、下载mysql压缩包 wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.35-linux-glibc2.17-x86_64.tar 5、解压到/mnt目录…...
【ARM 嵌入式 编译系列 3.7 -- newlib 库文件与存根函数 stubs 详细介绍】
请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 newlib 库文件介绍资源使用平台支持功能性能许可证兼容性系统调用函数介绍系统调用存根 stubs 详细介绍为什么需要系统调用存根(Stubs)?常见的系统调用存根如何实现系统调用存根如何告知编译器使用自定义存根…...
【C++】结构体
目录 1.结构体基本概念 2.结构体的定义和使用 3.结构体数组 4.结构体指针 5.结构体嵌套结构体 6.结构体做函数参数 7.结构体中const使用场景 1.结构体基本概念 结构体属于用户 ---- 自定义的数据类型,允许用户储存不同的数据类型 2.结构体的定义和使用 语法…...
web架构师编辑器内容-拖动元素改变元素的位置和大小的完成
拖动移动元素 改变编辑器的定位系统 我们目前的元素都是按照块级元素直接自上而下的排列在画布中,为了让元素实现精确的定位和调整,我们需要改变这些元素的定位实现。我们需要让这些元素画布区域来进行绝对定位。如果我们有一个元素有这些已经保存的 c…...
基于CNN的水果识别-含数据集训练模型
数据集介绍,下载本资源后,界面如下: 有一个文件夹一个是存放数据集的文件。 数据集介绍: 一共含有:8个类别,包含:Apple, Banana, Cherry, Dragon Fruit, Mango, Orange, Papaya, Pineapple等。 然后本地的train.txt和…...
Hadoop基本概论
目录 一、大数据概论 1.大数据的概念 2.大数据的特点 3.大数据应用场景 二、Hadoop概述 1.Hadoop定义 2.Hadoop发展历史 3.Hadoop发行版本 4.Hadoop优势 5.Hadoop1.x/2.x/3.x 6.HDFS架构 7.Yarn架构 8.MapReduce架构 9.大数据技术生态体系 一、大数据概论 1.大数…...
2023年12月 Scratch 图形化(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
Scratch图形化等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 观察下列每个圆形中的四个数,找出规律,在括号里填上适当的数?( ) A:9 B:17 C:21 D:5 答案:C 左上角的数=下面两个数的和+右上角的数...
burp靶场--访问控制【越权】
【Burp系列】超全越权漏洞实验总结 https://portswigger.net/web-security/access-control/lab-unprotected-admin-functionality 1. 访问控制【越权】 https://portswigger.net/web-security/access-control#what-is-access-control ### 什么是访问控制: 访问控…...
C#使用DateTime.Now静态属性动态获得系统当前日期和时间
目录 一、实例 1.源码 2.生成效果 二、相关知识点 1.Thread类 (1)Thread.Sleep()方法 (2)Thread(ThreadStart) (3)IsBackground (4)Invoke( ) 2.CreateGrap…...
华为机考入门python3--(0)模拟题2-vowel元音字母翻译
分类:字符串 知识点: 字符串转list,每个字符成为list中的一个元素 list(string) 字符串变大小写 str.upper(), str.lower() 题目来自【华为招聘模拟考试】 # If you need to import additional packages or classes, please import …...
【轮式平衡机器人】——角度/速度/方向控制分析软件控制框架
轮式平衡机器人具有自不稳定性,可类比一级倒立摆系统的控制方法,常见有反馈线性化方法、非线性PID控制、自适应控制、自抗扰控制,还有改进的传统缺乏对外界干扰和参数改变鲁棒性的滑模变结构控制。我们采用较为简单的双闭环PID控制实现平衡模…...
HYBBS 表白墙网站PHP程序源码 可封装成APP
源码介绍 PHP表白墙网站源码,可以做校园内的,也可以做校区间的,可封装成APP。告别QQ空间的表白墙吧。 安装PHP5.6以上随意 上传程序安装,然后设置账号密码,登陆后台切换模板手机PC都要换开启插件访问前台。 安装完…...
【设计模式】适配器和桥接器模式有什么区别?
今天我探讨一下适配器模式和桥接模式,这两种模式往往容易被混淆,我们希望通过比较他们的区别和联系,能够让大家有更清晰的认识。 适配器模式:连接不兼容接口 当你有一个类的接口不兼容你的系统,而你又不希望修改这个…...
C语言应用层程序热补丁
一、热补丁简介 一个正在运行的程序,要是有某函数或某流程有问题,需要修改,有两个方式: 1.通过设置LD_PRELOAD把需要的库重新定向,但这种方式需要重启正在运行的程序。 2.通过修改可执行文件某个函数指向的地址&…...
【代码随想录+力扣hot100】双指针
文章目录 27. 移除元素思路:代码: 26. 删除有序数组中的重复项代码:思路一:重复元素必相邻思路二:从第一个位置开始考虑快慢指针 977.有序数组的平方思路:代码: 283. 移动零代码:思路…...
【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(三):性能优化策略
关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第三部分:性能优化策略,子节点表示追问或同级提问 读写分离 分布式数据库的…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
