信息熵和条件熵的计算

信息熵和条件熵的计算机器学习 信息理论 信息熵与条件熵



表1. 目标值为PlayTennis的14个训练样例

Day Outlook Temperature Humidity Wind PlayTennis
D 1 D_1 D1 Sunny Hot High Weak No
D 2 D_2 D2 Sunny Hot High Strong No
D 3 D_3 D3 Overcast Hot High Weak Yes
D 4 D_4 D4 Rain Mild High Weak Yes
D 5 D_5 D5 Rain Cool Normal Weak Yes
D 6 D_6 D6 Rain Cool Normal Strong No
D 7 D_7 D7 Overcast Cool Normal Strong Yes
D 8 D_8 D8 Sunny Mild High Weak No
D 9 D_9 D9 Sunny Cool Normal Weak Yes
D 10 D_{10} D10 Rain Mild Normal Weak Yes
D 11 D_{11} D11 Sunny Mild Normal Strong Yes
D 12 D_{12} D12 Overcast Mild High Strong Yes
D 13 D_{13} D13 Overcast Hot Normal Weak Yes
D 14 D_{14} D14 Rain Mild High Strong No

如表1所示,目标值是:PlayTennis,也就是是否打球。
表1中有四个特征,分别是天气(Outlook)、温度(Temperature)、湿度(Humidity)以及风(Wind)。

 

1. 信息熵

以表1为例,设是否打球这一随机变量为 Y Y Y,则
p ( Y = Yes ) = 9 14 p(Y = \text{Yes}) = \frac{9}{14} p(Y=Yes)=149
p ( Y = No ) = 5 14 p(Y = \text{No}) = \frac{5}{14} p(Y=No)=145
所以,
H ( Y ) = − ∑ y ∈ Y p ( y ) log ⁡ p ( y ) = − ( p ( Y = Yes ) ∗ log ⁡ p ( Y = Yes ) + p ( Y = No ) ∗ log ⁡ p ( Y = No ) ) = − ( 9 14 ∗ log ⁡ 2 9 14 + 5 14 ∗ log ⁡ 2 5 14 ) = 0.9403 \begin{aligned} H(Y) &= – \sum_{y \in Y} p(y) \log p(y) \\ &= – ( p(Y=\text{Yes}) \ast \log p(Y=\text{Yes}) + p(Y=\text{No}) \ast \log p(Y=\text{No}) ) \\ &= – ( \frac{9}{14} \ast \log_2 \frac{9}{14} + \frac{5}{14} \ast \log_2 \frac{5}{14}) \\ &= 0.9403 \end{aligned} H(Y)=yYp(y)logp(y)=(p(Y=Yes)logp(Y=Yes)+p(Y=No)logp(Y=No))=(149log2149+145log2145)=0.9403




2. 条件熵

条件熵表示在条件 X X X Y Y Y的信息熵。
公式如下:
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) H(Y|X) = \sum_{x \in X} p(x) H(Y|X=x) H(YX)=xXp(x)H(YX=x)

在表1的例子中,设湿度(Humidity)为随机变量 X X X,则:
p ( X = High ) = 7 14 = 1 2 p(X=\text{High}) = \frac{7}{14} = \frac{1}{2} p(X=High)=147=21

p ( X = Normal ) = 7 14 = 1 2 p(X=\text{Normal}) = \frac{7}{14} = \frac{1}{2} p(X=Normal)=147=21
所以,
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) = p ( X = High ) ∗ H ( Y ∣ X = High ) + p ( X = Normal ) ∗ H ( Y ∣ X = Normal ) \begin{aligned} H(Y|X) &= \sum_{x \in X} p(x) H(Y|X=x) \\ &= p(X=\text{High}) \ast H(Y|X=\text{High}) + p(X=\text{Normal}) \ast H(Y|X=\text{Normal}) \end{aligned} H(YX)=xXp(x)H(YX=x)=p(X=High)H(YX=High)+p(X=Normal)H(YX=Normal)

