决策树

前言

参考了大佬的博客:博客地址

适合分析离散数据,若是连续数据需要转换成离散数据再做分析(比如图中的年龄)

image-20250725201509189

结构

决策树由节点和有向边组成;节点可分为内部节点和叶节点

  • 内部节点:特征
  • 叶节点:类别
  • 有向边:特征的取值范围
image-20250725202928652

在用决策树进行分类时,首先从根结点出发,对实例在该结点的对应属性进行测试,接着会根据测试结果,将实例分配到其子结点;然后,在子结点继续执行这一流程,如此递归地对实例进行测试并分配,直至到达叶结点;最终,该实例将被分类到叶结点所指示的结果中

在决策树中,若把每个内部结点视为一个条件,每对结点之间的有向边视为一个选项,则从根结点到叶结点的每一条路径都可以看做是一个规则,而叶结点则对应着在指定规则下的结论。这样的规则具有互斥性和完备性,从根结点到叶结点的每一条路径代表了一类实例,并且这个实例只能在这条路径上。从这个角度来看,决策树相当于是一个 if-then 的规则集合,因此它具有非常好的可解释性

作用

表示随机变量的不确定度;对于决策树的节点来说,理想状态是节点特征对样本进行分类后,能最大程度降低样本的熵;可以这样理解,构建决策树就是对特征进行层次选取,而衡量特征选取的合理指标,就是熵

定义

对于在有限范围内的离散随机变量X,概率分布为:P(X=xi)=pi,i=1,2,…,n对于在有限范围内的离散随机变量X,概率分布为:\\ P(X=x_i) = p_i,i=1,2,\dots,n 对于在有限范围内的离散随机变量X,概率分布为:P(X=xi)=pi,i=1,2,,n

我们假设一个样本中有k个类别,比如不同颜色的球

image-20250725203903860
k=4pblue=27,pyellow=27,pred=27,pgreen=17k=4\\ p_{blue}=\frac{2}{7},p_{yellow}=\frac{2}{7},p_{red}=\frac{2}{7},p_{green}=\frac{1}{7} k=4pblue=72,pyellow=72,pred=72,pgreen=71
则离散随机变量X的熵定义为
H(X)=−∑i=1kpilogpi=−∑i=1k∣Ci∣∣D∣log∣Ci∣∣D∣Ci表示第i类样本,D表示整个数据集H(X) = -\sum_{i=1}^{k}p_ilogp_i=-\sum_{i=1}^{k}\frac{|C_i|}{|D|}log\frac{|C_i|}{|D|}\\ C_i表示第i类样本,D表示整个数据集 H(X)=i=1kpilogpi=i=1kDCilogDCiCi表示第i类样本,D表示整个数据集
则X的熵仅与其分布有关,而与取值无关,H(X)也可以写成H§
pi∈[0,1],logpi∈(−∞,0],−logpi∈[0,+∞)p_i \in [0,1],logp_i \in (-∞,0],-logp_i\in [0,+∞) pi[0,1],logpi(,0],logpi[0,+)
当k很大时,H(X)也会变得很大

条件熵

引入

image-20250725204954318

以天气为例,晴天为A类,阴天为B类,雨天为C类;他们都有k=2个类别,即是/否
H(XA)=−∑i=12pilogpi=−(12log12+12log12)=log2H(XB)=−∑i=12pilogpi=−(1log1+log0)=0H(XC)=−∑i=12pilogpi=−(0log0+1log1)=0H(X_A)=-\sum_{i=1}^{2}p_ilogp_i = -(\frac{1}{2}log\frac{1}{2}+\frac{1}{2}log\frac{1}{2})=log2\\ H(X_B)=-\sum_{i=1}^{2}p_ilogp_i=-(1log1+log0) = 0\\ H(X_C)=-\sum_{i=1}^{2}p_ilogp_i=-(0log0+1log1)=0\\ H(XA)=i=12pilogpi=(21log21+21log21)=log2H(XB)=i=12pilogpi=(1log1+log0)=0H(XC)=i=12pilogpi=(0log0+1log1)=0
整体天气系统的熵
P(XA)=814,P(XB)=314,P(XC)=314H(X天气)=814×H(XA)+314×H(XB)+314×H(XC)=47log2P(X_A)=\frac{8}{14},P(X_B) = \frac{3}{14},P(X_C) = \frac{3}{14}\\ H(X_{天气}) = \frac{8}{14}\times H(X_A)+\frac{3}{14}\times H(X_B)+\frac{3}{14}\times H(X_C)=\frac{4}{7}log2 P(XA)=148,P(XB)=143,P(XC)=143H(X天气)=148×H(XA)+143×H(XB)+143×H(XC)=74log2

