决策树的分类

概念

决策树是一种树形结构

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

决策树的建立过程

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.mzph.cn/news/637632.shtml

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

相关文章

《ORANGE’S:一个操作系统的实现》读书笔记(三十五)内存管理(三)

内存管理到目前为止实现了fork()、exit()和wait(),而我们的目标是实现一个可以执行命令的shell,可无论Init进程fork出多少进程,它也都只是Init而已。所以我们还需要一个系统调用,它就是exec(),这篇文章就来记录exec()的…

最长公共前缀(Leetcode14)

例题: 分析: 我们可以先定义两个变量 i , j, j表示数组中的每一个字符串, i 表示每个字符串中的第几个字符。一列一列地进行比较,先比较第一列的字符,若都相同,则 i ,继…

成功解决「MySQL问题1」启动mysql时:发生系统错误5拒绝访问

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) ✈️公众号 | 热爱技术的小郑 。文章底部有个人公众号二维码。回复 Java全套视频教程 或 前端全套视频教程 即可获取 300G 教程资…

【数据结构】 顺序表的基本操作 (C语言版)

一、顺序表 1、顺序表的定义: 线性表的顺序存储结构,即将表中的结点按逻辑顺序依次存放在一组地址连续的存储单元里。这种存储方式使得在逻辑结构上相邻的数据元素在物理存储上也是相邻的,可以通过数据元素的物理存储位置来反映其逻辑关系。…

漫漫数学之旅009

文章目录 经典格言数学习题古今评注拓展学习(一)大数定理(二)伯努利级数 经典格言 真正的问题,不在于机器是否思考,而在于人们是否思考。——BF斯金纳(B. F. Skinner) BF斯金纳&…

2024首更---Web Service 教程

Web Services 简介 Web Services 可使您的应用程序成为 Web 应用程序。 Web Services 通过 Web 进行发布、查找和使用。 您应当具备的基础知识 在继续学习之前,您需要对下面的知识有基本的了解: HTMLXML 如果您希望首先学习这些项目,请在…

2024年华数杯国际赛A题:放射性废水处理建模 思路模型代码解析

2024年华数杯国际赛A题:放射性废水处理建模(Radioactive Wastewater from Japan) 一、问题描述 2011年3月,日本东海岸发生了地震,引发了福岛第一核电站事故,导致三个核反应堆熔毁,并在一场巨大…

[java基础揉碎]基本数据类型转换

介绍 当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型, 这个就是自动类型转换。 数据类型按精度(容量)大小排序为: 自动类型转换注意和细节 1.有多种类型的数据混合运算时,系统首先自动…

如何在浏览器上设置 VPN 网络虚拟专用网络

如何在DT浏览器上设置 VPN 网络 虚拟专用网络(VPN)是一种用公用网络架设专用网络的技术。如何在DT浏览器上设置 VPN 呢,先下载DT浏览器,建议在官方网站下载最新版,安装,在DT浏览器首页点更多,网…

php基础学习之变量

php使用变量的必要性 PHP 是一种动态网站开发的脚本语言,动态语言特点是交互性,会有数据的传递,而 PHP作为“中间人”,需要进行数据的传递,传递的前提就是 PHP 能自己存储数据(临时存储) php变量的使用 定义&#xf…

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

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

使用 Node 创建 Web 服务器

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下: var http require(http); 以下是演示一个最基本的 HTTP 服务器架构(使用 8080 端口)&#x…

Python实现稳健线性回归模型(rlm算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 稳健回归可以用在任何使用最小二乘回归的情况下。在拟合最小二乘回归时,我们可能会发现一些…

python写完程序怎么运行

python有两种运行方式,一种是在python交互式命令行下运行; 另一种是使用文本编辑器直接在命令行上运行。 注:以上两种运行方式均由CPython解释器编译运行。 当然,也可以将python代码写入eclipse中,用JPython解释器运行&#xff0c…

Spring MVC的原理

Spring MVC中的MVC即模型-视图-控制器,该框架围绕一个DispatcherServlet设计而成,DispatcherServlet会把请求分发给各个处理器,并支持可配置的处理器映射和视图渲染等功能。Spring MVC的具体工作流程如下: (1&#xff…

微服务不死 — 共享变量在策略引擎项目的落地详解

01 背景 1、共享变量的提出 前段时间,来自亚马逊 Prime Video 团队的一个案例研究在开发者社区中掀起了轩然大波。大体是这样一件事,作为一个流媒体平台,Prime Video每天都会向客户提供成千上万的直播流。为了确保客户无缝接收内容&#xff0…

【动态规划】【数学】【C++算法】805 数组的均值分割

作者推荐 【动态规划】【数学】【C算法】18赛车 本文涉及知识点 动态规划 数学 805 数组的均值分割 给定你一个整数数组 nums 我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) average(B)…

Java基础(2)

一 String、StringBuffer、StringBuilder String 为什么要设计成不可变的? String是不可变的(修改String时,不会在原有的内存地址修改,而是重新指向一个新对象),String用final修饰,不可继承&…

两个bbox的IoU计算步骤分析

IoU:交并比,数值上等于交集面积除以并集面积。 两个bbox的位置关系无外乎以上三种情况:(1)部分相交。(2)不相交。(3)包含。 计算步骤: 计算交集&#xff08…

操作系统-操作系统引导(磁盘 操作系统引导过程)

文章目录 总览一个刚买来的磁盘(硬盘)往磁盘安装操作系统后操作系统引导过程例:windows操作系统的初始化程序 总览 一个刚买来的磁盘(硬盘) 此时空空如也 往磁盘安装操作系统后 操作系统在C盘 主引导记录不属于某…