数据挖掘经典算法_条件熵、信息增益介绍

一、条件熵

首先与信息熵进行类比,从信息熵的计算公式中我们知道它是考虑到该随机变量的所有可能取值,即所有可能发生事件所带来信息量的期望。由此顾名思义

条件熵的定义是: 定义为在给定X的条件下,Y的条件概率分布的熵对X的数学期望。

定义比较抽象,我们可以通过数学符号表示:
若设有随机变量(X,Y),其联合概率分布我们可以表示为:

条件熵H(Y|X)表示在已知随机变量X的条件下,随机变量Y的不确定性。
也就是说:在给定的随机变量X条件下,随机变量Y的条件熵我们用H(Y|X)表示。
信息熵计算公式:

综上,可以结合信息熵的计算公式推导出条件熵的计算公式:

需要注意的是条件熵中的X也是一个变量,表示的是在一个变量X的条件下,另一个变量Y熵对X的期望。(变量X的每一个值都会取,因此进行求和操作)

二、举个栗子

假设有以下数据:前四列是评价标准,最后一列为结论

若将最终的结论看做随机变量Y={嫁,不嫁},从表格中统计得到嫁的个数为6,概率是6/12 = 1/2 ,那么不嫁的概率也为 1/2,通过信息熵计算公式得到:

H(Y) = -(1/2)log(1/2) + (-(1/2)log(1/2))

此时,引入另一个变量X代表长相,X={帅,不帅}
从表格中统计得到,在不帅的前提下有四条数据,其中嫁的个数为三条,概率为3/4;不嫁的个数为一条,概率为1/4,故可以得到:

P(X=不帅) = 4/12 = 1/3
H(Y|X=不帅) = -(1/4)log(1/4) + (-(3/4)log(3/4))

同理:可以从表格中得到,在帅的前提下有八条数据,其中嫁的到个数为三条,概率为3/8;不嫁的个数为五条,概率为5/8,故可以得到:

P(X=帅) =1- 4/12 = 8/12 = 2/3
H(Y|X=帅) = -(5/8)log(5/8) + (-(3/8)log(3/8))

综上: 可以计算条件熵 H ( Y | X = 长相 )

H ( Y | X = 长相 ) = p ( X = 帅 ) * H ( Y | X = 帅 ) + p ( X = 不帅 ) * H ( Y | X = 不帅 )
= 2/3 * [-(5/8)log(5/8) + (-(3/8)log(3/8))] + 1/3 * [-(1/4)log(1/4) + (-(3/4)log(3/4))]

三、信息增益

在了解信息熵和条件熵之后,信息增益指的是信息熵条件熵差值

信息增益 = 信息熵 - 条件熵
从前面我们了解到:信息熵是指随机变量的复杂度,即不确定度
条件熵是指在某一条件下,随机变量的复杂度
那么 信息增益则代表:在某一条件下,信息复杂度减少的程度

例如我们在采用决策树算法解决相关的问题时,当存在多个特征值供我们选择,应该选择哪一个特征值来进行分类,或者按照什么样的标准来完成特征选择,此时在选择标准时就需要用到信息增益的相关计算方法。

标准: 若选择某一特征,其信息增益的值 最大 ,也就是说信息复杂度减少的程度是最大的,那么选择这个特征进行分类。

四、还是上面的栗子

若将最终的结论看做随机变量Y={嫁,不嫁},从表格中统计得到嫁的个数为6,概率是6/12 = 1/2 ,那么不嫁的概率也为 1/2,通过信息熵计算公式得到:

H(Y) = -(1/2)log(1/2) + (-(1/2)log(1/2)) = -log(1/2) = 0.3010

现在引入另外一个变量X表示身高 X = {矮,中,高} 从表格中得到:
矮的个数为7,其中嫁的个数为1,概率为1/7;不嫁的个数为61,概率为6/7
中的个数为2,其中嫁的个数为2,概率为1;不嫁的个数为0,概率为0
高的个数为3,其中嫁的个数为3,概率为1;不嫁的个数为0,概率为0
根据条件熵公式:
我们可以得到:

H(Y | X = 矮) = -(1/7)log(1/7) + (-(6/7)log(6/7)) = 0.1781
H(Y | X = 中) = -1log1 - 0 = 0
H(Y | X = 高) = -1log1 - 0 = 0
P(X = 矮) = 7/12;P(X = 中) = 2/12;P(X = 高) = 3/12
故条件熵:H ( Y | X = 身高 ) = 7/12 * 0.1781 + 2/12 * 0 + 3/12 * 0 = 0.1039

信息增益 = 信息熵 - 条件熵 = H ( Y ) - H ( Y | X = 身高) = 0.3010-0.1039 =0.1971