定义

上面的例子其实就是在求条件熵
概率统计中条件概率公式:P(A∣B)=P(AB)P(B)对于随机变量(X,Y),其联合分布P(X=xi,Y=yj)=pij概率统计中条件概率公式:P(A|B) = \frac{P(AB)}{P(B)}\\ 对于随机变量(X,Y),其联合分布P(X=x_i,Y=y_j)=p_{ij} 概率统计中条件概率公式:P(AB)=P(B)P(AB)对于随机变量(X,Y),其联合分布P(X=xi,Y=yj)=pij

H(Y∣X)=∑i=1kpiH(Y∣X=xi)H(Y∣X):在X条件下的熵pi:P(X=xi)H(Y|X) = \sum_{i=1}^{k}p_iH(Y|X=x_i)\\ H(Y|X):在X条件下的熵\\ p_i:P(X=x_i)\\ H(YX)=i=1kpiH(YX=xi)H(YX):X条件下的熵pi:P(X=xi)

划分选择

信息增益

ID3算法选用的评估标准
g(D,X)=H(D)−H(D∣X)H(D∣X)=∑i=1k∣Ci∣∣D∣H(X=xi)g(D,X)为信息增益,表示特征X使数据集D不确定性的减少程度g(D,X) = H(D)-H(D|X) \\ H(D|X)=\sum_{i=1}^{k}\frac{|C_i|}{|D|}H(X=x_i)\\ g(D,X)为信息增益,表示特征X使数据集D不确定性的减少程度 g(D,X)=H(D)H(DX)H(DX)=i=1kDCiH(X=xi)g(D,X)为信息增益,表示特征X使数据集D不确定性的减少程度

选择根节点

将使信息增益G(D,X)最大的特征X作为根节点

信息增益率

C4.5算法选用的评估标准

为什么引入信息增益率?

以信息增益作为标准时,会偏向于选择取值较多的特征;比如给定编号与活动是否举办,那么1个编号一定只对应1个是/否,编号必然是最优的特征;但是编号对于类别划分没有帮助,所以我们需要引入一个新的概念-信息增益率
信息增益率𝑔𝑅(𝐷,𝑋)定义为其信息增益𝑔(𝐷,𝑋)与数据集𝐷在特征𝑋上值的熵𝐻𝑋(𝐷)之比HX(D)=−∑i=1k∣Di∣∣D∣log∣Di∣∣D∣∣D∣:整个数据集样本数,∣Di∣:第i类的样本数gR(D,X)=g(D,X)HX(D)信息增益率 𝑔_𝑅(𝐷, 𝑋) 定义为其信息增益 𝑔(𝐷, 𝑋) 与数据集 𝐷 在特征 𝑋 上值的熵 𝐻_𝑋(𝐷) 之比\\ H_X(D) = -\sum_{i=1}^{k}\frac{|D_i|}{|D|}log\frac{|D_i|}{|D|}\\ |D|:整个数据集样本数,|D_i|:第i类的样本数\\ g_R(D,X) = \frac{g(D,X)}{H_X(D)}\\ 信息增益率gR(D,X)定义为其信息增益g(D,X)与数据集D在特征X上值的熵HX(D)之比HX(D)=i=1kDDilogDDiD:整个数据集样本数,Di:i类的样本数gR(D,X)=HX(D)g(D,X)

为什么信息增益率能降低偏向于选择取值较多的特征的影响?

当样本数量|D|增加后,|Di|/|D|降低,取对数再取负以后,H_X(D)就增大,信息增益率就降低

基尼系数

CART算法选用的评估标准

基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好

