决策树(1)

原理

基础概念

决策树属于判别模型。

决策树算法属于监督学习方法。

决策树是一种树状结构,通过做出一系列决策(选择)来对数据进行划分,这类似于针对一系列问题进行选择。

决策树的决策过程就是从根节点开始,测试待分类项中对应的特征属性,并按照其值选择输出分支,直到叶子节点,将叶子节点的存放的类别作为决策结果。

决策树算法是一种归纳分类算法,它通过对训练集的学习,挖掘出有用的规则,用于对新数据进行预测。

决策树归纳的基本算法是贪心算法,自顶向下来构建决策树。

在决策树的生成过程中,分割方法即属性选择的度量是关键。

08c0588bb7c14b4794c1c7f8e069cf86.png 

决策树分类 

分类树:分类树的目标变量是确定的,分类的。分类树被用来去预测不同的类别。图1就是一个简单的分类树的例子,我们的目标预测为是否选择作为男朋友。分类树不局限于二元分类,多元分类也是可行的。

回归树:回归树就是当目标变量是数值的时候。举一个例子,比如你想预测一个房子的卖价,这就是一个连续的数值变量。 

决策树的特点

优点

推理过程容易理解,计算简单,可解释性强。

比较适合处理有缺失属性的样本。

可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。

缺点

容易造成过拟合,需要采用剪枝操作。

忽略了数据之间的相关性。

对于各类别样本数量不一致的数据,信息增益会偏向于那些更多数值的特征。

决策树的三种基本类型 

e07e92ce711342b8b1b844eb185aeef7.png 

ID3算法

基础概念

ID3 算法是以信息论为基础,以信息增益为衡量标准,从而实现对数据的归纳分类。

在信息论中,期望信息越小(熵),那么信息增益就越大,从而纯度就越高。ID3算法的核心思想就是以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分裂。该算法采用自顶向下的贪婪搜索遍历可能的决策空间; 在信息增益中,重要性的衡量标准就是看特征能够为分类系统带来多少信息,带来的信息越多,该特征越重要。

ID3算法的做法是每次选取当前最佳的特征来分割数据,并按照该特征的所有可能取值来切分。

算法步骤 

其大致步骤为:

1.初始化特征集合和数据集合。

2.计算数据集合信息熵和所有特征的条件熵,选择信息增益最大的特征作为当前决策节点。

3.更新数据集合和特征集合(删除上一步使用的特征,并按照特征值来划分不同分支的数据集合)。

4.重复 2,3 两步,若子集值包含单一特征,则为分支叶子节点。

信息熵

ID3算法使用信息增益为准则来选择划分属性,"信息熵"是度量样本结合纯度的常用指标,集合信息的度量方式称为香农熵或者简称为熵,这个名字来源于信息论之父克劳德·香农。熵定义为信息的期望值。在信息论与概率统计中,熵是表示随机变量不确定性的度量。在明确熵的概念之前,我们需要知道信息的定义,如果待分类的事物可能划分在多个分类之中,则符号的信息定义为 :eq?l%28x_%7B_i%7B%7D%7D%29%3D-%5Clog_%7B2%7Dp%28x_%7B_i%7B%7D%7D%29。其中eq?p%28x_%7Bi_%7B%7D%7D%29是选择该分类的概率。

通过上式,我们可以得到所有类别的信息。香农用信息熵的概念来描述信息源的不确定程度。信息熵越大,不纯度越高,即不确定性越大;信息熵越小,纯度越高。

信息熵的公式如下:eq?H%28X%29%3D-%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7DP%28x_%7Bi_%7B%7D%7D%29%5Clog%20P%28x_%7Bi_%7B%7D%7D%29。需要注意的是:熵只依赖于X的分布,而与X的取值无关。在分类任务中,eq?P%28x_%7Bi_%7B%7D%7D%29表示分类的类型所占的比例。

进一步理解,根据公式eq?H%28X%29%3D-%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7DP%28x_%7Bi_%7B%7D%7D%29%5Clog%20P%28x_%7Bi_%7B%7D%7D%29,假如是 2 分类问题,当 A 类和 B 类各占 50% 的时候,可算得结果为1。当只有 A 类,或只有 B 类的时候,结果为0。所以当信息熵最大为1的时候,是分类效果最差的状态,当它最小为0的时候,是完全分类的状态。

f4eab5473ae040f8bf7d280d52ab5c9d.png

条件熵

原概念

H(Y|X)表示在已知随机变量 X 的条件下随机变量 Y 的不确定性。

条件熵 H(Y|X)定义为 X 给定条件下 Y 的条件概率分布的熵对 X 的数学期望:eq?H%28Y%7CX%29%3D%5Csum_%7Bi%3D1%7D%5E%7Bn%7Dp_%7Bi%7DH%28Y%7CX%3Dx_%7Bi%7D%29  eq?p_%7Bi%7D%3DP%28X%3Dx_%7Bi%7D%29%2Ci%3D1%2C2%2C...%2Cn

