信息量与信息熵

A. 信息量(Self-Information)

信息量(Self-Information)是信息论中的一个基本概念,用于衡量某个特定事件发生时所包含的信息量。它反映了事件的不确定性和“惊讶”程度。信息量的计算公式如下:

I ( x ) = − log ⁡ b p ( x ) I(x) = -\log_b p(x) I(x)=logbp(x)

其中:

  • I ( x ) I(x) I(x)是事件 x x x的信息量。
  • p ( x ) p(x) p(x)是事件 x x x发生的概率。
  • b b b是对数的底数,常用的底数有2(单位为比特,比特是信息量的常用单位)、 e e e(单位为纳特)和10(单位为哈特利)。

信息量公式详解

1. 公式组成部分

  • 概率 p ( x ) p(x) p(x):表示事件 x x x发生的可能性。概率值范围在0到1之间, 0 < p ( x ) ≤ 1 0 < p(x) \leq 1 0<p(x)1。概率越小,事件发生的不确定性越大,信息量也越大。

  • 对数函数 log ⁡ b \log_b logb:用于将概率转换为信息量。对数的底数 ( b ) 决定了信息量的单位:

    • b = 2 b = 2 b=2:信息量以比特为单位。
    • b = e b=e b=e:信息量以纳特为单位。
    • b = 10 b = 10 b=10:信息量以哈特利为单位。
  • 负号 − - :确保信息量为正值,因为概率 p ( x ) p(x) p(x)的对数值通常为负数(因为 0 < p ( x ) ≤ 1 0 < p(x) \leq 1 0<p(x)1),而信息量应为非负数。

2. 公式的意义

  • 不确定性与信息量:事件发生的概率越低,其发生时所带来的信息量越大。这符合直觉——罕见事件发生时,我们会感到更“惊讶”,因此携带更多的信息。

  • 确定性与信息量:如果某事件的概率为1(即必然发生),则其信息量为0。这是因为没有不确定性的情况下,事件的发生不带来任何新信息。

3. 信息量的性质

  • 信息量非负:由于 0 < p ( x ) ≤ 1 0 < p(x) \leq 1 0<p(x)1,因此 − log ⁡ b p ( x ) ≥ 0 -\log_b p(x) \geq 0 logbp(x)0

  • 概率越小,信息量越大:例如,极少发生的事件带来的信息量较大。

  • 概率越大,信息量越小:常见事件带来的信息量较小。

示例计算

示例1:抛硬币

假设你有一枚公平的硬币,抛出正面( H H H)和反面( T T T)的概率各为0.5。

计算事件 H H H的信息量:
I ( H ) = − log ⁡ 2 p ( H ) = − log ⁡ 2 0.5 = − ( − 1 ) = 1  比特 I(H) = -\log_2 p(H) = -\log_2 0.5 = -(-1) = 1 \text{ 比特} I(H)=log2p(H)=log20.5=(1)=1 比特

同样地,事件( T )的信息量也是1比特。

示例2:掷骰子

假设你有一个公平的六面骰子,每个面的概率都是 1 6 \frac{1}{6} 61

计算某个特定点数(例如,4)的信息量:
I ( 4 ) = − log ⁡ 2 p ( 4 ) = − log ⁡ 2 ( 1 6 ) ≈ 2.585  比特 I(4) = -\log_2 p(4) = -\log_2 \left(\frac{1}{6}\right) \approx 2.585 \text{ 比特} I(4)=log2p(4)=log2(61)2.585 比特

示例3:非均匀概率分布

假设某个事件 A A A的发生概率是0.8,事件 B B B的发生概率是0.2。

计算各事件的信息量:
I ( A ) = − log ⁡ 2 0.8 ≈ 0.322  比特 I(A) = -\log_2 0.8 \approx 0.322 \text{ 比特} I(A)=log20.80.322 比特
I ( B ) = − log ⁡ 2 0.2 ≈ 2.322  比特 I(B) = -\log_2 0.2 \approx 2.322 \text{ 比特} I(B)=log20.22.322 比特
可以看出,虽然事件 B B B的概率较低,但它携带的信息量比事件 A A A大。

信息量与信息熵的关系