在分类问题中,假设有k个类别,第i个类别概率为pi,则基尼系数为
Gini(p)=∑i=1kpi(1−pi)=∑i=1kpi−∑i=1kpi2=1−∑i=1kpi2Gini(p) = \sum_{i=1}^{k}p_i(1-p_i) = \sum_{i=1}^{k}p_i-\sum_{i=1}^{k}p_i^2=1-\sum_{i=1}^{k}p_i^2 Gini(p)=i=1kpi(1pi)=i=1kpii=1kpi2=1i=1kpi2
对于数据集D,假设有k个类别,第i个类别的数量为C_i,则数据集D的基尼系数为
Gini(D)=∑i=1k∣Ci∣∣D∣(1−∣Ci∣∣D∣)=1−∑i=1k(∣Ci∣∣D∣)2Gini(D) = \sum_{i=1}^{k}\frac{|C_i|}{|D|}(1-\frac{|C_i|}{|D|}) = 1-\sum_{i=1}^{k}(\frac{|C_i|}{|D|})^2 Gini(D)=i=1kDCi(1DCi)=1i=1k(DCi)2
基尼系数其实表示了一个数据集中分类错误的平均概率
如果数据集根据X的取值分为D1,D2,…,DkGini(D,X)=∑i=1k∣Ci∣∣D∣Gini(Di)Gini(D,X)表示数据集D根据特征X划分后的不确定性如果数据集根据X的取值分为{D_1,D_2,\dots,D_k} \\ Gini(D,X) = \sum_{i=1}^k\frac{|C_i|}{|D|}Gini(D_i) \\ Gini(D,X)表示数据集D根据特征X划分后的不确定性 如果数据集根据X的取值分为D1,D2,,DkGini(D,X)=i=1kDCiGini(Di)Gini(D,X)表示数据集D根据特征X划分后的不确定性
观察公式,其实可以发现面对编号特征时,基尼系数Gini(D,X)会是0

基尼增益

和信息增益类似
G(D,X)=Gini(D)−Gini(D,X)G(D,X) = Gini(D)-Gini(D,X) G(D,X)=Gini(D)Gini(D,X)
采用越好的特征进行划分,得到的基尼增益也越大

基尼仍会认为编号是一个比较优的特征(面对编号特征时,基尼系数Gini(D,X)会是0)

基尼增益率

基尼增益率GR(D,X)可以表示为G(D,X)与数据集D在特征X上的取值个数之比GR(D,X)=G(D,X)∣DX∣基尼增益率G_R(D,X)可以表示为G(D,X)与数据集D在特征X上的取值个数之比\\ G_R(D,X) = \frac{G(D,X)}{|D_X|} 基尼增益率GR(D,X)可以表示为G(D,X)与数据集D在特征X上的取值个数之比GR(D,X)=DXG(D,X)

处理连续值

比如有长度为n的连续数据a1,a2,…,an比如有长度为n的连续数据a_1,a_2,\dots,a_n 比如有长度为n的连续数据a1,a2,,an

对其离散化的步骤:

  • 排序

  • 再任取相邻点的中位点作为划分点
    ϕ=ai+ai+12,1≤i≤n−1一共产生n−1个中位点\phi = \frac{a_i+a_{i+1}}{2},1 \leq i \leq n-1 \\ 一共产生n-1个中位点 ϕ=2ai+ai+1,1in1一共产生n1个中位点

  • 对这n-1个中位点划分出的数据集进行计算熵,熵最小的就是最优划分点

剪枝

对于决策树而言,如果不断向下划分直至叶子节点的熵为0,理论上我们区分开了所有的类别。但是这样很容易过拟合(划分太多次相当于太多特征导致模型太复杂),因此我们需要进行剪枝

剪枝策略:

  • 预剪枝:边构建决策树边剪枝
  • 后剪枝:决策树构建完之后再剪枝

正则化/预剪枝

预剪枝策略可以通过限制决策树深度,叶子节点个数,叶子节点含样本数以及信息增量完成

  • 限制决策树高度

    image-20250725232346567

    设定深度限度值d,当深度达到d时,就不再构建决策树(节点不再继续划分数据),把当前节点作为叶子节点

  • 限制叶子节点个数

    image-20250725232642744

    当达到预设的叶子节点值n时,即使当前节点可以再继续往下划分,也不继续划分了,而是作为叶子节点

  • 限制叶子节点样本数

    image-20250725232907965

    限制叶子节点的样本数不小于n,如果一个节点下所有分支的叶子节点包含的样本数都小于n,那么需要对这个分支进行剪枝

  • 限制最低信息增益

    image-20250725233415198

后剪枝

