决策树的分类

news2024/10/6 8:24:25

概念

决策树是一种树形结构

树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果

决策树的建立过程

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 回归树的平方损失

 决策枝剪枝

为什么要剪枝:

        决策树剪枝是一种防止决策树过拟合的一种正则化方法;提高其泛化能力

        把子树的节点全部删掉,使用用叶子节点来替换

剪枝的方式

预剪枝:指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决

策树泛化性能提升,则停止划分并将当前节点标记为叶节点;

        优点: 预剪枝使决策树的很多分支没有展开,不单降低了过拟合风险,还显著减少了决策树的

                训练、测试时间开销

        缺点: 有些分支的当前划分虽不能提升泛化性能,但后续划分却有可能导致性能的显著提高; 

                 预剪枝决策树也带来了欠拟合的风险

后剪枝:是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点

对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。

        优点: 比预剪枝保留了更多的分支。一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能

                往往优于预剪枝

        缺点: 后剪枝先生成,后剪枝。自底向上地对树中所有非叶子节点进行逐一考察,训练时间开

                销比未剪枝的决策树和预剪枝的决策树都要大得多。

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

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

相关文章

【代码随想录07】344.反转字符串 541. 反转字符串II 05.替换空格 151.翻转字符串里的单词 55. 右旋转字符串

目录 344. 反转字符串题目描述做题思路参考代码 541. 反转字符串 II题目描述参考代码 05. 替换数字题目描述参考代码 151. 反转字符串中的单词题目描述参考代码 55. 右旋转字符串题目描述参考代码 344. 反转字符串 题目描述 编写一个函数,其作用是将输入的字符串反…

HTML以及CSS相关知识总结(一)

近日就开始回顾html和css相关知识啦,并且会学习html5和css3的新知识,以下是我对记忆不太深刻的地方以及新知识点的总结: Web标准: 结构:用于对网页元素进行整理和分类,即HTML 表现:用于设置网页…

CentOS Linux操作系统源码安装最新Redis版本,使用JSON数据类型踩入新坑

最近有空查阅了redis官网,发现redis数据类型不止Strings、Lists、Sets、Hashes、Sorted sets,还多了几种,决定先试用下JSON数据类型 1、安装Redis软件 JSON数据类型,对Redis版本有要求,需要大于4.0版本。下图是华为云…

Transformer|1.4 CNN遇到的问题与窘境

文章目录 CNN遇到的问题与窘境transformer 的优势 CNN遇到的问题与窘境 判断一个人是否为美人,既要看她各个五官,也要看她各个五官占的比例和协调。 既要照顾好局部信息,也要照顾好全局信息。 局部信息用小的感受野进行感受,而全局…

【操作系统和计网从入门到深入】(六)进程间通信

前言 这个专栏其实是博主在复习操作系统和计算机网络时候的笔记,所以如果是博主比较熟悉的知识点,博主可能就直接跳过了,但是所有重要的知识点,在这个专栏里面都会提到!而且我也一定会保证这个专栏知识点的完整性&…

python算法与数据结构---单调栈与实践

单调栈 单调栈是一个栈,里面的元素的大小按照它们所在栈的位置,满足一定的单调性; 性质: 单调递减栈能找到左边第一个比当前元素大的元素;单调递增栈能找到左边第一个比当前元素小的元素; 应用场景 一般用…

19.云原生CICD之ArgoCD入门

云原生专栏大纲 文章目录 ArgoCDArgoCD 简介GitOps介绍Argo CD 的工作流程argocd和jinkens对比kustomize介绍ArgoCD和kustomize关系 安装argocdargocd控制台介绍首页应用创建表单SYNC OPTIONS(同步选项)SYNC POLICY(同步策略) 应…

视频异常检测论文笔记

看几篇中文的学习一下别人的思路 基于全局-局部自注意力网络的视频异常检测方法主要贡献:网络结构注意力模块结构: 融合自注意力和自编码器的视频异常检测主要贡献:网络结构Transformer模块动态图 融合门控自注意力机制的生成对抗网络视频异常…

Kafka框架详解

Kafka 1、Kafka介绍 ​ Kafka是最初由linkedin公司开发的,使用scala语言编写,kafka是一个分布式,分区的,多副本的,多订阅者的消息队列系统。 2、Kafka相比其他消息队列的优势 ​ 常见的消息队列:Rabbit…

【Docker篇】详细讲解容器相关命令

🎊专栏【Docker】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🛸容器🌹相关命令🍔案例⭐创建并运…

大模型微调实战笔记

大模型三要素 1.算法:模型结构,训练方法 2.数据:数据和模型效果之间的关系,token分词方法 3.算力:英伟达GPU,模型量化 基于大模型对话的系统架构 基于Lora的模型训练最好用,成本低好上手 提…

Mysql流程控制函数

1概述 Mysql中的流程控制函数非常重要,可以根据不同的条件,执行不同的流程转换,可以在SQL语句中实现不同的条件选择。MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。 1.1 IF函数 SELECT IF(1 > 0, 正确, 错误);1.2 IFNULL…

ROS第 12 课 Launch 启动文件的使用方法

文章目录 第 12 课 Launch 启动文件的使用方法1.本节前言2.Lanuch 文件基本语法2.2 参数设置2.3 重映射嵌套 3.实操练习 第 12 课 Launch 启动文件的使用方法 1.本节前言 我们在前面的教程里面通过命令行来尝试运行新的节点。但随着创建越来越复杂的机器人系统中,打…

idea运行卡顿优化方案

文章目录 前言一、调整配置1. idea.properties2. idea.vmoptions3.heap size4.Plugins5.Inspections 总结 前言 本人电脑16G内存,处理器i7 10代,磁盘空间也够用,整体配置够用,但运行idea会很卡,记录优化过程&#xff…

【JavaEE】文件操作与IO

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…

vue3+vite:封装Svg组件

前言 在项目开发过程中,以svg图片引入时,会遇到当hover态时图片颜色修改的场景,我们可能需要去引入另一张不同颜色的svg图片,或者用css方式修改,为了方便这种情况,需要封装svg组件来自定义宽高和颜色&…

IaC基础设施即代码:Terraform 进行 lifecycle 生命周期管理

目录 一、实验 1.环境 2.Terraform 创建网络资源 3.Terraform 进行 create_before_destroy(销毁前创建新资源) 4.Terraform 进行 prevent_destroy(防止资源被销毁) 5.Terraform 进行 ignore_changes(忽略资源的差…

记录汇川:H5U与Factory IO测试15

主程序: 子程序: IO映射 子程序: 出料程序 子程序: 视觉判断 子程序: 自动程序 Factory IO配置: 实际动作如下: Factory IO测试15

【本科生机器学习】【北京航空航天大学】课题报告:支持向量机(Support Vector Machine, SVM)初步研究【上、原理部分】

说明: (1)、仅供个人学习使用; (2)、本科生学术水平有限,故不能保证全无科学性错误,本文仅作为该领域的学习参考。 一、课程总结 1、机器学习(Machine Learning, ML&am…

【Docker】安装 Nacos容器并根据Nginx实现负载均衡

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 &…