机器学习入门:重要的概念---信息熵(Shannon’s Entropy Model)

个人公众号:follow_bobo
在机器学习里面,信息熵(Shannon’s Entropy Model)其实是一个很重要的概念,多重要呢?大概有

(-------------------------)这么重要。

好了,那边拿枪的朋友,请把你的刀从我脖子上拿开,还有那边挥拳头的朋友,你踢到我了。

机器学习中很多地方都要根据目前的信息做出决策,信息熵主要是反应信息的不确定性,它的一个很重要的作用,就是做决策时提供一定的判断依据,比如决策树根据熵来往下设置分枝(branch)。

.

‘同学你好,说了半天我也不知道你说了啥,我们想打你。’

冷静冷静,好了,我们接下开始讲正题。。。

吗?不,我们来先抛硬币。

我们抛一个硬币,正反面发生的概率都是50%,那么我们可以分别用0,1来表示正反面结果。

当抛出硬币的那一刻,我们会得到2个信息量,0和1。如果我们同时抛两枚呢,我们知道这个时候用00,01,10,11表示出了这个随机事件,我们获得了4个信息量(2^2, 抛4枚呢,有16种可能性,那我们可以获得16(2^4)个信息量。

硬币抛完了,有什么用呢,其实没什么用,我就是想让你们感受下。。。

刀放下,这位同志,让我们先看完下面的。。

大家应该对数学期望(Mean)都有所了解吧,它试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一。它反映随机变量平均取值的大小。本质上是对未知的预期。

敲黑板了,注意关键字:概率,结果。随机,平均,预期。

我们现在来看什么是信息熵模型(Shannon’s Entropy Model), 信息熵实际反应的是一个信息的不确定度。在一个随机事件中,某个事件发生的不确定度越大,熵也就越大,那我们要搞清楚所需要的信息量越大。

在信息熵的定义中,假设两个随机变量x和y是相互独立的,那么分别观测两个变量得到的信息量应该和同时观测两个变量的信息量是相同的,我们用h()来表示信息量,即:h(x+y) = h(x) + h(y),比如小明今天失业了和今天失恋了是两个独立事件,单独一个一个知道和一起知道,对大家来说都挺好笑的,不是,对大家来说获得的信息量是相同的。

对小明来说,失业的p(x)和失恋的p(y)同时发生的概率是:p(x,y) = p(x)p(y).

那好,我们现在把表拨回昨天小明还是人生赢家的时候,我们猜想,第二天小明是可能失业呢,还是失恋呢,还是同时发生呢,我们不得而知,但是好奇心(小明心里:我也是日了汪汪了)驱使我们去想知道接下来会发生的事,那我们用什么方式方式来度量将发生失恋和失业的信息量呢?我们刚刚提及了期望,巧了,这两个随机事件完全符合数学期望的要求,所以我们可能在小明身上获得的预期信息量为(真是狠啊,谁还算这东西):

H[x] = p(x)h(x)+ p(y)h(y)

我们现在回到信息量h()来, 在我们生活中,信息的大小跟随机事件的概率有关。越小概率的事情发生了产生的信息量越大,如湖南产生的地震了;越大概率的事情发生了产生的信息量越小,如太阳从东边升起来了(肯定发生嘛,没什么信息量)。这很好理解,也就是说:

1. 当一个事件发生的概率p(x)为1并且它发生了,那我们等到的信息量是h(x) = 0。

2. 当一个事件发生的概率p(x) 为0 并且它发生了,那我们得到的信息可能是无限大。

3. H(x)随p(x)单调递增。

4. p(x,y) = p(x)p(y)。

5. h(x,y) = h(x) + h(y)。

6. 信息量h(x) 正比于p(x) 。

7.信息量是非负的。

看到上面的条件,是不是想到一个函数可以来表达,对,就是log,这个h(x) 会等于 Clog(A*p(x))+D 的形式吗?不会,只能是Clog(p(x)),这个系数C对整个信息量影响不大,因为大家都乘了个C,不是相当于没乘么。同时,p(x) 肯定小于等于1,log(p(x))一直小于等于0 ,而信息量又是非负的,那么,我们就把C设为-1 吧。

信息量:h(x) = - log(p(x))。

我们来验证一下:

1. p(x)= 1, h(x) =0.

2. p (x) = 0, h(x) 等于无穷大。

3. 假如有n个可能结果,那么出现任意一个的概率是1/n,而-log(1/n)是n的增函数,没问题。

4. 第四点不用说了。

5. log(p(x,y)) = log(p(x)p(y)) = log(p(x)) + log(p(y)),没毛病。

但是,这个log的底是多少呢?

以前人们一般会用ln, 现在主流的认识是log以2为底,为什么呢?我们一般考虑到一个事件的信息量是一连串相互独立随机变量发生的结果,其中每一个选择都在0或1之间做出,我们能算出所有可能结果数为N=2^n,n是独立随机变量的个数, 于是,我们把指数形式变成线性形式就是n= log2(N)了。

这其实涉及到信息论中编码问题,数学之美里面有提过一个例子:

假设我们没有看世界杯的比赛,但是想知道哪支球队会是冠军,只能去问已经看过比赛的观众,但是我们只能猜测某支球队是或不是冠军,然后观众用对或不对来回答,我们想要猜测次数尽可能少,所用的方法就是二分法。假如有 16 支球队,分别编号,先问是否在 1-8 之间,如果是就继续问是否在 1-4 之间,以此类推,直到最后判断出冠军球队是哪只。如果球队数量是 16,我们需要问 4 次来得到最后的答案。那么世界冠军这条消息的信息量就是 4。在计算机中,这条信息的信息量就是 4 比特,如果一共是 32 支球队参赛,那么世界冠军的信息量就是 5 比特,可以看到信息量跟可能情况的对数 log (以 2 为底)有关(这里大概有点知道为什么求熵的公式里会有一个 log 了)。

其实对于底数来说,只要大于1就可以,因为它只是一个比例因子。

这下小明发生失恋和失业的平均信息量就是:

H[x] = - p(x)log2(p(x)) - p(y)log2(p(y))

万一,我说万一,小明不仅失恋(p(x)),失业了(p(y)),还出门被撞(p(z)),走路摔跤(p(w)),等等一系列衰事。。。

小明同学,你的刀有点弄疼我了。。。。

那么整个事件的信息量期望可以表示为:

H[x] = - p(x)log2(p(x)) - p(y)log2(p(y)) - p(z)log2(p(z)) -p(w)log2(p(w))。。。

我们可以总结为:

H[x] =

                           (1,1)

好了,我们就得到了信息熵的公式了(1,1),即一个总的事件的信息量的期望。

(附录会放我在网上找的关于信息熵的数学推导过程)

我们来举个例子方便大家理解,小明在一道选择题的A,B,C,D中选出答案,A对的概率为1/2,B对的概率变成了1/4,C和D则分别是1/8。

如果答案为A,小明要猜1次,概率为1/2。

如果答案为B,小明要猜2次(先猜A,因为A对的概率最大,发现不对,再猜B),概率为1/4。

如果答案为C,或者D,小明要猜3次,概率都是1/8。

那么在以上的情况中,小明要猜多少次才是正确答案呢?

实际上就是一个求期望的问题:

E[N]=1/2 *1 +1/4*2+1/8*3+1/8*3 = 1.75

对,大概要猜1.75次。

那我们来求一下信息熵:

H[x] = - 1/2*log2(1/2)-1/4*log2(1/4) - 1/8*log2(1/8) - 1/8*log2(1/8)

= 1.75 bits (信息熵单位为bit, 为什么是bit, 我觉得主要还是和二进制编码有关)

我们要获得正确信息需要付出的'熵'是1.75bits。

两个结果竟然一样诶,6不6 。什么,你觉得是巧合?我把C的概率换成3/16,D的概率换成1/16,结果还是非常非常接近1.75 bits(估计因为中间有四舍五入)。

是不是有点开始懂了?

那么信息熵的本质到底是什么呢,我认为本质就是我要获得某些信息的代价,当信息的稀有度越高,得到这个信息需要付出的代价越高。

到这,估计很多读者们还是一脸懵逼,你得到这个公式,有啥用呢,怎么用呢?

我们下期再讲,机器学习入门:从信息熵到决策树。

Appendix:

摘录自别人的著作,怎么从纯数学上推出信息熵公式:

机器学习入门:重要的概念---信息熵(Shannon’s Entropy Model)相关推荐

  1. 干货丨先搞懂这八大基础概念,再谈机器学习入门

    翻译 | AI科技大本营 参与 | 林椿眄 准备好开始AI了吗?可能你已经开始了在机器学习领域的实践学习,但是依然想要扩展你的知识并进一步了解那些你听过却没有时间了解的话题. 这些机器学习的专业术语能 ...

  2. 机器学习入门 笔记(二) 机器学习基础概念

    第二章 机器学习基础概念 1.机器的数据 2.机器学习的主要任务 3.监督学习和非监督学习 4.批量.在线学习.参数.非参数学习 5.哲学思考 6.环境的搭建 1.机器的数据 我们以鸢尾花的数据为例. ...

  3. 【机器学习】机器学习和深度学习概念入门

    机器学习和深度学习概念入门(上) 作者:谭东  来源:机器学习算法与自然语言处理 目  录 1   人工智能.机器学习.深度学习三者关系 2   什么是人工智能 3  什么是机器学习 4  机器学习之 ...

  4. [机器学习入门笔记] 1. 周志华. 《机器学习》

    目录 前言 第 1 章 线性模型 0. 机器学习三要素 1. 一元线性回归 1.1 最小二乘法估计 1.2 极大似然估计 1.3 求解 w 和 b 1.4 向量化 2. 多元线性回归 2.1 导出 E ...

  5. 机器学习入门(不知不觉就36795字了)

    俗话说,好记性不如烂笔头,看完了黑马的机器学习入门课程后,不禁感叹,立马来归纳整理所学的知识点,方便后续复习. 机器学习入门 人工智能 人工智能概述 人工智能应用 机器学习 机器学习基本定义 机器学习 ...

  6. Flink 基本原理与生产实践分享【入门必读,概念清晰】

    Flink 基本原理与生产实践分享[入门必读,概念清晰] https://zh.wikipedia.org/zh-hans/Apache_Flink Apache Flink是由Apache软件基金会 ...

  7. 十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记

    整理 | Jane 编辑 | Just 出品 | AI科技大本营(ID:rgznai100) 近期,梁劲传来该笔记重大更新的消息.<机器学习--从入门到放弃>这本笔记的更新没有停止,在基于 ...

  8. 曲线聚类_机器学习入门必读:6种简单实用算法及学习曲线、思维导图

    来源:大数据DT 本文约3500字,建议阅读7分钟 本文为你介绍掌握机器领域知识的学习曲线.技术栈以及常用框架. [ 导读 ] 大部分的机器学习算法主要用来解决两类问题--分类问题和回归问题.在本文当 ...

  9. 机器学习入门必读:6种简单实用算法及学习曲线、思维导图

    来源:大数据DT 本文约3500字,建议阅读7分钟 本文为你介绍掌握机器领域知识的学习曲线.技术栈以及常用框架. [ 导读 ] 大部分的机器学习算法主要用来解决两类问题--分类问题和回归问题.在本文当 ...

最新文章

  1. OpenCL与异构并行计算
  2. 用Greasemonkey脚本收藏网站会员信息到本地
  3. 【262】pscp命令 实现windows与linux互传文件
  4. vue中webpack默认配置_Vue-cli 中 Webpack 配置优化(一)
  5. “java程序打成jar包 如何处理第三方jar包”
  6. 腾讯技术工程沙龙深圳站来了,我们一起聊聊“工业互联网”
  7. “请先做自我介绍”:高手都是这样做自我介绍,这样介绍最加分
  8. Matlab与Access数据库的连接
  9. 地铁关门提示音,可使用倒计时
  10. qtp 连接mysql_QTP连接mysql数据库
  11. 高等数学(第七版)同济大学 习题2-5 个人解答
  12. 目前见过最好的豆瓣电台第三方程序
  13. Maven 设置阿里镜像
  14. 反激开关电源的工作原理
  15. 大数据行业怎么样?工资可观么?
  16. 流媒体学习之路(WebRTC)——GCC分析(2)
  17. velocity模板大小写转换
  18. Login.aspx
  19. DASH 流媒体协议(Dynamic Adaptive Streaming over HTTP)概述——起源、MPD文件解析、相关项目
  20. 【SQL】查询表中姓名“王”开头,并且只有二个字的数据

热门文章

  1. MFC DockPane 分割窗口 嵌入对话框
  2. 淘宝天猫使用内部优惠券购物省钱指南
  3. 从一次“并发修改字段业务”引出多版本并发控制与InnoDB锁
  4. Android-通讯卫士
  5. 使用ansible执行命令时出现Failed to connect to the host via ssh错误
  6. 生命游戏(Java)
  7. ThinkPad X201 笔记本通过硬盘安装 Ubuntu 双系统
  8. 文本生成图像工作简述3--技术难点、研究意义、应用领域和目前的局限性
  9. Thiol-PEG-SH,巯基聚乙二醇巯基,Thiol-PEG-Thiol
  10. 背后的力量 | 搭建新型IT基础架构 华云数据助力妇幼保健院提升数字化医院建设水平