什么是条件熵? 什么是信息增益? 它的作用是什么?
条件熵 Conditional entropy
如前面文章所说的, 人工智能通识 - 科普 - 什么是熵, 熵是指系统的不确定性, 随机性, 这种性质是以系统输出的数据结果进行表现的, 如硬币和骰子的统计数据, 所以也可以看做数据的不确定性, 随机性.
系统信息熵的计算公式是:
但当我们获得更多消息的时候, 系统的不确定性就会减少.
比如说这个问题, 明天会下雨吗? 假设我们有历史上每天是否下雨的 1000 条记录, 其中 100 天下雨, 900 天不下, 那么我们这个系统的信息熵可以计算:
但是, 假如我们知道明天是否阴天. 因为阴天经常会导致下雨, 所以那么明天下雨的确定性就会上升, 不确定性就会下降, 熵就会减少.
这个就是条件熵, 即在某个条件下, 数据变化的不确定性.
条件熵的计算
仍然以下雨为例, 比如上面 1000 天的数据中, 200 天是阴天的, 800 天使不阴天的(晴天), 其中阴天情况下 90 天下雨, 不阴天情况也有 10 天下雨(太阳雨 ฅ´ω`ฅ).
那么已知阴天情况下, 共 200 天, 90 天下雨, 110 天不下雨, 是否下雨的条件熵是:
这个条件熵接近 1, 就是阴天且下雨的概率接近一半一半.
熵是 1 就是正反面一半一半, 信息量是 1 比特就是可以消除 50% 的不确定性.
同样的, 已知明天不阴天 (晴天) 的情况下, 共 800 天, 790 天不下雨, 10 天下雨, 这个条件熵是:
这个条件熵很低, 确定性很高, 晴天当然可以几乎确定是不下雨的.
如果熵为 0, 则说明绝对的确定.
但上面只是分开计算了阴天 = 是和阴天 = 否的情况, 我们还要把它们按照概率比例相加一起才算是整个阴天与否条件下是否下雨的条件熵:
近乎于 1, 也就是说, 如果我们知道明天是否阴天, 那么是否下雨也就基本确定了一半, 这和 200 个阴天有 90 天下雨的感性认知基本一致.
总结上面我们计算方法, 整体条件熵等于条件每个可能值的条件熵之概率加权和:
而每个可能值的条件熵, 计算方法基本上和信息熵公式一致:
信息增益 Information Gain
信息增益是指某个信息条件下, 系统整体的熵减少了多少, 也就是整体信息熵减去条件信息熵的结果.
信息增益有什么用?
我们知道, 世界上某个结果的出现往往是很多原因作用的结果, 比如下雨这个事情就可能受到气温, 气压, 温度, 湿度等等多种原因的影响.
但是, 各种因素中哪一个因素对下雨影响最大? 哪一些影响比较小?
如果我们也有 1000 天的气温, 气压, 温度, 湿度数据, 我们就可以计算出它们分别的条件熵, 因为条件熵越大, 那么就对结果的影响越大.
以上面的例子, 是否阴天这个条件可以让是否下雨的不确定性下降 1.6899-0.9738=0.7161, 这个作用是非常明显的, 相当于问你 "明天有多大概率下雨?" 和 "明天如果阴天的话有多大概率下雨?" 的差别.
下一篇我们将用更完整一些的案例来深化信息增益的计算方法和应用价值.
来源: http://www.jianshu.com/p/322c30ca4abc