在ID3算法中的条件熵

eq?H%28D%7CA%29%3D%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%5Cfrac%7B%7CD_%7Bi%7D%7C%7D%7B%7CD%7C%7DH%28D_%7Bi%7D%29   eq?H%28D_%7Bi%7D%29%3D%5Csum_%7Bk%3D1%7D%5E%7BK%7D%5Cfrac%7B%7CC_%7Bk%7D%7C%7D%7B%7CD_%7Bi%7D%7C%7D%5Clog_%7B2%7D%5Cfrac%7B%7CC_%7Bk%7D%7C%7D%7B%7CD_%7Bi%7D%7C%7D 

A是特征,i是特征取值, eq?H%28D_%7Bi%7D%29是为当取第i个特征时分类的信息熵 

391c0f0bd793455e808170f90c079a97.png

信息增益

信息熵:表示随机变量的不确定性。 条件熵:在一个条件下,随机变量的不确定性。信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。信息增益是相对于特征而言的。

信息增益:信息熵 - 条件熵。表示在一个条件下,信息不确定性减少的程度。 如果选择一个特征后,信息增益最大(信息不确定性减少的程度最大),那么我们就选取这个特征。即表示由于该特征使得对数据集的分类的不确定性减少的程度。

信息增益偏向取值较多的特征。即当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分之后的熵更低,由于划分前的熵是一定的,因此信息增益更大,因此信息增益偏向取值较多的特征。

信息增益越大,表示使用该属性划分样本集D的效果越好,因此ID3算法在递归过程中,每次选择最大信息增益的属性作为当前的划分属性。

ID3算法缺点

  1. 缺点 ID3 没有剪枝策略,容易过拟合;

  2. 信息增益准则对可取值数目较多的特征有所偏好,因为更多取值情况代表了树要分裂非常多的叶子结点,并且每个叶子结点上的样本数很少,越小的数据自己其"纯度"显然越容易高,导致了信息增益会很大;

  3. 只能用于处理离散分布的特征并且只能处理分类问题;

  4. 没有考虑缺失值;

  5. 训练决策树通常是很耗时间的,因为熵计算比较耗时。

 

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

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

相关文章

UNION 联合查询