信息熵是多个事件的信息量的期望值,用于衡量整体系统的不确定性。具体地,信息熵 H ( X ) H(X) H(X)通过以下公式计算:
H ( X ) = E [ I ( X ) ] = − ∑ i p ( x i ) log ⁡ b p ( x i ) H(X) = \mathbb{E}[I(X)] = -\sum_{i} p(x_i) \log_b p(x_i) H(X)=E[I(X)]=ip(xi)logbp(xi)
其中, E [ I ( X ) ] \mathbb{E}[I(X)] E[I(X)]表示信息量 I ( X ) I(X) I(X)的期望值。

换句话说,信息熵是所有可能事件信息量的加权平均,权重是各事件的概率。

应用场景

  • 通信系统:衡量传输信息的效率,设计高效的编码方案。

  • 数据压缩:通过理解数据的概率分布,实现无损或有损压缩。

  • 机器学习:在决策树构建中,利用信息增益(基于信息量)选择最佳分裂特征。

  • 密码学:评估密码系统的安全性,分析信息的不可预测性。

总结

信息量的计算公式 I ( x ) = − log ⁡ b p ( x ) I(x) = -\log_b p(x) I(x)=logbp(x)是信息论的核心概念之一,用于量化单个事件携带的信息量。通过理解和应用这一公式,可以深入分析和优化各种信息处理系统,包括通信、数据压缩和机器学习等领域。

B. 信息熵(Information Entropy)

信息熵(Information Entropy)是信息论中的一个基本概念,用于度量一个随机变量的不确定性或信息量。它由克劳德·香农(Claude Shannon)在1948年提出,广泛应用于通信、数据压缩、机器学习等领域。

信息熵的定义

对于一个离散随机变量 X X X,其可能取的值为 { x 1 , x 2 , … , x n } \{x_1, x_2, \ldots, x_n\} {x1,x2,,xn},对应的概率分别为 { p ( x 1 ) , p ( x 2 ) , … , p ( x n ) } \{p(x_1), p(x_2), \ldots, p(x_n)\} {p(x1),p(x2),,p(xn)}。信息熵 H ( X ) H(X) H(X)定义为:

H ( X ) = − ∑ i = 1 n p ( x i ) log ⁡ b p ( x i ) H(X) = -\sum_{i=1}^{n} p(x_i) \log_b p(x_i) H(X)=i=1np(xi)logbp(xi)

其中:

  • p ( x i ) p(x_i) p(xi)是随机变量 X X X取值为 x i x_i xi的概率。
  • b b b是对数的底数,通常取 2,此时熵的单位为比特(bits)。

计算步骤

  1. 确定随机变量及其概率分布:首先需要明确随机变量的所有可能取值及其对应的概率。

  2. 计算每个取值的信息量:对于每一个取值 x i x_i xi,计算其信息量 − log ⁡ b p ( x i ) -\log_b p(x_i) logbp(xi)

  3. 求和得到熵:将所有取值的信息量按照概率加权求和,得到总的信息熵。

示例计算

假设有一个随机变量 X X X有以下可能取值及对应概率:

( x_i )( p(x_i) )
A0.5
B0.25
C0.125
D0.125

计算其信息熵 H ( X ) H(X) H(X)

H ( X ) = − [ p ( A ) log ⁡ 2 p ( A ) + p ( B ) log ⁡ 2 p ( B ) + p ( C ) log ⁡ 2 p ( C ) + p ( D ) log ⁡ 2 p ( D ) ] = − [ 0.5 × log ⁡ 2 0.5 + 0.25 × log ⁡ 2 0.25 + 0.125 × log ⁡ 2 0.125 + 0.125 × log ⁡ 2 0.125 ] = − [ 0.5 × ( − 1 ) + 0.25 × ( − 2 ) + 0.125 × ( − 3 ) + 0.125 × ( − 3 ) ] = − [ − 0.5 − 0.5 − 0.375 − 0.375 ] = 1.75  比特 \begin{align*} H(X) &= -[p(A)\log_2 p(A) + p(B)\log_2 p(B) + p(C)\log_2 p(C) + p(D)\log_2 p(D)] \\ &= -[0.5 \times \log_2 0.5 + 0.25 \times \log_2 0.25 + 0.125 \times \log_2 0.125 + 0.125 \times \log_2 0.125] \\ &= -[0.5 \times (-1) + 0.25 \times (-2) + 0.125 \times (-3) + 0.125 \times (-3)] \\ &= -[-0.5 - 0.5 - 0.375 - 0.375] \\ &= 1.75 \text{ 比特} \end{align*} H(X)=[p(A)log2p(A)+p(B)log2p(B)+p(C)log2p(C)+p(D)log2p(D)]=[0.5×log20.5+0.25×log20.25+0.125×log20.125+0.125×log20.125]=[0.5×(1)+0.25×(2)+0.125×(3)+0.125×(3)]=[0.50.50.3750.375]=1.75 比特
因此,该随机变量的信息熵为1.75比特,表示在不确定的情况下,平均每次需要1.75比特的信息来描述其取值。