接下来计算 H ( Y ∣ X = High ) H(Y|X=\text{High}) H(YX=High) H ( Y ∣ X = Normal ) H(Y|X=\text{Normal}) H(YX=Normal)

H ( Y ∣ X = Normal ) = − ∑ y ∈ Y p ( y ) log ⁡ p ( y ) = − ( p ( Y = Yes ∣ X = Normal ) ∗ log ⁡ p ( Y = Yes ∣ X = Normal ) + p ( Y = No ∣ X = Normal ) ∗ log ⁡ p ( Y = No ∣ X = Normal ) = − ( 6 7 ∗ log ⁡ 2 6 7 + 1 7 ∗ log ⁡ 2 1 7 ) = 0.5917 \begin{aligned} H(Y|X=\text{Normal}) &= – \sum_{y \in Y} p(y) \log p(y) \\ &= – ( p(Y=\text{Yes} | X=\text{Normal}) \ast \log p(Y=\text{Yes} | X=\text{Normal}) \\ &+ p(Y=\text{No} | X=\text{Normal}) \ast \log p(Y=\text{No} | X=\text{Normal}) \\ &= – ( \frac{6}{7} \ast \log_2 \frac{6}{7} + \frac{1}{7} \ast \log_2 \frac{1}{7} ) \\ &= 0.5917 \end{aligned} H(YX=Normal)=yYp(y)logp(y)=(p(Y=YesX=Normal)logp(Y=YesX=Normal)+p(Y=NoX=Normal)logp(Y=NoX=Normal)=(76log276+71log271)=0.5917


3. 参考文章

  1. 什么是信息熵、条件熵和信息增益

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208915.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:28
下一篇 2026年3月19日 上午10:29


相关推荐

  • weblogic EJB 学习

    weblogic EJB 学习EJB学习笔记1、ejb基础知识(1)无状态会话bean不保存客户机的会话状态优点:使用小量的实例即可满足大量的客户。每个实例都没有标识,相互之间是等价的。等?的无状态会话bean:多次和一次调用的结果和效应相同。在集群中可以负载均衡a机器失败,可以在b机器上重试非等?的无状态会话bean:如:计数器…

    2026年4月19日
    4
  • 深入理解 Spring 之 SpringBoot 事务原理

    深入理解 Spring 之 SpringBoot 事务原理前言今天是平安夜,先祝大家平安夜快乐。我们之前的数十篇文章分析了Spring和Mybatis的原理,基本上从源码层面都了解了他们的基本原理,那么。在我们日常使用这些框架的时候,还有哪些疑问呢?就楼主而言,楼主已经明白了IOC,AOP的原理,也明白了Mybatis的原理,也明白了Spring和Mybatis是如何整合的。但是,我们漏掉了JavaEE中一个非常重要的特性:事

    2022年6月11日
    42
  • np管理器去更新(npx命令)

    一、npm查看某个模块的版本信息,例如element框架npminfoelement-ui二、npm更新模块到最新版本npminstallelement-ui@latestnpm更新模块到某个版本npminstallelement-ui@2.12.0更多:vs2019中怎么把tab补全换成空格补全;vs2019如何关闭空格自动补…

    2022年4月18日
    150
  • ▲ Android 自定义 Loading加载动画

    ▲ Android 自定义 Loading加载动画

    2021年3月12日
    134
  • 关于Glup_gulp使用教程

    关于Glup_gulp使用教程gulp—-项目工程化的工具一,作用:(1)能够完成代码的压缩(2)合并,复制,监听,ES6的代码转换,启动服务器等等二,gulp使用步骤:搭建环境(1)安装nodeJS(2)安装node的目的是为了测试npm(npm是nodeJS的包管理工具全称:nodeJSPackageManager)使用npm的原因:a.如果一个项目中使用的第三方js代码非常多,…

    2025年6月28日
    5
  • Partitioner分区过程分析

    Partitioner分区过程分析

    2022年1月9日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号