决策树 ID3 算法

ID3 算法

ID3 算法

  • ID3 算法最早是由罗斯昆 (J.Ross Quinlan) 于1975年提出的一种决策树构建算法,算法的核心是“信息熵”,期望信息越小,信息熵越大,样本纯度越低。。
  • ID3 算法是以信息论为基础,以信息增益为衡量标准,从而实现对数据的归纳分类
  • ID3 算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定的测试属性。

ID3 算法步骤:

  • 1.初始化特征集合和数据集合
  • 2.计算数据集合信息和所有特征的条件熵,选择信息增益最大的特征作为当前决策节点
  • 3.更新数据集合和特征集合(删除上一步使用的特征,并按照特征值来划分不同分支的数据集合)
  • 4.重复 2,3 两步,若子集值包含单一特征,则为分支叶子节点。

信息熵

H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ log ⁡ 2 ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^{K} \frac{\left|C_{k}\right|}{|D|} \log _{2} \frac{\left|C_{k}\right|}{|D|} H(D)=k=1KDCklog2DCk

K是类别,D是数据集, C k C_{k} Ck是类别K下的数据集

条件熵

H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) H(D | A)=\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} H\left(D_{i}\right) H(DA)=i=1nDDiH(Di)
A是特征,i是特征取值

信息增益(ID3)

g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D, A)=H(D)-H(D|A) g(D,A)=H(D)H(DA)

特征选择的目的在于选取对训练数据能够分类的特征,关键是其准则

样本集合 D D D对特征 A A A的信息增益(ID3)

g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D, A)=H(D)-H(D|A) g(D,A)=H(D)H(DA)

其中, H ( D ) H(D) H(D)是数据集 D D D的熵, H ( D i ) H(D_i) H(Di)是数据集 D i D_i Di的熵, H ( D ∣ A ) H(D|A) H(DA)是数据集 D D D对特征 A A A的条件熵。 D i D_i Di D D D中特征 A A A取第 i i i个值的样本子集, C k C_k Ck D D D中属于第 k k k类的样本子集。 n n n是特征 A A A取 值的个数, K K K是类的个数。

ID3 算法缺点

ID3 没有剪枝策略,容易过拟合
信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1
只能用于处理离散分布的特征没有考虑缺失值

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

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

相关文章

一位半加法器,一位全加器,四位全加器

我们这里的加法器只考虑一位的情况。 当我们两个一位相加的话,那么就有两个输入,两个输出,两个输入很好理解,就是两个个位上的数字,0或者是1,那么为什么需要有有个输出呢?难道不是输出一个数就…

【3】PyQt文本和图片

1. 文本控件 文本控件是QLabel from PyQt5.QtWidgets import QWidget, QApplication, QLabel import sys# 1.创建应用程序 app QApplication(sys.argv)# 2.创建窗口 w QWidget()# 修改窗口标题 w.setWindowTitle(文本展示)# ---------------------------------------------…

【Trino权威指南(第二版)】Trino介绍:trino解决大数带来的问题

文章目录 一. 大数据带来的问题二. Trino来救场1. 为性能和规模而生2. SQL-on-Anything3. 数据存储与查询计算资源分离 三. Trino使用场景 一. 大数据带来的问题 数据现状 数据存储机制日益多样:关系型数据库、NoSQL数据库、文档数据库、键值存储和对象存储系统等。…

SpringBoot拦截器、过滤器、自定义注解、监听器、全局异常-使用详解

一、拦截器 用springboot实现一个简单的拦截器 在Spring Boot中实现一个简单的拦截器涉及几个步骤。首先,你需要创建一个拦截器类,然后将其注册到Spring MVC的拦截器注册表中。下面是一个基本的例子来指导你如何操作: 1. 创建拦截器类 这个…

uniapp 云打包 生成安卓证书文件

现在使用uniapp来开发小程序,H5,APP越来越多了,目前开发了一款APP,使用的也是uniapp。在此记录下用uniapp开发app云打包时约到的一些问题吧。 前因是我司安卓同学休产假,像云打包时需要的证书文件只能自己动手来搞。看…

index加上alias