注意事项

  • 对数底数:选择不同的对数底数会影响熵的单位。常用的底数有2(比特)、自然对数 ( e )(奈特)和10(哈特利)。

  • 连续随机变量:对于连续随机变量,信息熵的概念称为微分熵,其计算方式有所不同,需要使用积分而非求和。

  • 最大熵:在所有可能的概率分布中,均匀分布具有最大的熵。这意味着均匀分布是最不确定的分布。

  • 熵与不确定性:信息熵越大,表示系统的不确定性或随机性越高;熵越小,表示系统越有序或确定性越高。

C. 信息增益

信息增益(Information Gain) 是机器学习和信息理论中的一个重要概念,常用于决策树的构建。它度量了某个特征(属性)对于提高数据集纯度所带来的贡献。在决策树算法中,信息增益用于选择最优的划分属性,使得决策树能够以最小的深度准确地对数据进行分类。

以下将详细介绍信息增益的概念以及它在决策树中的应用。

一、熵(Entropy)的概念

在了解信息增益之前,首先需要理解的概念。熵是信息论中用于度量随机变量不确定性的指标。对于分类问题,熵反映了数据集的混乱程度,即数据集纯度的反向度量。

给定数据集 ( D ),其熵定义为:
H ( D ) = − ∑ k = 1 K p k log ⁡ 2 p k H(D) = -\sum_{k=1}^{K} p_k \log_2 p_k H(D)=k=1Kpklog2pk

其中:

  • ( K ) 是类别的总数。
  • ( p_k ) 是数据集中属于第 ( k ) 类的样本所占的比例。

熵的取值范围在 ( 0 ) 到 ( \log_2 K ) 之间。当数据集中的所有样本都属于同一类时,熵为 0,表示纯度最高;当样本均匀分布在各类别时,熵达到最大值,表示纯度最低。

二、信息增益的定义

信息增益衡量的是在通过某个特征 ( A ) 对数据集 ( D ) 进行划分后,数据集熵的减少程度。直观地说,信息增益代表了使用特征 ( A ) 划分数据集所获得的“信息”量。

信息增益的公式为:
G a i n ( D , A ) = H ( D ) − ∑ v ∈ Values ( A ) ∣ D v ∣ ∣ D ∣ H ( D v ) Gain(D, A) = H(D) - \sum_{v \in \text{Values}(A)} \frac{|D_v|}{|D|} H(D_v) Gain(D,A)=H(D)vValues(A)DDvH(Dv)
其中:

  • ( \text{Values}(A) ) 是特征 ( A ) 的所有可能取值。
  • ( D_v ) 是数据集中特征 ( A ) 取值为 ( v ) 的子集。
  • ( |D_v| ) 和 ( |D| ) 分别是子集 ( D_v ) 和数据集 ( D ) 的样本数量。
  • ( H(D_v) ) 是子集 ( D_v ) 的熵。

解释

  • 初始熵 ( H(D) ):反映了未划分前数据集的不确定性。
  • 划分后熵的期望值:对所有子集熵的加权平均,权重为各子集样本数与总样本数的比例。
  • 信息增益:表示通过特征 ( A ) 划分数据集后,不确定性减少了多少。

三、信息增益在决策树中的应用

在决策树算法(如 ID3 算法)中,信息增益用于选择每个节点上的最优划分特征。具体步骤如下:

  1. 计算当前数据集的熵 ( H(D) )

    根据当前节点的数据集计算其熵,度量当前的不确定性。

  2. 计算每个候选特征的信息增益

    • 对于数据集中的每个候选特征 ( A ),计算其可能的取值 ( \text{Values}(A) )。
    • 按特征 ( A ) 的取值划分数据集,得到若干子集 ( D_v )。
    • 计算每个子集的熵 ( H(D_v) )。
    • 计算特征 ( A ) 的信息增益 ( Gain(D, A) )。
  3. 选择信息增益最大的特征作为划分特征

    比较所有候选特征的信息增益,选择信息增益最大的特征进行划分。这一特征能够最大程度地减少数据集的不确定性。

  4. 递归构建子节点

    对于划分后得到的每个子节点,重复上述步骤,直到满足停止条件(如所有样本属于同一类别,或者没有更多的特征可供划分)。

