白话机器学习算法(十七)熵,条件熵

时间:2021-07-01 19:57:57

在信息论中,要对符号进行编码,一个符号的熵就是要表示这个符号所需要的最少二进制数位数;这是一个极限;这也是信息压缩的基础;

条件熵,当两个符号之间存在某种关系,或者两个随机变量不互相独立的时候,对于A,B两个随机事件,非独立,知道A的情况,B的不确定性减少;

举个例子:

A事件是:季节{春,夏,秋,冬},B事件是:天气{下雨,下雪,晴天,多云};那就可以画出一个二维表格,最直观的是 夏天&下雪的概率<冬天&下雪的概率;当我知道天气是下雪的时候,我就有很大的概率认为季节是冬天;这说明:我知道了B事件的情况,对A的不确定性减少了;

如果A,B是独立的,比如,A事件是季节{春,夏,秋,冬},B事件是交通的情况{堵,不堵},我知道B的情况,对A的不确定性并没影响;

上面说的是概念性的理解,如果用数学公式对应起来理解,为什么会出现这样的情况?

P(A|B)已知B的情况,A的概率有没有变化?当A,B独立,P(A|B)=P(A) 说明 没有变化,当AB不独立的时候,即两者存在某种相关性质,换句话说就是B确定的前提下,A的概率分布与在总体上看不一样;

信息论中有熵,用来表示时间的不确定性,这个跟这个事件的可能值数目,还有取每个值的概率,比如有A事件{1,2,3,4}每个取值等概,那么熵为2;如果A{1,2}每个取值等概率,熵为1;当取值数目一样的时候A{1,2,3,4},P(A=1)=P(A=2)=P(A=3)=1/6,P(A=4)=1/2,那么这个熵小于2;这是为什么?

因为在数据压缩方面,对于小概率事件就要用长的编码,大概率事件用短编码,这样最后平均每个事件的编码就比较小!而对于等概率事件,这种策略就没法使用,就没法实现数据的压缩;熵说的就是这种下界;

反过来,当我们说一个事件熵很大,就意味着:

1:这个事件的取值范围很多

2:(或者)这个事件中每个取值的概率比较均匀

以上两者都代表着这个事件的不确定性很大,所以我们又说熵是一种不确定性的度量

那么什么是条件熵呢,为什么H(A|B)小于等于H(A)呢?

上面说了,知道了B,

1:首先A的取值范围会缩小,为什么?拿上面一个例子来说,我知道了天气是下雪,那么几乎可以说A的取值只能从{春天,冬天}里选择;

2:A中每个取值的概率分布会发生变化P(A|B=b)与P(A)的概率分布不同;

数学证明H(A|B)=H(AB)-H(B)<=H(A);

即已知B的结果,A的不确定性减少;要表述A这个事件的编码数更少;

 

在决策树中,我们关心的是H(结果|属性)的关系,即已知某属性,结果的不确定性还有多少;我们需要知道,哪个属性能使得结果的不确定性减少最多;

这就是所谓的信息增益,以及信息增益率;在决策树中会详细讲解!