决策树构建:

决策树的结构与python中的二叉树结构(PY数据结构-树)相似,不过决策树中除了叶节点之外的其他节点,都被称之为“决策节点”,构建决策树的过程,也就是选取每一个节点采用哪一个特征作为划分依据的过程。

以解决二元分类问题为例,最终的叶节点输出只有两种情况:0或1,那么在前面的每一个决策节点时我们自然希望每一个节点分支得到的样本尽可能属于同一个类别,也就是说得到的示例样本纯度最高。因此,我们引入“熵”的概念,熵用于衡量样本的不纯度,其表达式如下:

H(p_{1})=-p_{1}log_{2}(p_{1})-p_{0}log_{2}(p_{0})

其中: p_{1}——所有样本中正例的占比;

            p_{0}——所有样本中负例的占比。

其图像如上图所示,可以看出,当一个样本中正例和负例各占一半时,对于分类而言此时样本是最不纯的,相应的熵值取最大值1;而当一个样本中全部为正例或负例时,对于分类而言此时样本最纯,相应的熵值取最小值0。

因此,决策节点的特征选取问题就转变为哪一个特征作为划分依据时可以最大程度的降低熵值的问题。并且,需要注意的一点是,当某一个分支的样本的数量较大时,保证该分支的纯度是更为重要的。这是因为样本数量多的分支在训练数据中占比更高,其分类结果对模型的整体准确率、召回率等指标影响更大。因此我们进一步的将特征分裂后的左右子分支得到的熵值进行加权平均计算

H=w^{left}H(p_{1}^{left})+w^{right}H(p_{1}^{right})

熵值的减少量也被称之为信息增益,而在实际运用中,我们一般会采取最大信息增益(也就是最大熵值降低)作为划分依据,这与树的停止划分有关。信息增益计算如下:

Info Gain=H^{root}-(w^{left}H(p_{1}^{left})+w^{right}H(p_{1}^{right}))

划分停止依据:

决策树的停止划分依据有如下四种:

  • 该节点已经100%是某一个类别;
  • 已经达到的树的最大深度;
  • 信息增益已经低于阈值;
  • 节点的示例样本已经低于阈值。

即使最终树的叶节点没有达到100%的纯度,我们也需要通过其他依据来停止继续划分,因为当树的规模过大时难以管理,并且很有可能会出现过拟合(决策树会为了纯度不断地生成过于复杂的划分规则)。同时,当继续划分得到的信息增益过小时,也没有必要再继续进行下去,理由同前者。

特征取值非二元:

前面提到过决策树的结构与二叉树相似,而如果某一个特征的取值是>2个的离散值/连续任意值时,我们需要采用一些转换的方法来保证二叉的结构。

独热编码:

对于取值为非任意离散值时,比如在下图的耳朵形状特征的取值中,可取值有三类:尖耳、垂耳以及椭圆形,我们将耳朵形状的分类变量转换成二进制向量,如下图所示。此时我们不再将耳朵形状作为分类特征,而是直接将它的三个取值类别作为分类特征,相应的每个样本在这三个分类特征中只会有一个值取1,因此称为独热。

阈值分割:

对于取值为连续任意值时,比如下图中的体重,此时无法同上采用独热编码来处理,因此一般是通过阈值分割将此特征的取值划分为两类作为分裂。而对于阈值的选择,通常是将训练样本中所有该特征取值进行排序,再取相邻值的中点作为候选阈值,然后计算每个候选阈值分裂后的信息增益,选择使增益最大的阈值。这可以保证在所有训练数据中确保找到当前特征下的全局最优分裂点,不过相应的计算成本较高。

回归树:

前面提到的决策树都是解决分类问题,不过决策树也可以推广到解决回归问题,也就是创建回归树。同样还是上图,此时我们不再把最右侧的体重作为输入特征,而是直接作为输出,问题就转变为了对于体重的预测。同样是选取不同的输入特征作为决策节点,现在我们要计算的不再是信息增益,之前目标是保证叶节点中的样本更多的为一个类别,此时目标则是保证叶结点中的样本体重尽可能接近,因为最终叶结点中所有样本的体重均值将作为此叶结点的预测结果。所以,每一次选择节点时,需要计算的是划分后的方差减少量,能够最大化降低方差的就作为当前决策节点。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一周学会Matplotlib3 Python 数据可视化-绘制直方图(Histogram)

锋哥原创的Matplotlib3 Python数据可视化视频教程: 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib,学习Matplotlib图形参数基本设置&…

uni-app之删除没用的文件,搭建页面

文章目录一、初始化项目1.1 初始化index.vue1.2 删除无用文件1.3 初始化后的目录结果如下二、文件目录分析2.1 核心文件2.2 关键文件夹​2.3 其他文件2.4 注意事项​​三、创建页面(pages)3.1 创建home页面3.2 创建其他页面3.3 查看pages.json3.4 删除index页面和pages.json的配…

99、【OS】【Nuttx】【构建】cmake 配置实操:问题解决

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除 背景 接之前 blog 【OS】【Nuttx】【构建】cm…

2007-2023年各省环境保护支出统计数据

数据介绍 环境保护支出是指政府和企业为改善生态环境质量、防治污染、保护自然资源所投入的资金,涵盖污染防治、生态修复、环境管理等多方面。污染防治支出、生态保护支出、环境管理事务、资源节约与循环利用等,当前环保支出仍面临区域不平衡、隐性债务…

