信息熵

信息熵为什么要定义成-Σp*log(p)?

时光总嘲笑我的痴心妄想 提交于 2020-01-07 12:42:34
信息熵为什么要定义成-Σp*log(p)? 再解释信息熵之前,需要先来说说什么是信息量。 信息量是对信息的度量,单位一般用bit。 信息论之父克劳德·艾尔伍德·香农(Claude Elwood Shannon )对信息量的定义如下: 在解释这个公式之前,先看看下面的例子。 比如一个黑箱里有2个苹果,8个橙子我们把从黑箱里取苹果、橙子看成是一个随机过程,X={x1,x2},其中的随机变量分别表示苹果、橙子。 当我们了解到拿出来的是什么的时候,我们就接受到了信息,这个信息的信息量的大小与这个东西出现的概率有关,这里苹果是0.2,橙子是0.8。越小概率的事情发生,其产生的信息量越大,比如我了解到拿出来的是一个苹果所获得的信息量比一个橙子的信息量要大的多。 所以如果我们要寻找一个函数来定义信息,则该函数要满足如下条件: 要符合随着概率的增大而减小的形式; 函数的值不能为负数,因为信息量最小为0。 带负号的对数函数显然符合以上要求,当然,肯定有其他函数也会符合以上要求,对此,香农在《A Mathematical Theory of Communication》(通信的数学理论)这篇论文中有说明选择对数函数的原因: 大意是说: 如果集合中的消息的数量是有限的,而且每条消息被选择的可能性相等,那么这个消息数或者任意这个消息数的单调函数可以用来做为从集合选择一条消息时产生的信息量的度量

信息熵,交叉熵与相对熵