1.UNION ALL联合查询 同样为了演示方便,先向 teacher 表插入多条测试数据: INSERT INTO teacher (name,age,id_number,email) VALUES (姓名一,17,42011720200604077X,NULL), (姓名二,18,42011720200604099X,123qq.com), (姓名三,19,42011720200604020X…

007、链表的回文结构

0、题目描述 链表回文结构 1、法1 一个复杂的问题可以拆解成几个简单的问题,找中间节点和逆置链表(翻转链表)之前都做过。 class PalindromeList { public://1、找中间节点ListNode* FindMid(ListNode* A){if (A nullptr || A->next …

流程图 LogicFlow

流程图 LogicFlow 官方文档&#xff1a;https://site.logic-flow.cn/tutorial/get-started <script setup> import { onMounted, ref } from vue import { forEach, map, has } from lodash-es import LogicFlow, { ElementState, LogicFlowUtil } from logicflow/core …

Jmeter监控服务器性能

目录 ServerAgent 安装 打开Jmeter ServerAgent 在Jmeter上监控服务器的性能比如CPU&#xff0c;内存等我们需要用到ServerAgent&#xff0c;这里可以下载我分享 ServerAgent-2.2.3.zip 链接: https://pan.baidu.com/s/1oZKsJGnrZx3iyt15DP1IYA?pwdedhs 提取码: edhs 安装…

FPGA图像处理之均值滤波

文章目录 一、什么是图像滤波&#xff1f;1.1 噪声类型1.2 滤波类型 二、均值滤波原理2.1 3*3窗口滑动过程2.2 图像扩展 三、Matlab实现均值滤波四、FPGA实现均值滤波4.1 生成 3*3 矩阵4.2 仿真3*3矩阵4.3 计算均值4.4 仿真均值滤波 一、什么是图像滤波&#xff1f; 图像滤波是…

得物App3D创新应用引关注,世界设计之都大会启幕

近日&#xff0c;2024世界设计之都大会&#xff08;WDCC&#xff09;在上海盛大启幕。此次大会以“设计无界 新质生长”为主题&#xff0c;汇聚了全球设计领域的精英与前沿成果&#xff0c;展现了设计作为新质生产力的巨大潜力。主场展览占据了整整3个楼面&#xff0c;总面积达…

C#学习笔记(十)

C#学习笔记&#xff08;十&#xff09; 第七章 对象的构造方法与实例方法一、对象的构造方法1. 构造方法初识2. 构造方法的创建3. this关键字4. 构造方法的规范和重载4.1 构造方法的规范 5. 对象初始化器5.1 对象初始化器和构造方法的区别 二、对象的实例方法1. 简单应用2.实例…

代码随想录算法训练营第二天(补) | 滑动窗口、模拟、前缀和

目录 3.4 长度最小的子数组 3.5螺旋矩阵II 3.6 区间和 文章讲解&#xff1a;[58. 区间和 | 代码随想录 3.4 长度最小的子数组 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;拿下滑动窗口&#xff…

Linux历史

Linux 于 1991 年由芬兰学生 Linus Torvalds 作为个人项目开始&#xff0c;旨在创建一个新的免费操作系统内核。在其历史发展中&#xff0c;Linux 内核经历了持续的增长。自 1991 年首次发布源代码以来&#xff0c;Linux 内核从少量的 C 语言文件&#xff0c;且受限于禁止商业发…

机器视觉基础系列四—简单了解背景建模算法

机器视觉基础系列四—简单了解背景建模算法 首先我们应该了解的是背景建模的定义是什么&#xff1f;又有哪些应用场景呢&#xff1f; 背景建模是指通过分析视频序列中的像素值变化情况&#xff0c;从中提取出静态背景部分&#xff0c;并将其用于目标检测、运动跟踪等计算机视觉…

渗透测试导论

渗透测试的定义和目的 渗透测试&#xff08;Penetration Testing&#xff09;是一项安全演习&#xff0c;网络安全专家尝试查找和利用计算机系统中的漏洞。 模拟攻击的目的是识别攻击者可以利用的系统防御中的薄弱环节。 这就像银行雇用别人假装盗匪&#xff0c;让他们试图闯…

LeetCode1004.最大连续1的个数

题目链接&#xff1a;1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; 1.常规解法&#xff08;会超时&#xff09; 遍历数组&#xff0c;当元素是1时个数加一&#xff0c;当元素是0时且已有的0的个数不超过题目限制时&#xff0c;个数加一&#xff0c;若上…

Lumerical学习——优化和参数扫描(Optimization and parameter sweeps)

一、概要介绍 这部分介绍优化和参数扫描项目设定的方法。在有大量数据模拟计算过程中这个特性允许用户使处理方法自动地查找期望的参数值。 ① 创建一个参数扫描任务 ② 创建一个优化任务 ③ 创建一个良率分析任务 ⑤ 打开所选择项目的编辑窗口&#xff0c;编辑其属性…

基于Java+SpringBoot+Uniapp的博客系统设计与实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

嵌入式C++中内存分配基本实现方法

大家好,今天主要给大家分享一下,如何使用计算机中的内存空间进行分配,观察具体现象。 第一:C语言动态空间分配方式 第二:C++中动态内存分配方法 new 可以自动计算数据类型的大小 与 类型的转换 malloc 只能手动进行。 2.new 可以在分配空间的时候初始化 malloc 不行。 第三…

【优选算法】——双指针(上篇)!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C刷题算法总结&#x1f516;克心守己&#xff0c;律己则安 目录 前言&#xff1a;双指针 1. 移动零&#xff08;easy&#xff09; 2. 复写零&#xff08;easy&#xff09; 3…

计数型信号量

一&#xff0c;什么是计数型信号量&#xff1f; 计数型信号量相当于队列长度大于1 的队列&#xff0c;因此计数型信号量能够容纳多个资源&#xff0c;这在计数型信号量被创建的时候确定的。 计数型信号量相关 API 函数 函数描述xSemaphoreCreateCounting()使用动态方法创建计数…

工业相机详解及选型

工业相机相对于传统的民用相机而言&#xff0c;具有搞图像稳定性,传输能力和高抗干扰能力等&#xff0c;目前市面上的工业相机大多数是基于CCD&#xff08;Charge Coupled Device)或CMOS(Complementary Metal Oxide Semiconductor)芯片的相机。 一&#xff0c;工业相机的分类 …

Java 虚拟机实战(基础篇 1万字)

此笔记来自于黑马程序员 基础篇 初识 JVM(Java Virtual Machine) 什么是 JVM JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行 Java 字节码文件 JVM 的功能 翻译成字节码 即时编译 Java语言如果不做任何优化&#xff0c;性能不如C、C等语言。Java 支持跨…

嬴图 | 图数据库系列 之 图算法与可解释性

2024年诺贝尔物理学奖颁发给了机器学习与神经网络领域的研究者&#xff0c;这是历史上首次出现这样的情况。这项奖项原本只授予对自然现象和物质的物理学研究作出重大贡献的科学家&#xff0c;如今却将全球范围内对机器学习和神经网络的研究和开发作为了一种能够深刻影响我们生…