从计算结果中我们可以得到结论,当一个女生不了解男生的任何信息时,决定嫁给这个男生的不确定性为0.3010;若这个女生了解了男生的身高信息后,不确定性减少了0.1971,不确定度为0.1039。当某一个属性的不确定度为0时,就一定会嫁给这个男生。
因此,可以计算出这四个评价标准当中,信息增益最大的属性,当一个女生了解这个属性后,嫁与不嫁的不确定度减少的是最大的。

数据挖掘经典十大算法_条件熵、信息增益介绍相关推荐

  1. 数据挖掘经典十大算法_对基本概念的理解

    数据挖掘经典十大算法 一.十大经典算法 二.信息量 信息量是对信息的度量,例如时间的度量是秒,我们考虑一个离散的随机变量x时,当我们观察到的这个变量的一个具体值的时候,我们接收到的多少信息 用信息量来 ...

  2. 数据挖掘经典十大算法_K-Means算法

    数据挖掘经典十大算法_K-Means算法 一.从故事理解K-Means Clustering Algorithm 1.有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告 ...

  3. 数据挖掘经典十大算法_C4.5算法

    C4.5算法 一.对算法的通俗理解 C4.5算法是在ID3算法上的改进而来,为啥这么说呢?首先,我们知道ID3算法的核心是在决策树各个结点上应用信息增益做为特征选择的标准,递归的构建决策树,信息增益 ...

  4. 机器学习系列(二)ML经典十大算法之一:决策树算法--从代码和统计学角度谈谈cs是如何预测你的行为

    写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿.这名字是来自world order乐队的一首HAVE A NICE DAY.如今,走到现在很多坎坷和不顺,如今终于 ...

  5. 常用十大算法_回溯算法

    回溯算法 回溯算法已经在前面详细的分析过了,详见猛击此处. 简单的讲: 回溯算法是一种局部暴力的枚举算法 循环中,若条件满足,进入递归,开启下一次流程,若条件不满足,就不进行递归,转而进行上一次流程. ...

  6. 实用 | 数据挖掘的十大算法

    为了进行数据挖掘任务,数据科学家们提出了各种模型,在众多的数据挖掘模型中,国际权威的学术组织 ICDM (the IEEE International Conference on Data Minin ...

  7. 【数据挖掘】十大算法之K-Means K均值聚类算法

    目录 1 Kmeans步骤 2 kmeans损失函数 3 优缺点 4 如何调优和改进 5 改进的算法 1 Kmeans步骤 (1)数据预处理,如归一化.离群点处理等 (2)随机选取K个簇中心,记为u1 ...

  8. 【数据挖掘】十大算法之SVM支持向量机分类算法

    目录 1 基本概念 2 线性可分支持向量机 2.1 定义 2.2 相关概念 2.3 学习算法 4 线性支持向量机 4.1 软间隔最大化 4.2 线性支持向量机的原始最优化问题 4.3 线性支持向量机定 ...

  9. 【数据挖掘】十大算法之EM最大期望估计算法

    目录 1 简介 2 投硬币问题 3 EM算法过程 4 EM收敛性定理 1 简介 EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的迭代由两步组成:E步, ...

最新文章

  1. Num55 boss09(activiti安装以及API)
  2. 读取jar包资源代码赏析
  3. 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放...
  4. 【收藏】Oracle存储过程读写文件
  5. Linux 使用ntpdate自动对时
  6. Boost智能指针——weak_ptr
  7. 安卓SDK之YUV-Image
  8. WPF 路径动画PathAnimations的使用
  9. 5月21日伦敦见!荣耀20官宣:P30“同款”ToF镜头加持?
  10. UUID生成唯一激活码
  11. 第五届CCPC中国大学生程序设计竞赛河南省赛-网络模拟赛
  12. CCS软件的安装教程
  13. ISM模型的MATLAB代码
  14. DOS命令教程 第二章——ping命令
  15. 【2019暑假】市中小学生游泳比赛-酱油记By Chavapa
  16. 私有云服务器和公有云服务器有什么区别
  17. pythonapp自动化_基于python的App UI自动化环境搭建
  18. 一个年轻化品牌的自我修养:打造人格化流量
  19. 教你如何使用Python破解WIFI密码
  20. 为何贩卖焦虑的文章如此受欢迎???

热门文章

  1. GoJs图表的布局类型
  2. python里使用asyncore模块
  3. 红米5a手机html查看器,红米5A如何截图 红米5A手机截图方法【详细介绍】
  4. 3.原子操作的实现原理
  5. SEDA源码解读(二)
  6. ResNet详解(pytorch)
  7. PM常用语看这篇就够了
  8. 解决tar 时间戳XXX是未来的XXX秒之后问题
  9. json转对象(GsonFormatPlus)
  10. MySQL日期字符串转换成NULL值的异常处理