邮差的信 提交于 2019-12-27 02:24:28
前言 最近在多处看到熵的概念,之前零散的了解了一下,最近总结下,加深一下理解。 熵 熵是信息论中的一个概念,用于衡量一个随机变量的不确定性,公式很简单: l o g ( 1 / p ( x ) ) log(1/p(x)) l o g ( 1 / p ( x ) ) ,其中 p ( x ) p(x) p ( x ) 为x的概率分布(离散)或者概率密度(连续)函数,公式很直观,概率越小熵越大,即信息量越大。 信息熵 信息熵为熵的期望,用于衡量一个分布的不确定性,以下为离散变量概率分布下的计算公式: H ( p ) = ∑ i p ( i ) l o g ( 1 / p ( i ) ) = − ∑ i p ( i ) l o g p ( i ) H(p)=\sum_i p(i)log(1/p(i))=-\sum_i p(i)logp(i) H ( p ) = i ∑ ​ p ( i ) l o g ( 1 / p ( i ) ) = − i ∑ ​ p ( i ) l o g p ( i ) 基本可以看出,当一个随机变量分布越散,信息熵越大,而分布越集中,信息熵越小,二元分布和连续分布类似,这里不多做讨论。 交叉熵 假设我们知道某个分布的真实概率分布 p ( x ) p(x) p ( x ) (机器学习中的标签)和一个预测概率分布 q ( x ) q(x) q ( x ) (模型预测概率

基于信息增益的决策树算法(附MATLAB代码)

浪子不回头ぞ 提交于 2019-12-21 05:51:51
基于信息增益的决策树算法(附MATLAB代码) 最近在学机器学习,本篇文章的内容正好是作业内容,所以拿来分享一下,顺便捋一下思路。下面内容只涉及到决策树学习基本算法(伪代码)、信息增益的计算和matlab代码实现。决策树算法原理不再赘述,请自行百度。水平有限,如有错误,欢迎指正! 一、决策树学习基本算法 二、 信息增益的计算 1.信息熵 “信息熵”(information entropy)是度量样本集合纯度最常用的一种指标,假定当前样本集合 D 中第 k 类样本所占的比例为 Pk ( k = 1,2,…,| Y | ),则D的信息熵定义为 Ent( D )的值越小, D 的纯度越高。 2.信息增益 假定离散属性 a 有 V 个可能的值 a1,a2,…,aV ,若使用 a 来对样本集D进行划分,则会产生 V 个分支节点,其中第 v 个分支节点包含了 D 中所有在属性 a 上取值为 av 的样本,记为 Dv ,这时可以计算出 Dv 的信息熵,同时考虑到不同的分支结点所包含的样本数不同,给分支结点赋予权重| Dv |/| D |,即样本数越多的分支结点的影响越大,于是可计算出用属性a对样本集D进行划分所获得的“信息增益”(information gain) 3.划分属性选择 一般而言,信息增益越大,则意味着使用属性 a 来进行划分所获得的“纯度提升”就越大,因此

社区检测与高密子图挖掘(上)

扶醉桌前 提交于 2019-12-15 04:52:17
前面我们说过图的第二个优点是拉帮结派,在图里面是很容易形成团伙结构,近年来,研究这个问题的论文也是汗牛充栋。本章,我们就这一问题所衍生出来的两个方面:社区检测(Community Detection)和高密子图挖掘(Dense Subgraph Mining)作相关讲解。 本文,我们先讲社区检测的相关算法。社区检测的任务是什么呢?举个例子,给定如下图。 直观印象告诉我们,该图存在以下的社区结构: 像这样,从给定图中,将各节点划分到相应社团的任务称为社区检测。值得注意的一点是,一般当我们在说社区检测的时候,节点都是同态的,类型都一样。 本文会重点介绍三个最流行的社区检测算法 Louvain、Lpa、Infomap ,最后对社区检测作一些补充说明。 Louvain算法 Louvain算法是一种基于模块度的社区检测算法,由于其良好的效率与稳定性而广受欢迎。网上也有基于Spark GraphX 的开源实现版本。 模块度(Modularity) 同很多无监督的聚类算法一样,衡量指标是一个至关重要的因素,很多时候,我们只需要定义好这个指标,然后选择启发式的更新方法去不断优化这个值。一个算法的大概骨架也就出来了。当然一个好的社区衡量指标要符合基本逻辑:社区内联系紧密,社区间联系松散。在06年《Modularity and Community structure in networks 》一文中

手撸决策树代码——原理详解(1)(python3)

江枫思渺然 提交于 2019-12-14 07:07:51
前提 了解信息熵 简单提一下,学过物理化学的小伙伴都明白: 熵是无序分子运动紊乱程度的一种度量 ,熵值越大,内部的混乱程度越大。 因此,信息熵是 对某个事件里面所包含的信息的混乱程度 在数学上: 当一件事是不太可能发生的时候,我们获取的信息量较大 当一件事是极有可能发生的时候,我们获取的信息量较小 例如: 1.特朗普其实是中国的卧底 2.特朗普是zz。 结论: 信息的量度应该依赖于概率分布, 所以说熵h(X)应该是概率P(X)的单调函数。 推导过程: 当x事件与y事件不相关时:(x事件与y事件独立) 我们获取x事件和y事件的信息量总和=x事件信息量+y事件信息量 即:h(X,Y) = h(X) + h(Y)————————————(1) 同理:由于x,y事件独立 x,y事件同时发生的概率 = x事件概率*y事件概率 即:P(XY) = P(X) * P(Y) 对其两边取对数 lgP(XY)=lg(P(X)*P(Y)) = lgP(X) + lgP(Y)——————(2) 由(1),(2)式得出结论 h(X)应该是概率P(X)的log函数 P(X)概率在0到1内log后为负数,(常理信息熵h(X)应为正数) 所以我们需要将在公式前添负号。 至于log以谁为底,计算机中一般以2(bit)为底,机器学习中一般以e为底。 所以:事件X单个随机变量xi的信息熵为

机器学习之相对熵、交叉熵(为什么交叉熵可以作为损失函数)

回眸只為那壹抹淺笑 提交于 2019-12-10 15:58:10
文章目录 自信息 信息熵 相对熵(KL散度) 交叉熵 为什么交叉熵可以作为损失函数 参考文章 自信息   信息论的基本想法是一个不太可能的事件居然发生了,要比一个非常可能的事件发生,能够提供发更多的信息。消息说:“今天早上太阳升起”,信息量是如此少,以至于没有必要发送;但一条消息说:“今天早上有日食”,信息量就很丰富。   一条信息的信息量大小和它的不确定性有直接的关系,我们可以认为, 信息量的度量就等于不确定性的多少 。使用 自信息 来量化 信息量 : I ( x ) = − l o g P ( x ) I(x)=-logP(x) I ( x ) = − l o g P ( x )    l o g log l o g 函数基的选择是任意的,信息论中基常常选择为2,因此信息的单位为比特(bit);而机器学习中基常常选择为自然常数,因此单位常常被称为奈特(nats)。 信息熵   使用信息熵对整个 概率分布 中的 不确定性总量 进行量化: H ( X ) = E x ∼ P [ I ( x ) ] = − E x ∼ P [ l o g P ( x ) ] H(X)=E_{x\sim P}[I(x)]=-E_{x\sim P}[logP(x)] H ( X ) = E x ∼ P ​ [ I ( x ) ] = − E x ∼ P ​ [ l o g P ( x ) ]  

信息熵、信息增益与信息增益率

社会主义新天地 提交于 2019-12-07 19:48:33
来源于http://m.blog.csdn.net/u012351768/article/details/73469813 信息熵(Information Entropy)   信息熵是用来评估样本集合的纯度的一个参数,就是说,给出一个样本集合,这个样本集合中的样本可能属于好多不同的类别,也可能只属于一个类别,那么如果属于好多不同的类别的话,我们就说这个样本是不纯的,如果只属于一个类别,那么,我们就说这个样本是纯洁的。   而信息熵这个东西就是来计算一个样本集合中的数据是纯洁的还是不纯洁的。下面上公式:      下面解释一下公式的意思,其实很好理解,计算一个集合的纯度,就是把集合中每一个类别所占的比例 (k从1到 ,其中 表示类别的个数)乘上它的对数,然后加到一起,然后经过计算之后,可以得到一个数据集的信息熵,然后根据信息熵,可以判断这个数据集是否纯粹。信息熵越小的话,表明这个数据集越纯粹。信息熵的最小值为0,此时数据集D中只含有一个类别。 信息增益(Information Gain)   下面来介绍信息增益,所谓的信息增益,是要针对于具体的属性来讲的,比如说,数据集D中含有两个类别,分别是好人和坏人,那么,随便选择一个属性吧,比如说性别,性别这个属性中包含两个值,男人和女人,如果用男人和女人来划分数据集D的话,会得到两个集合,分别是 和 。划分后的两个集合中各自有 好人和坏人

信息熵与Gini不纯度(转)

跟風遠走 提交于 2019-12-07 19:42:57
1、信息熵 信息论中的 信息量 和 信息熵。 信息量: 信息量是对信息的度量,就跟温度的度量是摄氏度一样,信息的大小跟随机事件的概率有关。 例如: 在哈尔滨的冬天,一条消息说:哈尔滨明天温度30摄氏度,这个事件肯定会引起轰动,因为它发生的概率很小(信息量大)。日过是夏天,“明天温度30摄氏度”可能没有人觉得是一个新闻,因为夏天温度30摄氏度太正常了,概率太大了(信息点太小了) 从这个例子中可以看出 一个随机事件的信息量的大小与其发生概率是成反相关的。 香农定义的一个事件的信息信息量为:I(X) = log2(1/p) 其中p为事件X发生的概率 信息熵: Entropy 一个随机变量 X 可以代表n个随机事件,对应的随机变为X=xi, 那么熵的定义就是 X的加权信息量。 H(x) = p(x1)I(x1)+...+p(xn)I(x1) = p(x1)log2(1/p(x1)) +.....+p(xn)log2(1/p(xn)) = -p(x1)log2(p(x1)) - ........-p(xn)log2(p(xn)) 其中p(xi)代表xi发生的概率 例如有32个足球队比赛,每一个队的实力相当,那么每一个对胜出的概率都是1/32 那么 要猜对哪个足球队胜出 非常困难, 这个时候的熵H(x) = 32 * (1/32)log(1/(1/32)) = 5

决策树

北慕城南 提交于 2019-12-06 22:38:31
决策树基本上就是把我们以前的经验总结出来。 这里有 一个打篮球的训练集。 假如 我们要出门打篮球,一般会根据 “天气”、“温度”、“湿度”、“刮风”这几个条件来判断,最后得到结果:去打篮球?还是不去? 上面这个图就是一棵典型的决策树。我们在做决策树的时候,会经历两个阶段:构造和剪枝。 构造 什么是构造呢?构造就是生成一棵完整的决策树。简单来说,构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点: 1. 根节点:就是树的最顶端,最开始的那个节点。在上图中, “天气”就是一个根节点; 2. 内部节点:就是树中间的那些节点,比如说 “温度”、“湿度”、“刮风”; 3. 叶节点:就是树最底部的节点,也就是决策结果。 节点之间存在父子关系。比如根节点会有子节点,子节点会有子子节点,但是到了叶节点就停止了,叶节点不存在子节点。那么在 其实 构造 就是对应着 三个重要的问题: 1. 选择哪个属性作为根节点; 2. 选择哪些属性作为子节点; 3. 什么时候停止并得到目标状态,即叶节点。 剪枝 决策树构造出来之后是不是就万事大吉了呢?也不尽然,我们可能还需要对决策树进行剪枝。剪枝就是给决策树瘦身,这一步想实现的目标就是,不需要太多的判断,同样可以得到不错的结果。之所以这么做,是为了防止 “过拟合”(Overfitting)现象的发生。过拟合,它指的就是模型的训练结果“太好了”