信息熵、条件熵、信息增益

news2024/11/25 10:51:46

一、信息熵

H(D) = -\sum_{i=1}^{k} p_{i}log p_{i}

p_{i} = \frac{C_{i} }{D}

其中:

p_{i} :样本属于第i个类别的概率

D :总样本数

C_{i}:集合 D 中属于第 i 个类别的样本个数

二、条件熵

H(D | A) = \sum_{v=1}^{V} \frac{|D^{v}|}{|D|}H(D^{v})

其中: 

V:属性 A 的取值个数

D^{v}:选出属性 A 取值等于 v 的样本集合

三、信息增益 

信息增益指的是在划分数据集前后,类别标签的混乱程度发生的减少的程度,信息增益越大,说明使用该属性进行划分可以获得更多的信息,可以更好地区分不同的类别。

信息增益  =  信息熵 - 条件熵

Gain(D,A) = H(D) - H(D|A)

四、示例

假设我们有一个关于动物的数据集,其中包含7个样本,每个样本有4个属性:是否有翅膀、是否有爪子、是否会游泳和是否有鳞片,以及一个类别标签,表示该动物属于哪一类别(例如,鱼类、鸟类、哺乳类等)。数据集如下:

使用ID3算法来构建决策树。

1、计算整个数据集的信息熵,公式为:H(D) = -\sum_{i=1}^{k}p_i log_{2}^{p_i}

2、其中,k表示类别的个数,p_i表示样本属于第i个类别的概率。

在本例中 k=3

p_1=\frac{3}{7}

p_2=\frac{2}{7}

p_3=\frac{2}{7}

因此,整个数据集的信息熵为H(D) = -\frac{3}{7}log_2^\frac{3}{7} -\frac{2}{7}log_2^\frac{2}{7} -\frac{2}{7}log_2^\frac{2}{7}

3、接下来,计算每个属性的信息增益。以是否有翅膀为例,计算其信息增益的公式为:

Gain(A) = H(D) - \sum_{v=1}^{V} \frac{|D^v|}{|D|} H(D^v)

其中:

A表示属性

V表示属性 A 的取值个数

D^v表示选出属性 A 取值等于 v 的样本集合

在本例中,是否有翅膀有两个取值,即是和否,因此 V=2 。我们可以根据数据集中是否有翅膀的取值,将数据集划分为两个子集:

  • 子集1:是否有翅膀=是。该子集有3个样本,其中2个属于鸟类,1个属于哺乳类。
  • 子集2:是否有翅膀=否。该子集有4个样本,其中2个属于哺乳类,2个属于鱼类。

计算子集1和子集2的信息熵

H(D^{wing=1}) = -\frac{2}{3}log_2\frac{2}{3} -\frac{1}{3}log_2\frac{1}{3}

H(D^{wing=0}) = -\frac{1}{2}log_2\frac{1}{2} -\frac{1}{2}log_2\frac{1}{2}

因此,计算是否有翅膀的信息增益为:

Gain(wing) = H(D) - \frac{3}{7}H(D^{wing=1}) - \frac{4}{7}H(D^{wing=0})

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

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

相关文章

安全防御 --- IPSec理论(03)

DPD 死亡对等体检测(dead peer detection),检查对端IKE SA(iskmp sa)是否存在。当隧道出现异常,检测出异常重新发起协商,维持隧道。 作用:DPD解决隧道黑洞问题,用于检查…

Docker搭建Hadoop集群

目录 1.拉取centos镜像 2.基础镜像配置(基于centos构建hadoopbase镜像) 3.集群环境配置 1.创建3个容器 2.配置网络 3.配置主机和ip的映射关系 4.配置3个节点的免密登录 4.搭建hadoop集群 1.安装hadoop 2.修改配置文件 3.分发Hadoop及配置文件my_env.sh 5.启动集群 …

使用CLion创建Cmake项目,使用GoogleTest和GoogleMock对代码进行测试

文章目录 1、环境准备2、CLion创建项目3、编写测试用例4、复杂测试用例 1、环境准备 注意版本匹配,我本地是g 8.1.0 的,最开始装了GoogleTest最新版1.10.0结果发现不能用,又回去下载旧的版本。g 8.1.0 应该可以使用 Google Test 1.8.1 版本。…

HLW8032交流电参数模块采样原理讲解

目录 一、文章概述 二、采样说明 1.采样方式 1.1隔离采样 电流型电压互感器: 1.2非隔离采样 2.采样范围 3.采样精度 三、数据说明 四、HLW8032模块说明 一、文章概述 本博文主要讲解HLW8032交流电参数模块的采样原理以及设计说明,才疏学浅&am…

微服务系列文章之 SpringCloud面试

1、什么是 Spring Cloud? Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。 2、使…

团体程序设计天梯赛-练习集L2篇⑦

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

奇异值分解MVDR算法功率谱估计MATLAB完整程序分享

clear ;close all;clc; 产生输入信号 N 1024; %样本点数 snr[20 25 30]; %信噪比 n0:N-1; %数据轴 g100; %蒙特卡诺仿真次数 M14; %阶数 Pmvdr_szeros(3,1024); %存放MVDR谱 signal1 exp(1i*0.1…

Oracle-DG备库应用查询不到数据问题处理

背景: 一套准备上线的Oracle 11G RAC主备集群,应用报告说部分模块测试发现在备库查不到新插入的数据,而且问题发生的频率很高,需确认主备之间同步是否存在问题,此套主备之间同步采用SYNCAFFIRM模式 问题分析: 接到问题之后&#…

2022(二等奖)C2464植物保护管理系统

作品介绍 一、需求分析 1. 应用背景 森林是陆地生态系统的主体,是人类生存与发展的物质基础。以森林为主要经营对象的林业,不仅承担着生态建设的主要任务,而且承担着提供多种林产品的重大使命。进入21世纪,人类正在继农业文明和…

libevent(12)bufferevent的基础知识

一、bufferevent的基本概念 bufferevent 是 libevent 中的一个事件缓冲 IO,内部实现了基本 socket recv/send 操作 ,用户只需要调用 bufferevent 的 API 即可实现数据的读写。 (1)缓冲区:每个 bufferevent 都有一个读…

Effective第三版 中英 | 避免使用终结方法和清理方法

文章目录 Effective第三版前言避免使用终结方法和清理方法(Avoid finalizers and cleaners)总结 Effective第三版 前言 大家好,这里是 Rocky 编程日记 ,喜欢后端架构及中间件源码,目前正在阅读 effective-java 书籍。…

基于SpringBoot+vue的家乡特色推荐系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【C语言督学训练营 第十五天】常用的查找算法----顺序查找、二分查找、二叉排序树

文章目录 前言一、顺序查找1,思想2.代码实战 二、二分查找1.思想2.代码实战 三、二叉排序树1.建树思想2.删除节点思想3.代码实战 考研真题实战 前言 本篇博客会介绍到数据结构中常用到的查找算法,合理的使用查找算法可以让我们很轻松找到自己想要的答案。本小节必须…

Java异常面试题

什么是Java异常机制 Java异常机制是java语言为我们提供一种异常处理机制,在java语言中,异常本身是一个类,产生异常就是创建异常对象并抛出这个异常对象,程序发生异常情况之后程序会抛出封装了错误信息的异常对象,程序…

python-线性规划

线性规划:定义:1 线性规划(Linear programming,简称LP),是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,是辅助人们进行科学管理的一种数学方法,是研究线性约束条件下线性…

WPF 零基础入门笔记(2):控件模板+数据模版

文章目录 文章合集地址WPF控价模版解决重复嵌套标签书写的问题实战 WPF数据绑定解决界面和业务数据沟通的问题 WPF数据模版数据模板解决数据的样式设置(以CellTemplate为例)数据模板和控件模板的区别ItemTemplate 元素模板ItemTemplate是用于绝大部分控件…

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN ? 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

UFS 13 - Logical Unit Management

UFS 13 - Logical Unit Management 1 Introduction2 Logical Unit features3 Logical Unit Configuration 基于UFS 3.1 标准文档阐述 UFS 1-UFS架构简介1 UFS 2 -UFS架构简介2 UFS 3 - UFS RPMB UFS 4 - UFS Boot UFS 5 - UFS UIC Layer: MIPI M-PHY UFS 6 - UAP – SCSI Comma…

机器人工程创新类课程补充说明-2023-2

仅供参考 之前一篇:机器人工程创新类课程补充说明-2023- 自主学习→自主研究→自主创新,这是一个循序渐进的过程,着急没用的,大部分学生,都卡在第一个阶段,自主学习的效率比较低,并且成果不突出…

【C++ 程序设计】第 6 章:多态与虚函数

目录 一、多态的基本概念 (1)多态 (2)虚函数 (3)通过基类指针实现多态 (4)通过基类引用实现多态 (5)* 多态的实现原理 二、多态实例 三、多态的使用 …