什么是信息熵?_信息熵的概念-程序员宅基地

技术标签: 信息熵  算法  数据分析  java  信息论  基础理论  

1948 年,伟大的信息论之父**香农(Shannon)**将热力学中熵的概念引入到了信息论中,提出了“信息熵”这一概念。

信息熵用于解决信息的量化问题,将原本模糊的信息概念进行计算得出精确的信息熵值,信息熵是描述消息中,不确定性的值。
理解起来需要一点耐心,可以先这么说,信息熵就是用来描述信息中不确定性的值,熵越低,不确定性越低,我们也就更容易得到确定的信息。

举个栗子,张三的女朋友小红又要过生日了,他现在挑选礼物有三个选择:口红、包、机械键盘。张三并不知道小红到底喜欢那种礼物,因此对于张三来说,小红喜欢口红、包、键盘的概率目前都是 1/3。也就是说不确定性是三种可能的选择,每一种概率都相等,这就是信息熵,它与信息对应,但是概念相反,信息可以用来消除不确定性,也就是消除熵,降低熵值。

为了送出更合适的礼物,张三需要一些信息来消除这些不确定性,通过打听得知,小红最近刚有只舔狗送了她一堆口红,所以小红短时间内不需要买口红了,那么不确定性消除了一个,此时可能性为包和键盘,概率都是1/2.

然后张三突然想起来小红经常在朋友圈卖包,既然卖包了就不需要再送了,因此这条信息可以消除掉送包这个可能性,键盘的概率为1.

信息熵也是有值的,可以计算的,信息熵用 bit(比特)为单位,计算公式如下,其中 P 是概率质量函数。

初始状态下,对于张三来说,小红喜欢这三个礼物的概率都是 1/3,所以此时 P(x) = 1/3,信息熵可以用如下公式计算:
H(x)=1/3log(3)+1/3log(3)+1/3*log(3)
=1.56
也就是说目前的信息熵是 1.56bit.

当小明知道小红目前不需要口红时的信息熵为:
H(x)=1/2log(2)+1/2log(2)
=1

好了,关于信息熵的简单概念大概就是这样了,其中还有很多内容本文没有介绍到,感兴趣的可以去深入看看。

欢迎关注我的公众号,还有更多干货。
微信扫描二维码或者搜索:zhangke_blog

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013872857/article/details/107608146

智能推荐

关于c语言main函数中int argc,char **argv的理解_int argc, char** argv-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏23次。c 语言main函数参数解释_int argc, char** argv

在对HDFS格式化,执行hadoop namenode -format命令时-程序员宅基地

文章浏览阅读5.9k次,点赞3次,收藏7次。在对HDFS格式化,执行hadoop namenode -format命令时,出现未知的主机名的问题,异常信息如下所示: [shirdrn@localhost bin]$ hadoop namenode -format11/06/22 07:33:31 INFO namenode.NameNode: STARTUP_MSG: /*******************************..._多次格式化hdfs namenode -format

一位软件工程师的6年总结_internetgetlastresponseinfo delphi-程序员宅基地

文章浏览阅读558次。一位软件工程师的6年总结 作者:成晓旭 (声明:欢迎转载,请保证文章的完整性) “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是_internetgetlastresponseinfo delphi

QTableWidget常用信号的功能_qtablewidget信号-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏6次。2023年11月18日,周六上午。_qtablewidget信号

numpy__python(第二个)_创建一个数组,数组的shape为(3,4),元素值在10-20之间-程序员宅基地

文章浏览阅读1.2k次。numpynumpy属性.shape 查看数组的形状.ndim 查看数组中有几个维度.size 查看数组中有几个数据.dtype 查看数组是什么类型.itemsize 查看数组中数据占几个字节import numpy as npa=np.arange(0,12).reshape(3,4) #查看a是什么形状print(a.shape) #查看a有几个维度print(a.ndim) #查看a有几个数据p_创建一个数组,数组的shape为(3,4),元素值在10-20之间

海尔电商峰值系统架构设计最佳实践_电商系统 项目团队 最佳实践-程序员宅基地

文章浏览阅读2.2k次。摘要:本文重点介绍了海尔电商平台的架构方案,也用不少篇幅阐述面临的场景和挑战,以及在架构方案决策过程中的关注点。其实作为一个优秀的电商平台,提供极致的用户体验、让技术最大化地创造价值,才是架构的终极目标。多数电商平台都会经历相似的过程,流量和业绩每年以几倍至十几倍的速度增长,每年都要接受几次大规模、全方位的系统检阅,例如双11、周年庆等购物狂欢节,期间流量和订单可能是日常的十几倍甚_电商系统 项目团队 最佳实践

随便推点

nginx-413-Request Entity Too Large-程序员宅基地

文章浏览阅读81次。文章目录Request Entity Too Large1. 问题描述2. 解决Request Entity Too Large1. 问题描述[!NOTE]在使用nginx时,在上传文件接口通过nginx转发到服务器时,发现抛出“error”错误,仔细发现抛出错误内容为:413-Request Entity Too Large,发现是nginx限制了文件上传的大小,直接将请求拦截了。这报错是因为nginx的默认上传文件大小配置client_max_body_size只有2MB。2. 解决[

MySQL 高级 - 存储过程 - 语法 - if判断 || 传递参数 (IN - 输入 OUT-输出)_mysql if in-程序员宅基地

文章浏览阅读398次。MySQL 高级 - 存储过程 - 语法 - if判断传递参数_mysql if in

理解编译型语言和解释型语言的本质区别、Java是编译语言还是解释语言?_编写的程序属于编译语言吗-程序员宅基地

文章浏览阅读816次。非常推荐的一篇文章:某天周末,CPU和JVM聊了起来···比较Java和Nodejs虽然都是翻译后执行但是脚本语言由高级语言封装的指令集,而不是机器指令集。翻译为高级语言后由高级语言再执行而编程语言是直接翻译为机器指令集这应该就是区分编程语言和脚本语言的本质了Nodejs本质是C的上层封装,所以是脚本语言。编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了Java翻译执行的是汇编指令,所以是编译语言._编写的程序属于编译语言吗

linux shell 脚本记录日志_linux执行脚本打印生成日志-程序员宅基地

文章浏览阅读1.6k次。shell 脚本记日志_linux执行脚本打印生成日志

python爬虫scrapy框架爬取网页数据_python爬虫----(scrapy框架提高(1),自定义Request爬取)...-程序员宅基地

文章浏览阅读179次。最近看scrappy0.24官方文档看的正心烦的时候,意外发现中文翻译0.24文档,简直是福利呀~ 外链网址已屏蔽结合官方文档例子,简单整理一下:import scrapyfrom myproject.items import MyItemclass MySpider(scrapy.Spider):name = 'myspider'start_urls = ('外链网址已屏蔽','外链网址已屏蔽'..._利用python的request库或scrapy框架搭建爬虫网络,爬取内容

uvm中sequence和virtual sequence中objection的控制_seq body中的objection-程序员宅基地

文章浏览阅读740次。sequence中的objection的控制策略在整颗UVM树中,树的结点很多,理论来说在任何组件中都可以控制objection。一般在sequence和virtual sequence中,也有在scoreboard和test中。一般来说,在一个实际的验证平台中,通常会有以下两种objection的控制策略:第一种:在scoreboard中进行控制,但要注意当收集到指定数量的数据后,利用fork…join_any跳出循环。第二种:在sequence中提起sequencer的objection,当_seq body中的objection

推荐文章

热门文章

相关标签