衡量标准
Lα=∑i=1n(Gini(Ti)×∣Ti∣)+α∣Tleaf∣n是叶子节点数Lα表示最终损失(越小越好)Gini(T)表示当前节点的基尼系数∣T∣表示当前节点的样本数Tleaf表示当前节点被划分后产生的叶子节点个数α表示偏好系数,类似于正则化参数λ,越大表示对划分叶子节点惩罚越重L_{\alpha}=\sum_{i=1}^{n} (Gini(T_i)\times|T_i|)+\alpha|T_{leaf}| \\ n是叶子节点数\\ L_{\alpha}表示最终损失(越小越好) \\ Gini(T)表示当前节点的基尼系数 \\ |T|表示当前节点的样本数 \\ T_{leaf}表示当前节点被划分后产生的叶子节点个数\\ \alpha表示偏好系数,类似于正则化参数λ,越大表示对划分叶子节点惩罚越重\\ Lα=i=1n(Gini(Ti)×Ti)+αTleafn是叶子节点数Lα表示最终损失(越小越好)Gini(T)表示当前节点的基尼系数T表示当前节点的样本数Tleaf表示当前节点被划分后产生的叶子节点个数α表示偏好系数,类似于正则化参数λ,越大表示对划分叶子节点惩罚越重
image-20250725235407062

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

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

相关文章

opencv--day02--图像颜色处理及图像仿射变换

文章目录前言一、 图像颜色处理1. 颜色加法1.1 OpenCV加法1.2 numpy加法1.3 颜色加权加法2.颜色空间2.1 RGB颜色空间2.2 HSV颜色空间3. 颜色转换3.1 读取的图片同时转换3.2 对已有图片转换4. 图像灰度化4.1 灰度图概念4.2 最大值灰度化4.3 平均值灰度化4.4 加权均值灰度化5. 图…

第一层nginx访问url如何透传到第二层nginx

要让第一层Nginx将客户端请求的URL完整透传到第二层Nginx,关键在于正确配置proxy_pass指令及路径拼接规则。以下是具体配置方法和注意事项: 核心配置原则 proxy_pass指令末尾是否添加/会直接影响URL的透传方式: 不带/:会将locatio…

【2025最新毕业设计】外卖点餐小程序(外卖点餐管理系统)