示例

假设在一个天气数据集上,需要根据天气情况预测是否适合打球,有以下特征:天气(晴天、多云、雨天)、温度、湿度、风速等。

  • 计算整个数据集的熵 H ( D ) H(D) H(D)
  • 计算每个特征的信息增益,例如 G a i n ( D , 天气 ) Gain(D, \text{天气}) Gain(D,天气) G a i n ( D , 温度 ) Gain(D, \text{温度}) Gain(D,温度)等。
  • 选择信息增益最大的特征(假设为“天气”)进行第一次划分。
  • 对于“天气”的每个取值(晴天、多云、雨天),分别创建子节点,并在对应的子集上重复上述过程。

四、信息增益的优缺点

优点

  • 直观易理解:信息增益基于熵的概念,具有明确的物理意义。
  • 有效性:实践证明,使用信息增益构建的决策树性能良好。

缺点

  • 偏好取值较多的特征:信息增益倾向于选择取值较多(即可能性较多)的特征,可能导致过拟合。

为了解决信息增益的这一缺陷,后续的决策树算法(如 C4.5)引入了 信息增益率(Gain Ratio) 的概念,对信息增益进行了规范化处理,使得特征选择更加合理。


五、小结

信息增益在决策树的构建中起着关键作用。通过计算每个特征的信息增益,算法能够选择最能减少数据集不确定性的特征进行划分,从而逐步构建出能够准确分类的新样本的决策树模型。

理解信息增益的概念,有助于深入理解决策树算法的工作原理,并在实际应用中根据数据特性选择合适的模型和特征。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

案例-02.部门管理-查询

一.查询部门-需求 二.查询部门-思路 API接口文档 三.代码实现 1.controller层&#xff1a;负责与前端进行交互&#xff0c;接收前端所发来的请求 注&#xff1a;Slf4j用于记录日志使用&#xff0c;可以省略private static Logger log LoggerFactory.getLogger(DeptControlle…

小程序包体积优化指南:静态资源条件编译与分包编译技巧

在开发小程序时&#xff0c;可能大家都遇到过包体积超限的情况&#xff0c;这对多平台支持、用户体验和加载速度带来不少困扰。UniApp 提供了一些强大的功能&#xff0c;比如静态资源的条件编译和分包编译&#xff0c;这些功能可以帮助我们减少小程序的包体积&#xff0c;提高加…

12. QT控件:多元素控件

0. 概述 Qt中提供的多元素控件 QListWidget QListView QTableWidget QTableView QTreeWidget QTreeView xxWidget 和 xxView的区别 以QTableWidget 和 QTableView 为例&#xff1a; QTableView 是基于MVC设计的控件&#xff0c;QTableView自身不持有数据。使用QTableView需…

CAS单点登录(第7版)20.用户界面

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 用户界面 概述 概述 对 CAS 用户界面 &#xff08;UI&#xff09; 进行品牌化涉及编辑 CSS 样式表以及一小部分相对简单的 HTML 包含文件&#xff0c;也称为视图。&#xff08;可选&…

android 的抓包工具

charles 抓包工具 官网地址 nullCharles Web Debugging Proxy - Official Sitehttps://www.charlesproxy.com/使用手册一定记得看官网 SSL Certificates • Charles Web Debugging Proxy http请求&#xff1a; 1.启动代理&#xff1a; 2.设置设备端口 3.手机连接当前代理 …

关于视频去水印的一点尝试

一. 视频去水印的几种方法 1. 使用ffmpeg delogo滤镜 delogo 滤镜的原理是通过插值算法&#xff0c;用水印周围的像素填充水印的位置。 示例&#xff1a; ffmpeg -i input.mp4 -filter_complex "[0:v]delogox420:y920:w1070:h60" output.mp4 该命令表示通过滤镜…

预测技术在美团弹性伸缩场景的探索与应用

管理企业大规模服务的弹性伸缩场景中&#xff0c;往往会面临着两个挑战&#xff1a;第一个挑战是精准的负载预测&#xff0c;由于应用实例的启动需要一定预热时间&#xff0c;被动响应式伸缩会在一段时间内影响服务质量&#xff1b;第二个挑战是高效的资源分配&#xff0c;即在…

【含开题报告+文档+PPT+源码】基于Spring+Vue的拾光印记婚纱影楼管理系统

开题报告 本论文旨在探讨基于Spring和Vue框架的拾光印记婚纱影楼管理系统的设计与实现。该系统集成了用户注册登录、个人资料修改、婚庆资讯浏览、婚庆套餐查看、婚纱拍摄预约、婚纱浏览与租赁、客片查看以及在线客服等多项功能&#xff0c;为用户提供了一站式的婚纱影楼服务体…

ASP.NET Core 使用 FileStream 将 FileResult 文件发送到浏览器后删除该文件

FileStream 在向浏览器发送文件时节省了服务器内存和资源&#xff0c;但如果需要删除文件怎么办&#xff1f;本文介绍如何在发送文件后删除文件&#xff1b;用 C# 编写。 另请参阅&#xff1a;位图创建和下载 使用FileStream向浏览器发送数据效率更高&#xff0c;因为文件是从…

字节跳动后端二面

&#x1f4cd;1. 数据库的事务性质&#xff0c;InnoDB是如何实现的&#xff1f; 数据库事务具有ACID特性&#xff0c;即原子性、一致性、隔离性和持久性。InnoDB通过以下机制实现这些特性&#xff1a; &#x1f680; 实现细节&#xff1a; 原子性&#xff1a;通过undo log实…

【个人开发】cuda12.6安装vllm安装实践【内含踩坑经验】

1. 背景 vLLM是一个快速且易于使用的LLM推理和服务库。企业级应用比较普遍&#xff0c;尝试安装相关环境&#xff0c;尝试使用。 2. 环境 模块版本python3.10CUDA12.6torch2.5.1xformers0.0.28.post3flash_attn2.7.4vllm0.6.4.post1 2.1 安装flash_attn 具体选择什么版本&…

19.4.9 数据库方式操作Excel

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作&#xff0c;请参看第21.2节 在第19.3.4节【…

2024-2025年主流的开源向量数据库推荐

以下是2024-2025年主流的开源向量数据库推荐&#xff0c;涵盖其核心功能和应用场景&#xff1a; 1. Milvus 特点&#xff1a;专为大规模向量搜索设计&#xff0c;支持万亿级向量数据集的毫秒级搜索&#xff0c;适用于图像搜索、聊天机器人、化学结构搜索等场景。采用无状态架…

vue项目使用vite和vue-router实现history路由模式空白页以及404问题

开发项目的时候&#xff0c;我们一般都会使用路由&#xff0c;但是使用hash路由还是history路由成为了两种选择&#xff0c;因为hash路由在url中带有#号&#xff0c;history没有带#号&#xff0c;看起来更加自然美观。但是hash速度更快而且更通用&#xff0c;history需要配置很…

AI编程01-生成前/后端接口对表-豆包(或Deepseek+WPS的AI

前言: 做过全栈的工程师知道,如果一个APP的项目分别是前端/后端两个团队开发的话,那么原型设计之后,通过接口文档进行开发对接是非常必要的。 传统的方法是,大家一起定义一个接口文档,然后,前端和后端的工程师进行为何,现在AI的时代,是不是通过AI能协助呢,显然可以…

切换git仓库远程地址

1、首先可以先查看一下当前git库的远程地址 【cd .git】 切换到git目录【cat config】查看【cd ../】 返回项目目录 2、 切换到目标远程git地址 【git remote rm origin】 删除现有远程仓库 【git remote add origin url】添加新远程仓库 【cat .git/config】验证是否切换成功…

mapbox 从入门到精通 - 目录

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;mapbox 从入门到精通 文章目录 一、&#x1f340;总目录1.1 ☘️ mapbox基础1.2 ☘️…

前端包管理器的发展以及Npm、Yarn和Pnpm对比

在现代前端开发中&#xff0c;包管理器是不可或缺的核心工具。随着 JavaScript 生态的快速发展&#xff0c;开发者经历了从 npm 一统天下到 Yarn 挑战格局&#xff0c;再到 pnpm 创新突破的技术演进。这里将对三种主流包管理器&#xff08;npm/Yarn/pnpm&#xff09;进行全方位…

Qt QOpenGLWidget详解

1. 概述 QOpenGLWidget 是 Qt 框架中用于集成 OpenGL 渲染功能的类&#xff0c;它继承自 QWidget&#xff0c;允许开发者在 Qt 应用程序中轻松嵌入 OpenGL 图形。通过继承 QOpenGLWidget 并重写其虚函数&#xff08;如 initializeGL()、resizeGL() 和 paintGL()&#xff09;&a…