在学习决策树类的算法时,总是绕不开 信息熵、Gini指数和它们相关联的概念,概念不清楚,就很难理解决策树的构造过程,现在把这些概念捋一捋。

信息熵

信息熵,简称熵,用来衡量随机变量的不确定性大小,熵越大,说明随机变量的不确定性越大。计算公式如下:

考虑二元分布的情况,当取2为对数底时,可以得到如下的函数曲线。可以看到,当p=0.5时,不确定性最大,熵的值是1,也最大,当p=0或1时,没有不确定性,熵的值最小,是0。

条件熵

我们在分析某个特征对随机变量的影响时,需要计算条件熵,即随机变量Y的信息熵相对特征X的条件期望,公式如下:

互信息

互信息,也叫信息增益,是熵和条件熵的差值,g(Y,X) = H(Y) - H(Y|X)。

信息增益的含义是,某一个特征会使得随机变量的不确定性下降多少。下降的越多,说明这个特征与标签的相关性越强,分类效果自然越好。在构造决策树时,常用的做法是选择信息增益更大的特征构造分支。

另外,在构造决策树时,信息增益有两种算法,一是差值(ID3),二是比值(C4.5),比值是差值与特征的信息熵的比例,公式如下所示:

比值比差值能更准确的反应不确定性变化的程度,原因是,如果按差值选取节点,那些取值数量更多的特征总是会排在前面,在比值的计算公式中,分母可以度量特征的取值数量,相当于对各个特征做了归一化,所以不会出现,特征取值数量多,信息增益一定更大的情况。

Gini指数

Gini指数和熵类似,都是衡量随机变量不确定程度的,计算公式是:

Gini指数有一个比较直观的解释:从样本中任意挑选两个,两个样本属于不同类别的概率就是Gini指数。从Gini指数的定义和解释就可以发现,它和熵和类似,不确定性越大,Gini指数和熵也越大。不同点在于Gini指数的最大值是0.5,不是1。把Gini指数公式和信息熵公式都变换成求和的形式,可以发现二者只相差一个乘积项,Gini指数是 1-p,信息熵是-log(p),就是这么一点点差别。

Gini指数的另一种说法是不纯度(impurity),Gini指数越大,不确定性越大,数据越混乱,不纯度越高。

笔者没研究过信息熵和Gini指数的发迹史,但可以猜测,Gini指数和信息熵很可能是不同领域的研究者分别建立的评价不确定性的指标,从含义上看,二者殊途同归。在实际使用时,往往用Gini指数来构造CART。

熵 互信息 Gini指数 和 不纯度的更多相关文章

  1. 决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)

    1. 1.问题的引入 2.一个实例 3.基本概念 4.ID3 5.C4.5 6.CART 7.随机森林 2. 我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款? ...

  2. 用Excel建模进行决策树分析

    决策树(Decision Tree)在机器学习中也是比较常见的一种算法,最早的决策树算法是ID3,改善后得到了C4.5算法,进一步改进后形成了我们现在使用的C5.0算法,综合性能大幅提高. 算法核心: ...

  3. 决策树--信息增益,信息增益比,Geni指数的理解

    决策树 是表示基于特征对实例进行分类的树形结构       从给定的训练数据集中,依据特征选择的准则,递归的选择最优划分特征,并根据此特征将训练数据进行分割,使得各子数据集有一个最好的分类的过程.   ...

  4. 笔记︱风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本笔记源于CDA-DSC课程,由常国珍老师主讲 ...

  5. 风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  6. 决策树 ID3 C4.5 CART(未完)

    1.决策树 :监督学习 决策树是一种依托决策而建立起来的一种树. 在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某 ...

  7. AI工程师基础知识100题

    100道AI基础面试题 1.协方差和相关性有什么区别? 解析: 相关性是协方差的标准化格式.协方差本身很难做比较.例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们 ...

  8. 【十大经典数据挖掘算法】CART

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 前言 分类与回归树(Class ...

  9. CART分类与回归树与GBDT(Gradient Boost Decision Tree)

    一.CART分类与回归树 资料转载: http://dataunion.org/5771.html        Classification And Regression Tree(CART)是决策 ...

随机推荐

  1. ADT下载地址(含各版本)

      2015/05/07 新增 ADT-23.0.6.zip2015/01/18 新增(未测试,不知下载过程中是否有问题,请网友自行测试,最好能把测试结果告知,谢谢)ADT-23.0.3.zipADT ...

  2. 3D MAX 人物骨骼建设

      3DMax方面所涉及的专业知识:                       (1)一下的关于3DMax中对于人物的设计和操作均需要在对3DMax基础知识熟练掌握的情况下进行的. (2)骨骼架设: ...

  3. Spring in Action 4th 学习笔记 之 AOP

    前提:本文中的AOP仅限于Spring AOP. 先说说为什么需要AOP 最简单的一个例子就是日志记录,如果想记录一些方法的执行情况,最笨的办法就是修改每一个需要记录的方法.但这,真的很笨... 好的 ...

  4. Spring @ControllerAdvice @ExceptionHandler

    先来两个连接: Spring3.2新注解@ControllerAdvice Spring 注解学习手札(八)补遗——@ExceptionHandler @Controller Class中如果有@Ex ...

  5. CMutex、CCriticalSection、CSemaphore、CEvent、WaitForSingleObject 的小例子

    一.CMutex CMutex mutex; mutex.Lock(); // 互斥的动作 // mutex.Unlock(); 二.CCriticalSection CCriticalSection ...

  6. 从头认识java-18.2 主要的线程机制(7)join

    这一章节我们来讨论一下join. 1.什么是join? 阻塞当前线程,让.join的线程先做完.然后再继续当前线程 以下是api的解释: A.join,在API中的解释是,阻塞当前线程B,直到A运行完 ...

  7. socket client简单传输数据

    1.整数转换为用于TCP传输的二进制 _host = "127.0.0.1" _port = 5678 _address = (_host, _port) s=socket.soc ...

  8. erlang二进制的难理解的地方,有点神奇

    40> <<A:16>> = <<1,2>>.<<1,2>>41> <<B:16/bits>> ...

  9. 真想用c#开发个 wp五笔输入法。。。奈何网上资料太少,源码都是c++写的。求大神指点!!!

    真想用c#开发个 wp五笔输入法...奈何网上资料太少,源码都是c++写的.求大神指点!!!!

  10. php如何定时执行任务

    PHP的实现决定了它没有Java和.Net这种AppServer的概念, 而http协议是一个无状态的协议, php只能被用户触发, 被调用, 调用后会自动退出内存, 没有常驻内存, 就没有办法准确的 ...