外卖点餐小程序的设计与实现技术大纲(Vue.js Element UI)需求分析与功能设计用户需求调研:分析目标用户群体的核心需求(如快速点餐、支付便捷、订单跟踪等)核心功能模块划分:用户端(登录/注册、…

两台电脑连接交换机,使用其中一台电脑的网络上网(NAT转发)

场景 windows 电脑和 linux电脑连在同一台交换机上,linux电脑有通过无线网络。要实现Windows电脑通过交换机共享Linux电脑的无线网络上网,需将Linux设为网关并进行网络共享,步骤如下: 一、Linux电脑设置(网关配置&…

OpenCV Mat UMat GpuMat Matx HostMem InputArray等设计哲学

一、概览: GpuMat对应于cuda;HostMem 可以看作是一种特殊的Mat,其存储对应cuda在主机分配的锁页内存,可以不经显示download upload自动转变成GpuMat(但是和GpuMat并无继承关系);UMat对应于openc…

ATR2652SGNSS全频段低噪声放大器

ATR2652S是一款具有高增益、低噪声系数的低噪声放大器芯片。支持GNSS全频段信号,同时GNSS 的两个频段可以应用于GNSS双频导航接收机中。 采用先进的 SiGe 工艺设计和制作,工艺稳定,低噪声放大器在 GNSS 整个频段内可以获得非常好的射频性能&a…

大数据中心——解读60页IDC云数据中心机房运维服务解决方案【附全文阅读】

该方案主要面向云数据中心运营管理者、IT 运维人员、企业决策者等,旨在解决云资源和业务网络管理难题,提升 IT 资源掌控能力。方案核心是 EVM VirtualViz 仿真可视化系统,它整合多源数据,提供 3D 仿真展示,实现数据中心…

环境变量-进程概念(7)

文章目录Linux 真实调度算法1. queue[140]2. bitmap[5] 位图3. nr_active4. 活跃进程与过期进程环境变量1. 基本概念2. 命令行参数3. PATH 环境变量4. 环境变量具体操作Linux 真实调度算法 下图是Linux2.6内核中进程队列的数据结构,也有Linux2.6内核进程O(1)调度算…

为什么数组可以做到时间复杂度为O(1)的随机访问

这个问题涉及数组底层结构与内存寻址机制 一、数组元素在内存中连续存储 数组在内存中会开辟一块连续地址空间。假设数组A为int类型,共有n个元素,每个元素大小为4字节,那么他们在内存中的存储结构可能如下:内存地址数组元素A0x100…

《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——5. 集成OpenCV:让程序拥有“视力”

目录一、概述1.1 背景介绍:赋予应用“视力”1.2 学习目标二、集成OpenCV2.1 安装OpenCV2.2 在Qt项目中配置CMake三、项目数据集介绍与准备四、图像的桥梁:ImageProvider与格式转换五、加载、转换并显示图像六、总结与展望一、概述 1.1 背景介绍&#xf…

智慧驾驶疲劳检测算法的实时性优化

智慧驾驶疲劳检测:从技术突破到场景革命全球每年因疲劳驾驶引发的交通事故占比超20%,夜间及长途驾驶场景中这一比例更高。当驾驶员出现疲劳甚至晕倒等危险驾驶行为时,传统检测手段因依赖单一传感器或受环境干扰,存在误报率高、响应…

USRP X440

产品概述 USRP X440 是 Ettus Research 推出的高性能、多通道、宽带软件定义无线电(SDR)系统。基于 Xilinx Zynq UltraScale RFSoC 架构,它提供高密度、相干性的信号收发能力,帮助您快速构建雷达、电子战(EW&#xff0…

[特殊字符] GitHub 2025年7月月度精选项目 Top5

🚀 GitHub 2025年7月月度精选项目 Top5 本月GitHub有哪些值得关注的优质开源项目?我从数千个新项目中,精选了5个有趣 实用 可演示的仓库 无论你是开发者、AI爱好者、工具控,还是正在做副业产品,这篇文章都值得收藏&a…

微服务架构下的自动化测试策略调优经验分享

微服务架构下,自动化测试策略需针对分布式特性、服务自治性和高耦合风险进行针对性调整的关键调整方向及实施方法: 一、​​测试策略重构:分层与契约驱动​​ 1. ​​测试金字塔升级为钻石模型​​ ​​调整逻辑​​:传统金字塔中UI测试占比过高,而微服务需强化契约测试与…

图论:并查集

入门 久闻并查集的大名,今天来一探究竟,到底什么是并查集,并查集有什么用? 并查集(Disjoint Set Union, DSU)是一种处理不相交集合的合并及查询问题的数据结构。 其实并查集的作用主要就有两个: 1、将两个元素添加到…

告别静态文档!Oracle交互式技术架构图让数据库学习“活“起来

🗺️ 当数据库架构图学会"互动" 想象一下,你正在学习Oracle数据库架构,面对密密麻麻的静态文档和复杂的组件关系图,是不是常常感到: 像在迷宫里找路,不知道组件间如何协作?想深入了…

day62-可观测性建设-全链路监控zabbix+grafana

🌟监控api接口 🔍监控zabbix-api接口 生成API tokens命令行测试 curl -s -X POST -H "Content-Type: application/json-rpc" -d {"jsonrpc": "2.0","method": "host.get","params": {&quo…

通过Deepseek找工作

推送的结果如下,对应的AI提示词在底部: 计算机方向远程工作职位汇总 整合全球远程技术岗位 | 支持全地域远程办公 | 涵盖开发、安全、云计算等方向 覆盖方向:8+个技术领域 薪资范围:10K-40K/月 工作模式:100%远程 远程技术职位列表 职位名称 技能要求 经验要求 薪资…

vscode文件颜色,只显示自己更改的文件颜色、刚git下来的库,vscode打开后,显示所有文件都被修改了

问题:git新的库,然后我用vscode打开,默认显示所有的文件都更改了,但是我打开他们修改的对比,没有显示任何有被修改的地方,是怎么回事 linux/wsl下这么设置就可以了:git config core.autocrlf in…

基于ENMeval包的MaxEnt模型参数优化总结

MaxEnt模型参数优化1. MaxEnt模型优化:增加RM,降低模型过拟合风险,简易模型,平滑响应曲线,增强模型可解释性和转移性(生物入侵)2. 默认参数:FCLQHP,RM12.1. 基于优化的 M…