一直想记录一下机器学习的笔记,奈何水平不足,不过还是想挑战一下自己。话不多说,下面开始。
熵
熵 (entropy) 泛指某些物质系统状态的一种量度,某些物质系统状态可能出现的程度。亦被社会科学用以借喻人类社会某些状态的程度。
信息熵
信息熵的由来
信息熵这个词是C.E.Shannon(香农)从热力学中借用过来的。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。
信息熵是一种衡量信息不确定性的物理量,信息熵越大,信息越难以确定。
一个例子:抛一枚硬币,其为正的概率为 1/2,为负的概率为 1/2.
则此时抛硬币的结果有 2 种情况。
若抛 2 枚硬币,则有 (正, 正), (正, 负), (负, 正), (负, 负) 4 种情况。
...
若抛 n 枚硬币,则有
注意到硬币的个数 (n) 与情况数 (m) 的关系:
对于事件 X,其拥有 m 个等概率的不确定情况,其信息熵为(单位:bit):
其中 p(x) 即表示对于每一种情况,其发生的概率。
概率不相等情况的信息熵
以上是等概率条件下的信息熵,但如果概率不相等,要怎么计算呢?
举一个例子:
情况 | A | B | C |
---|---|---|---|
p | 1/2 | 1/3 | 1/6 |
我们可以分别计算出每种情况的信息熵:
再根据每种情况的权重进行累加,得到总体的信息熵:
对于事件 X,情况数为 N ,其每一种情况 xi 的概率为 p(xi),其信息熵为:
信息熵可以衡量事件的不确定性,熵越大,事件就越不确定,如抛硬币:
如果其为正、负的概率各为1/2,此时要猜中正负显然是困难的,其信息熵为:
此时猜中正负显然简单许多,其信息熵为:
交叉熵
交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。
交叉熵是一种衡量两个概率分布间差异的度量,它在机器学习领域有着广泛的应用,比如对于真实结果
Y 与训练集得出的结果
对于 P,Q 两种概率分布,交叉熵的计算公式为:
而训练得到的预测结果 Q = {1/4, 1/8, 1/8, 1/2}
则其交叉熵为:
即 Q = P = {1/4, 1/4, 1/4, 1/4}
同时得出另一个结论,交叉熵越小,两个概率分布就越相似。
相对熵
既然交叉熵可以衡量两个概率分布的相似程度,其最小值又等于信息熵,那为什么不令一个值 = 交叉熵 - 信息熵,其为 0 则表示两个概率分布完全相同呢?
这就是相对熵,又称 KL(Kullback-Leibler) 散度。
相对熵的计算公式为:
若 P = Q = {1/4, 1/4, 1/4, 1/4}
条件熵
条件熵,即在给定条件下的不确定性,衡量一个概率分布对另一个概率分布的期望。
举一个例子:
颜色 | 是不是好瓜 |
---|---|
青绿 | 是 |
青绿 | 否 |
青绿 | 是 |
深绿 | 是 |
深绿 | 否 |
若要求是不是好瓜 Y 关于颜色 X 的条件熵:
首先青绿有 3 个瓜,深绿有 2 个瓜,则 P{X=青绿} = 3/5, P{X=深绿} = 2/5.
则在 X=青绿 中,有 2 个是好瓜,1 个不是好瓜:
增益系数
所谓信息增益系数,即在获取信息前后熵的差值。
举一个例子:
做一道单项选择题,有ABCD四个选项。
此时由于什么都不知道,其每个选项的概率为1/4:
此时 ABCD 的概率分别为 1/9, 1/9, 2/3, 1/9:
基尼系数
基尼系数是衡量集合纯度的量,基尼系数越低,集合越纯(不确定性越低);基尼系数越高,集合越不纯(不确定性越高)。
基尼系数的计算公式:
对于上面抛硬币的例子:
如果正反的概率各为 1/2: