信息熵

java计算信息熵

匿名 (未验证) 提交于 2019-12-02 21:52:03
信息熵的计算公式: H ( x ) = ∑ i = 1 n p ( i ) log 2 p ( i ) H(x) = {\rm{ - }}\sum\limits_{i = 1}^{\rm{n}} {p(i)\log _2 p(i)} H ( x ) = i = 1 ∑ n p ( i ) lo g 2 p ( i ) X a 1 a_1 a 1 a 2 a_2 a 2 a 3 a_3 a 3 a 4 a_4 a 4 P(X) 1 2 \frac{1}{2} 2 1 1 4 \frac{1}{4} 4 1 1 8 \frac{1}{8} 8 1 1 8 \frac{1}{8} 8 1 class test { public static void main ( String [] args ) { double [] p = { 1.0 / 2 , 1.0 / 4 , 1.0 / 8 , 1.0 / 8 }; double H = 0 ; for ( int i = 0 ; i < p . length ; i ++) { H += - p [ i ] * ( Math . log ( p [ i ]) / Math . log ( 2 )); } System . out . println ( H ); } } 实战演练: 一字符串由大写字母、小写字母和数字组成

信息熵的定义和简单计算

不问归期 提交于 2019-12-02 21:24:33
定义: p(x)指的是离散型随机变量的各个情况的概率 例子: 对数的底数为2---如果单位是比特的话 条件熵(期望熵)和信息增益: 注意这个条件是( 是否阴天 ) 信息增益则是总的熵减去条件熵 来源: https://www.cnblogs.com/take-it-easy/p/11762909.html

决策树

只谈情不闲聊 提交于 2019-12-02 16:40:02
决策树: 决策树方法在分类,预测,规则等领域有这广泛的应用,20世纪70年代后期和80年代初期,机器学习研究者提出了ID3算法后,决策树在机器学习,数据挖掘领域取得极大的发展,后来又有了c4.5,成为新的监督学习算法.1984年,几位科学家提出了CART分类算法,ID3和CART算法同时被提出,但都是采用类似的方法训练样本中学习决策树 决策树是一种树状结构,它的每一个叶节点对应着一个分类,非叶子节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干个子集.对于非纯的叶子节点,多数类的标号给出到达这个节点的样本所属的类,构造决策树的核心问题是在每一步如何选择适当的属性对样本做拆分.对于一个分类问题,从已知类标记的训练样本中学习并构造出决策树是一个自上而下,分而治之的过程. 决策树算法 算法 描述 C4.5算法 C4.5决策树生成算法相当于ID3算法的重要改进是使用信息增益率来选择节点属性.C4.5算法可疑克服ID3算法存在的不足:ID3算法只适用于离散的描述属性,而C4.5算法即能够处理离散的描述性,也可以处理连续的描述属性 CART算法 CART决策树是一种十分有效的非参数分类和回归方法,通过构建树,修剪树,评估树来构建一个二叉树.当终结点是连续变量时,该树为回归树,当终结点是分类变量,该树为分类树 ID3算法 其核心的是在决策树的各级节点上

数据离散化与Python实现

可紊 提交于 2019-11-30 14:22:49
一、原理 数据离散化(也称,数据分组),指将连续的数据进行分组,使其变为一段离散化的区间。 根据离散化过程中是否考虑类别属性,可以将离散化算法分为: 有监督算法 和 无监督算法 。事实证明,由于有监督算法充分利用了类别属性的信息,所以再分类中能获得较高的正确率。 常用的数据离散化方法: 等宽分组 等频分组 单变量分组 基于信息熵分组 数据离散化所使用的方法需要事先对数据进行排序,且假设待离散化的数据是按照升序排序。 1、等宽分组 原理:根据分组的个数得出固定的宽度,分到每个组中的变量的宽度是相等的。 如:现在有一个待离散化的数组[1, 7, 12, 12, 22, 30, 34, 38, 46],需要分成三组, 那么, ,即宽度 =( 46 - 1)/3 = 15 分组后结果范围:[1,16],(16, 31],(31, 46],第一个分组取的是全闭区间, 分组后结果:[1, 7, 12, 12],[22, 30],[34, 38, 46] 2、等频分组 原理:等频分组也叫分位数分组,即分组后,每个分组的元素个数是一样的。 如:现在有一个待离散化的数组[1, 7, 12, 12, 22, 30, 34, 38, 46],需要分成三组, 那么, ,即每组元素的个数 = 9 / 3 = 3 分组后的结果:[1, 7, 12],[12, 22, 30], [34, 38, 46] 3

决策树

吃可爱长大的小学妹 提交于 2019-11-30 09:04:12
决策树算法: 分类算法: ​ 目标值 ​ 离散型 特征值: 离散型[如这里的字符串类型的特征值] 将特征值为离散型的数值转化为数值型 ‘1st’ ‘2nd’ ‘3rd’ 在pandas里面数据离散化采用: one-hot编码 ####决策树算法去关心的两个问题: 1 结果(目标值)纯度问题 2 如何选择最优划分指标 --> 让我们结果尽可能的简单纯粹 纯度 : {1,1,1,1,1,1,1} {0,0,0,0,0,0,0,0,0} 不纯的情况: {0,1,0,1,0,1,0,1,0,1} {1,1,1,0,0,0,1,1,1,0} ####决策树分类原理 信息熵: n pi = 1/n 当信息熵最不纯的时候,每种发生的概率值是相等的 -sum[pi*log(pi)] sum pi * log(pi) 最不纯的情况: log(n) 最纯的情况: p1 = 1 p2, p3, pn = 0 1 * log(1) = 0 信息熵的单位是 bit log(32) = 5 bit 所以对咱们的32支球队的获胜的预测概率求解,假设如果是等概率的情况,那么需要使用5位可以预测最后的获胜球队 11111 bit 决策树的划分依据一----信息增益 H(D) 咱们的信息熵的计算始终是针对结果(目标值的划分而来的) 大数据集:D |D| 划分条件:A 即按照某个特征对大数据集进行划分

java计算信息熵

不想你离开。 提交于 2019-11-30 04:29:13
信息熵的计算公式: H ( x ) = − ∑ i = 1 n p ( i ) log ⁡ 2 p ( i ) H(x) = {\rm{ - }}\sum\limits_{i = 1}^{\rm{n}} {p(i)\log _2 p(i)} H ( x ) = − i = 1 ∑ n ​ p ( i ) lo g 2 ​ p ( i ) X a 1 a_1 a 1 ​ a 2 a_2 a 2 ​ a 3 a_3 a 3 ​ a 4 a_4 a 4 ​ P(X) 1 2 \frac{1}{2} 2 1 ​ 1 4 \frac{1}{4} 4 1 ​ 1 8 \frac{1}{8} 8 1 ​ 1 8 \frac{1}{8} 8 1 ​ class test { public static void main(String[] args) { double []p = {1.0/2, 1.0/4, 1.0/8, 1.0/8}; double H = 0; for(int i = 0; i < p.length; i++) { H += -p[i] * (Math.log(p[i]) / Math.log(2)); } System.out.println(H); } } 实战演练: 一字符串由大写字母、小写字母和数字组成,求该字符串的信息熵。(本人水平有限,精通《信息论

信息熵

这一生的挚爱 提交于 2019-11-29 22:19:44
信息论 信息论的目的是对一个信号包含的信息的多少进行量化。1948年香农发表论文 A Mathematical Theory of Communication ,其中采用了概率论的方法来研究通信中的问题,并对信息进行了定量描述,第一次提出信息熵的概念 信息量 信息量是对信息的量化。出发点是一个不太可能发生的消息比一个很可能会发生的消息提供了更多的信息。比如“明天早上太阳会升起”是一个确定会发生的事情, 它提供的信息很少,相当于一句废话;而“明天早上会发生日食”这句话则不太可能发生,但它包含了很多的信息量。所以信息量与发生的概率一定是一个递减的关系(概率大则信息量少,概率小则信息量大)。如此定义信息量: \[ I(x) = -log_2{p} \] 不一定以2为底,有的人以10为底,或以 e 为底 信息熵 信源含有的信息量是信源发出的所有可能消息的平均不确定性,即包含的信息量的平均统计值。信息论创始人香农把信源包含的信息量称为信息熵(Entropy)。假设信息D包含m种可能的事件,则信息熵为: \[ H(D) = - \sum_{i=1}^m{p_i log_2{p_i}} \] 信息熵的单位为 bit 来源: https://www.cnblogs.com/minding/p/11537564.html

信息论_熵

血红的双手。 提交于 2019-11-29 19:35:18
信息论主要是对信号所含信息的多少进行量化,其基本思想是一个不太可能发生的事情要比一个可能发生的事情提供更多的信息。 度量信息的集中常用指标有信息熵、条件熵、互信息、交叉熵。 信息熵 信息熵(entropy)简称熵,是对随机变量不确定性的度量。定义为: H(x)=∑p i *log 2 (p i ) 用以下代码来实现对0-1分布变量概率与其信息熵的关系: import matplotlib.pyplot as plt # %matplotlib inline 只有Jupyter需要加这一行,其余常用editor都无需此行代码 p = np.arange(0, 1.05, 0.05) HX = [] for i in p: if i == 0 or i == 1: HX.append(0) else: HX.append(-i * np.log2(i) - (1 - i) * np.log2(1 - i)) plt.plot(p, HX, label='entropy') plt.xlabel('P') plt.ylabel('H(x)') plt.show() 其中p是一个一维数组,其值范围为[0,1.05),步长为0.05,HX是一个列表,用于记录一维数组每个数据的熵值。 得到结果如下: 可见,当概率为0或1时,H(x)= 0 ;当 p = 0.5 时,随机变量的不确定性最大

交叉熵

妖精的绣舞 提交于 2019-11-29 12:32:50
参考: http://www.cnblogs.com/fantasy01/p/4581803.html?utm_source=tuicool http://blog.csdn.net/xbmatrix/article/details/58248347 https://www.zhihu.com/question/41252833/answer/141598211 1、信息 引用香农的话,信息是用来消除随机不确定性的东西,则某个类(xi)的信息定义如下:                        2、信息熵 信息熵便是信息的期望值,可以记作:                             熵只依赖X的分布,和X的取值没有关系,熵是用来度量不确定性,当熵越大,概率说X=xi的不确定性越大,反之越小,在机器学期中分类中说,熵越大即这个类别的不确定性更大,反之越小,当随机变量的取值为两个时,熵随概率的变化曲线如下图:                      当p=0或p=1时,H(p)=0,随机变量完全没有不确定性,当p=0.5时,H(p)=1,此时随机变量的不确定性最大 更特别一点,如果是个二分类系统,那么此系统的熵为: 3. 条件熵 X给定条件下Y的条件分布的熵对X的数学期望,在机器学习中为选定某个特征后的熵,公式如下:                 

理解机器学习中的熵

99封情书 提交于 2019-11-29 03:17:38
1. 信息量和信息熵 熵是表征系统混乱度/不确定度的物理量,在热力学、信息学中都有其各自的含义,而在机器学习更多沿用了信息熵的概念,即解释随机变量分布所需要的信息量(下文给出数学定义),或者从信息编码的角度来说,用某种方式对随机变量分布进行编码所需要的编码信息长度。 假设一个离散型随机变量 x x x ,其分布为 p ( x ) p(x) p ( x ) ,如何计算其熵呢,我们先引入信息量的概念:事件发生所蕴含的信息。比如对于【中国队又没进世界杯】这个事件,我们已经习以为常,所以其中包含的信息量非常有限;而对于【中国队进了世界杯】,我们会很吃惊,所以其中包含的信息量非常大,需要大量的信息去确定它。也就是说, 信息量和事件发生的概率有关 。信息量的度量方式 I ( x ) I(x) I ( x ) 应满足,p(x)越大,其信息量越小(事件越确定,所需要的编码长度越短),而p(x)越小,其信息量越大。 用 I ( x ) = − l o g ( p ( x ) ) I(x)=-log(p(x)) I ( x ) = − l o g ( p ( x ) ) 来表示信息量(常用 e e e 或2作为对数底),特殊的 0 l o g 0 = 0 0log0=0 0 l o g 0 = 0 ,即不可能事件的信息量为0。这种定义方式有如下几个优点: (1)恒非负,且单调递减,当p(x)=1时为0