PyCharm(2025.1.3.1)绑定 Conda 环境

1. Pycharm 右下角,选择( 如图所示 )2. Path to conda 这里选择如图所示的这个文件( 在你下载的 Anaconda 文件里 ),之后在 Enviroment 中就可以看到你新创建的环境了

Liunx文件系统详解

目录 1.磁盘 1.1 概念 1.2 磁盘物理结构 1.3 磁盘的存储结构 1.4 磁盘的逻辑结构 1.5 CHS && LBA地址 2.基础文件系统 2.1 块 ​编辑 2.2 分区 2.3 inode 3.ext2 ⽂件系统 3.1 宏观认识 3.2 Block Group 3.3块组内部构成 3.3.1 超级块(Supe…

Mac如何安装telnet命令

Mac如何安装telnet命令_mac telnet-CSDN博客

【SpringBoot】持久层 sql 注入问题

目录 概述 #{} 与 ${} 概述 前端恶意传参,改变后端 sql 语句的语法结构,从而使后端给前端返回一些私密的数据。这种安全问题往往是因为没有严格过滤参数,或者后端代码不严谨导致的。 #{} 与 ${} 在 MyBatis 框架中,#{} 与 ${} 都…

怎么写好汉语言文学专业的论文?

磨刀不误砍柴功, 前期多看文章和文献,吸取写作经验,写作过程会更加顺利噢!看到最后,相信你能得到收获! 写汉语言专业论文并不难,从选题、资料准备、框架搭建、正文写作、修改定稿五个核心环节展…

MySQL User表入门教程

一、User表概述 MySQL的user表位于mysql系统数据库中,是MySQL权限系统的核心,用于存储用户账户信息、认证方式和全局权限。通过操作此表,可实现用户创建、权限分配及安全审计。 二、User表核心字段解析字段名作用示例值Host用户允许连接的主机…

[NPUCTF2020]这是什么觅

题目是一个文件,我们先以记事本打开一下,开头就是PK,基本可以确定这是一个 ZIP 格式的压缩包​,不确定可以用winhex打开:​50 4B 03 04开头则 100% 是 ZIP 文件。改一下后缀之后解压得到一张图片上面是日期&#xff0c…

每日任务day0812:小小勇者成长记之挤牛奶

清晨,薄雾还缭绕在草地上,小小勇者背着编织篮子来到农场。奶牛们低头咀嚼,尾巴轻轻拍打着苍白的露珠。老人微笑着递给他一只温热的牛奶罐,说:“第一次要慢,别惊扰它们。”勇者学着老人弯下身,温…

IIS 多用户环境中判断服务器是否为开发用电脑,数据状态比较

如果只需要在 IIS 多用户环境中判断服务器是否为开发用电脑(一个固定状态,通常不会动态切换),代码可以进一步简化。这种场景下,状态一般是启动时确定的(如通过配置文件或环境变量),后…

P2865 [USACO06NOV] Roadblocks G

思路:严格次短路,在任何情况下如果发现一条从1到i的路,都有以下情况:1.该路径小于当前1到i的最短路,将最短路替换2.该路径长度等于当前最短路,舍去3.该路径大于最短路且小于次短路,将此路径替换…

基于Hadoop的汽车价格预测分析及评论情感分析可视化系统

文章目录有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主一、项目背景二、项目目标三、系统架构四、功能模块五、创新点六、应用价值与前景每文一语有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 一、项目背景 近年…

gpt-5与gpt-5-fast

简单来说: GPT-5 → 追求最高质量的推理,输出会更细致、更准确,尤其适合需要深度思考、长链推理、严谨分析的任务(比如复杂代码调试、长文档推理、系统设计)。速度相对慢一些。GPT-5-fast → 追求更高的响应速度&#…

Mybatis源码解读-SqlSession 会话源码和Executor SQL操作执行器源码

相关流程图整理元数据简略图执行流程图一级缓存、二级缓存设计与查询流程分析图一级缓存设计-类图一级缓存工作流程图二级缓存设计-类图二级缓存工作流程图元数据简略图 执行流程图 一级缓存、二级缓存设计与查询流程分析图 一级缓存设计-类图 一级缓存工作流程图 二级缓存设计…

使用Excel制作甘特图

最终效果:专业的项目管理团队通常会使用project制作甘特图,但是很多人没接触过这个软件,另外project制作的甘特图并不适合放在PPT中展示。由于Excel图表的数据标签无法准确识别月初和月末,如果使用原始数据直接做的效果是这样的&a…

超详细基于stm32hal库的esp8266WiFi模块驱动程序(可直接移植)

目录 前言: 1 前期准备 1.1 了解mqtt通信协议 1.1.1核心组件 1.2 ESP8266固件烧录 1.3 启动EMQX服务器 1.3.1大概了解emqx的使用 2 驱动代码讲解应用 2.1 硬件接线 2.2 AT指令 2.3 驱动代码 2.4 效果展示 前言: esp8266支持mqtt通信协议&…

redis认识缓存击穿

缓存击穿是指 一个非常热点的数据(被高并发访问)在缓存中过期失效的瞬间,导致大量并发请求同时穿透缓存,直接落到底层数据库,造成数据库瞬间压力剧增甚至崩溃的现象。关键特征和你的描述解析“数据库没有就需要命中的数…