查询index记录 POST prod-lumi-demo3-alias*/_search {"size": 1000,"query": {"match_all": {}},"sort": [{"ts": {"order": "desc"}}] }给指定index加上或者删除某一alias POST /_aliases {"a…

【C语言】【二级】移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后...

题目 请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p, p小于等于n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10…

算法-贪心思想

贪心的思想非常不好解释,而且越使用权威的语言解释越难懂。而且做题的时候根据自己的理解可能直接做出来,但是非要解释一下怎么使用的贪心的话,就懵圈了。一般来说,贪心的题目没有固定的套路,一题一样,不过…

了解应用层的HTTP协议与HTTPS协议,在常规请求的应用中Get与Post的区别

一、HTTP协议 1、http协议的特性2、http协议的请求 请求行 GET请求POST 请求(人脸识别方案)两个请求的区别本质区别: (1)url 携带的参数是否可见:(2)参数传递方式(3)缓存性&#xf…

Java Socket编程:实现网络通信

引言: 在当今数字化时代,网络通信已经成为了人们生活中不可或缺的一部分。Java Socket编程是一种基于TCP/IP协议的网络通信技术,通过它我们可以实现不同计算机之间的数据传输和通信。本文将介绍Java Socket编程的基本概念、原理和实现方法&am…

【Maven】清理 maven 仓库

初始情况下,我们的本地仓库是没有任何jar包的,此时会从私服去下载(如果没有配置,就直接从中央仓库去下载)。 可能由于网络的原因,jar包下载不完全,这些不完整的jar包都是以lastUpdated结尾。此…

rsync 一个可以让你抛弃scp的工具

目录 1. 基本语法 2. 例子 本地同步 本地同步并压缩传输 本地同步仅复制更新过的文件 本地同步保留软链接 通过SSH进行远程同步 模拟执行同步 3. 注意事项 rsync(Remote Sync)是一个用于在本地和远程系统之间同步文件和目录的工具。它使用一个远…

JVM arthas下载工具

工具下载地址 链接:https://pan.baidu.com/s/1qkn9HabhuwTiwbKVQ7BXnA?pwdv5ww 提取码:v5ww 启动语句 java -jar arthas-boot.jar输入你的线程,这里是2 dashboardJVM优化 堆的初始大小 最大大小 年轻代的大小 线程栈大小 新生代、伊甸…

娱乐类直播平台

娱乐类直播是一种以娱乐为主要内容的直播形式,包括音乐、舞蹈、游戏、搞笑、访谈等。这种直播形式通常由主播在平台上进行表演,吸引观众的关注和互动。 在娱乐类直播中,主播通常会通过展示自己的才艺、技能或者与观众进行互动来吸引关注。一…

vue-cli创建项目运行报错this[kHandle] = new _Hash(algorithm, xofLen);(完美解决)

1:问题出现的原因 出现这个问题是node.js 的版本问题,因为 node.js V17开始版本中发布的是OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在使用 nodejs V17以上版本后会报错。…

聊天注意事项

聊天成功的核心就是双方都能舒服 有些人不会聊天是缺乏引导性 聊天聊两句话就没了 聊天要把话题引导向对方 从倾诉者变为倾听者 才能不断交流 沟通不是一个人的独角戏 每个人都渴望被理解 要注意倾听别人说的话 不要只顾自己说一大堆,别人都瞌睡了 不要查户口式问…

flask web学习之flask与http(一)

文章目录 一、请求响应循环二、HTTP请求1. 请求报文2. request对象3. 在flask中处理请求3.1 路由匹配3.2 设置监听的http方法3.3 URL处理 三、请求钩子 一、请求响应循环 每一个web应用都包含这种处理方式,请求-响应循环:客户端发出请求,服务…

rvos 3编译与链接

做下面的两个练习需要: 在vmvb上装一个ubuntu会gcc、vi的基本使用 用vi写一个hello.cgcc -o hello.creadelf -h hello.oreadelf -S hello.oobjdump -S hello.o 用vi编辑一个test.cgcc -c test.creadelf -S test.o.text:代码 .data:初始化的全局变量和静态变量…

MYSQL练题笔记-高级查询和连接-连续出现的数字

一、题目相关内容 1)相关的表和题目 2)帮助理解题目的示例,提供返回结果的格式 二、自己初步的理解 其实这一部分的题目很简单,但是没啥思路啊,怎么想都想不通,还是看题解吧,中等题就是中等题…

力扣215. 数组中的第K个最大元素

堆排序 前言 面试中著名的 TopK 排序;常见的解法有冒泡排序、堆排序;更深入的思路可以参考:拜托,面试别再问我TopK了!!!使用了堆排序的算法,关于堆可以参考:堆数据结构的…