系列文章 pdf 版本已经上传至: https://github.com/anlongstory/awsome-ML-DL-leaning/tree/master/xiaoxiang-notes
欢迎 Star 和下载
这里用 Venn 图来表示事件A 与事件 B 的关系, P ( A ) P(A) P(A) 与 P ( B ) P(B) P(B) 分别表示它们各自发生的概率,其中它们的交叠区域用 P ( A , B ) P(A,B) P(A,B) 表示 A 和 B 共同发生的概率。 基于上面的表示,可以给出条件概率的公式:
P ( A ∣ B ) = P ( A , B ) P ( B ) P(A|B)= \frac{P(A,B)}{P(B)} P(A∣B)=P(B)P(A,B)
贝叶斯公式是建立在条件概率的基础上,寻找事情发生的原因。
以事件A为例,在上面提到的全概率公式 P ( A ) P(A) P(A) 就称为先验概率(Prior probability),即在事件 B 发生之间我们对事件 A 的概率有一个判断。 P ( A ∣ B ) P(A|B) P(A∣B) 称为后验概率(Posterior probability),即在事件 B 发生以后我们对事件 A 的发生概率有了一个新的估计。
假如在编号为 1,2 盒子里各有 10 个球, A 中有 4红,6白,B 中有 2红,8白。现从它们之中随机取一个球是红色的球,问这个球从编号 1 盒子中取得概率是多少?
设取出红球的事件为 B,从编号 1 盒子中抽球的事件为 A,所以从 A 盒子中取出一个球并且 是红球的概率可以表示为 P ( B ∣ A ) P(B|A) P(B∣A):
P ( B ) = 6 / 20 , P ( A ) = 10 / 20 , P ( B ∣ A ) = 4 / 10 P(B)=6/20,P(A)= 10/20 , P(B|A)= 4/ 10 P(B)=6/20,P(A)=10/20,P(B∣A)=4/10
根据贝叶斯公式可以得到:
P ( A ∣ B ) = P ( A ) P ( B ∣ A ) P ( B ) = ( 10 / 20 ) ∗ ( 4 ∗ 10 ) 6 / 20 = 2 3 P(A|B)= \frac{P(A)P(B|A)}{P(B)}= \frac{(10/20)*(4*10)}{6/20}=\frac{2}{3} P(A∣B)=P(B)P(A)P(B∣A)=6/20(10/20)∗(4∗10)=32
可以看到在事件 B 发生之间从 A 盒子中取球的先验概率为 1 2 \frac{1}{2} 21,当事件 B 发生以后 A 的后验概率就变成了 2 3 \frac{2}{3} 32 。
信息本身是一个很抽象的概念,但是信息论之父香农在 1948 年的论文中借鉴了热力学中“熵(entropie)”的概念,提出了信息熵。在热力学中,熵是表示体系的混乱程度,体系越混乱,熵就越大。对应到信息论中,熵(信息熵)表示信息量的多少(不确定程度) ,熵越大,不确定性就越大,而不确定性大,代表事情发生的概率小,所以不确定性是概率的减函数。
我们知道,当事件A与事件B相对独立的时候,事件A,B 一起发生的概率为: P ( A , B ) = P ( A ) P ( B ) P(A,B)=P(A)P(B) P(A,B)=P(A)P(B)
而对于两个独立事件的不确定性应该满足可加性,设不确定性函数 f ( x ) f(x) f(x) 为: f ( A , B ) = f ( A ) + f ( B ) f(A,B)=f(A)+f(B) f(A,B)=f(A)+f(B)
首先将两个数相乘转换称两个数相加的关系,很显然,我们可以借助对数函数的性质,又因为两个是负相关,所以前面再加一个负号,这样我们就可以得到不确定性的计算表达式:
f ( p ) = l o g 1 p = − l o g p f(p)=log \frac{1}{p}= - log p f(p)=logp1=−logp
以二分类问题为例,设事件 A 与 事件 B 发生的概率分别为 p p p 和 1 − p 1-p 1−p,根据信息熵的定义:
H ( U ) = − p l o g p − ( 1 − p ) l o g ( 1 − p ) H(U)=-plogp-(1-p)log(1-p) H(U)=−plogp−(1−p)log(1−p)
H ( U ) H(U) H(U) 的曲线如下:
由上面的概率公式变换一下,可以得到:
P ( A , B ) = P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A,B)=P(A|B)P(B)=P(B|A)P(A) P(A,B)=P(A∣B)P(B)=P(B∣A)P(A)
根据不确定函数对于概率的关系可得熵有如下关系:
H ( A , B ) = H ( A ∣ B ) + H ( B ) = H ( B ∣ A ) + H ( A ) H(A,B)=H(A|B)+H(B)=H(B|A)+H(A) H(A,B)=H(A∣B)+H(B)=H(B∣A)+H(A)
互信息表示的是事件之间在不确定性熵相互影响的程度。
由公式(6)可以得到:
H ( A , B ) = H ( A ∣ B ) + H ( B ) = H ( B ∣ A ) + H ( A ) H(A,B)=H(A|B)+H(B)=H(B|A)+H(A) H(A,B)=H(A∣B)+H(B)=H(B∣A)+H(A)
这里的条件熵就是 H ( A ∣ B ) H(A|B) H(A∣B) 或者是 H ( B ∣ A ) H(B|A) H(B∣A)。根据上面的公式可以得到条件熵的表达式为:
H ( A ∣ B ) = H ( A , B ) − H ( B ) H(A|B)=H(A,B)-H(B) H(A∣B)=H(A,B)−H(B)
H ( A , B ) − H ( B ) = − ∑ x , y p ( x , y ) l o g p ( x , y ) + ∑ y p ( y ) l o g p ( y ) = − ∑ x , y p ( x , y ) l o g p ( x , y ) + ∑ y ( ∑ x p ( x , y ) ) l o g p ( y ) = − ∑ x , y p ( x , y ) l o g p ( x , y ) + ∑ x , y p ( x , y ) l o g p ( y ) = − ∑ x , y p ( x , y ) l o g p ( x , y ) p ( y ) = − ∑ x , y p ( x , y ) l o g p ( x ∣ y ) H\left ( A,B \right )-H\left ( B \right ) \\ = - \sum_{x,y} p(x,y)logp(x,y)+\sum_{y}p(y)logp(y)\\ = - \sum_{x,y} p(x,y)logp(x,y)+\sum_{y} \left ( \sum_{x}p(x,y)\right ) logp(y) \\ = - \sum_{x,y} p(x,y)logp(x,y)+\sum_{x,y} p(x,y)logp(y)\\ = - \sum_{x,y} p(x,y)log \frac{p(x,y)}{p(y)}\\ = - \sum_{x,y} p(x,y)log p(x|y) H(A,B)−H(B)=−∑x,yp(x,y)logp(x,y)+∑yp(y)logp(y)=−∑x,yp(x,y)logp(x,y)+∑y(∑xp(x,y))logp(y)=−∑x,yp(x,y)logp(x,y)+∑x,yp(x,y)logp(y)=−∑x,yp(x,y)logp(y)p(x,y)=−∑x,yp(x,y)logp(x∣y)
再由上面公式进一步推导可得:
H ( A , B ) − H ( B ) = − ∑ x , y p ( x , y ) l o g p ( x ∣ y ) = − ∑ x ∑ y p ( y ) p ( x ∣ y ) l o g p ( x ∣ y ) = ∑ y p ( y ) ( − ∑ x p ( x ∣ y ) l o g p ( x ∣ y ) ) = ∑ y p ( y ) H ( X ∣ Y = y ) H\left ( A,B \right )-H\left ( B \right ) \\ = - \sum_{x,y} p(x,y)log p(x|y) \\ = - \sum_{x}\sum_{y}p(y)p(x|y)logp(x|y) \\ = \sum_{y} p(y)\left ( - \sum_{x}p(x|y)logp(x|y) \right )\\ = \sum_{y}p(y)H(X|Y=y) H(A,B)−H(B)=−∑x,yp(x,y)logp(x∣y)=−∑x∑yp(y)p(x∣y)logp(x∣y)=∑yp(y)(−∑xp(x∣y)logp(x∣y))=∑yp(y)H(X∣Y=y)
首先决策树是一种树形结构(不全是二叉树),其中每个内部节点表示在一个属性上的测试,每个分支都代表一个测试输出,每个叶节点都代表一种类别,决策树是以实例为基础的归纳学习。 决策树学习采用的是自顶向下的递归方法,基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵为 0,此时每个叶节点中的实例都属于同一类。很显然,决策树属于有监督学习。
根据前面数学基础部分的熵与条件熵的概念得到的熵分别为 经验熵 和 经验条件熵。假设特征 A A A 对训练数据集 D D D 的信息增益为 g ( D , A ) g(D,A) g(D,A),而这里的信息增益 g ( D , A ) g(D,A) g(D,A) 就是指经验熵 H ( D ) H(D) H(D)与经验条件熵 H ( D ∣ A ) H(D|A) H(D∣A)之差:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
这里用李航博士《统计学习方法》中的例子来帮助理解:
这里将上述表格的信息进行一个归纳总结,总共有 4 个特征,然后每个特征对应最后的类别为 是/否
:
特征 | 分布 |
---|---|
A1 年龄 | { 5青年 : [2是 3否] } { 5中年 : [ 3是 2否 ] } { 5老年 : [ 4是 1否 ] } |
A2 工作 | { 10没有工作 : [ 4是 6否 ] } { 5有工作 : [ 5是 ] } |
A3 有房子 | {9没有房子 : [ 3是 6否 ] } { 6有房子 : [ 6是 ] } |
A4 信贷 | { 6好 : [4是 2否] } { 5一般 : [ 1是 4否 ] } { 4非常好 : [ 4是 ] } |
类别 D | 9 是 6 否 |
以其中一个归纳举例,{ 5青年 : [2是 3否] } 表示 A1年龄 这个特征中 有 5 个是青年,5个青年中有 2 个批准申请贷款,3个不批准申请贷款,依次类推。
根据上面的定义式:
经验熵 H ( D ) H(D) H(D):
H ( D ) = − 9 15 l o g 2 9 15 − 6 15 l o g 2 6 15 = 0.971 H(D)= - \frac{9}{15}log_2 \frac{9}{15}- \frac{6}{15}log_2 \frac{6}{15}=0.971 H(D)=−159log2159−156log2156=0.971
因为其中 类别 D 有 9 个是批准,6个不批准。
条件经验熵 H ( D ∣ A 1 ) H(D|A^1) H(D∣A1):
最后求得 H ( D ∣ A 1 ) = 0.888 H(D|A^1)= 0.888 H(D∣A1)=0.888 。
这里得 D1,D2,D3,分别对应 青年,中年,老年,括号里的概率分别对应青年,中年,老年中的 是
和 否
的个数。
依次类推可以计算得到 H ( D ∣ A 2 ) H(D|A^2) H(D∣A2), H ( D ∣ A 3 ) H(D|A^3) H(D∣A3), H ( D ∣ A 4 ) H(D|A^4) H(D∣A4)。
信息增益 g ( D , A 1 ) g(D,A^1) g(D,A1):
根据定义式可得:
g ( D , A 1 ) = H ( D ) − H ( D ∣ A 1 ) = 0.971 − 0.888 = 0.083 g(D,A^1)=H(D)-H(D|A^1)=0.971-0.888=0.083 g(D,A1)=H(D)−H(D∣A1)=0.971−0.888=0.083
同理可得:
g ( D , A 2 ) = H ( D ) − H ( D ∣ A 2 ) = 0.971 − 0.647 = 0.324 g(D,A^2)=H(D)-H(D|A^2)=0.971-0.647=0.324 g(D,A2)=H(D)−H(D∣A2)=0.971−0.647=0.324
g ( D , A 3 ) = H ( D ) − H ( D ∣ A 3 ) = 0.971 − 0.551 = 0.420 g(D,A^3)=H(D)-H(D|A^3)=0.971-0.551=0.420 g(D,A3)=H(D)−H(D∣A3)=0.971−0.551=0.420
g ( D , A 4 ) = H ( D ) − H ( D ∣ A 4 ) = 0.971 − 0.608 = 0.363 g(D,A^4)=H(D)-H(D|A^4)=0.971-0.608=0.363 g(D,A4)=H(D)−H(D∣A4)=0.971−0.608=0.363
知道信息增益的概念后,这里直接给出信息增益率的定义式:
g r ( D , A ) = g ( D , A ) H ( A ) g_{r}(D,A)= \frac{g(D,A)}{H(A)} gr(D,A)=H(A)g(D,A)
继续上面的例子:
特征 A 1 A^1 A1 中有 5 个青年,5个中年,5个老年, A 2 A^2 A2 中 10 个没有工作,5个有工作,同理 A 3 A^3 A3, A 4 A^4 A4 可得:
H ( A 1 ) = − 5 15 l o g 2 5 15 − 5 15 l o g 2 5 15 − 5 15 l o g 2 5 15 = 1.585 H(A^1)=- \frac{5}{15}log_2\frac{5}{15}- \frac{5}{15}log_2\frac{5}{15}- \frac{5}{15}log_2\frac{5}{15}=1.585 H(A1)=−155log2155−155log2155−155log2155=1.585 H ( A 2 ) = − 10 15 l o g 2 10 15 − 5 15 l o g 2 5 15 = 0.918 H(A^2)=- \frac{10}{15}log_2\frac{10}{15}- \frac{5}{15}log_2\frac{5}{15}=0.918 H(A2)=−1510log21510−155log2155=0.918 H ( A 3 ) = − 9 15 l o g 2 9 15 − 6 15 l o g 2 6 15 = 0.971 H(A^3)=- \frac{9}{15}log_2\frac{9}{15}- \frac{6}{15}log_2\frac{6}{15}=0.971 H(A3)=−159log2159−156log2156=0.971 H ( A 4 ) = − 6 15 l o g 2 6 15 − 5 15 l o g 2 5 15 − 4 15 l o g 2 4 15 = 1.565 H(A^4)=- \frac{6}{15}log_2\frac{6}{15}- \frac{5}{15}log_2\frac{5}{15}-\frac{4}{15}log_2\frac{4}{15}=1.565 H(A4)=−156log2156−155log2155−154log2154=1.565
所以上面的信息增益为:
g r ( D , A 1 ) = 0.083 1.585 = 0.052 g_r(D,A^1)= \frac{0.083}{1.585}=0.052 gr(D,A1)=1.5850.083=0.052 g r ( D , A 2 ) = 0.324 0.918 = 0.353 g_r(D,A^2)= \frac{0.324}{0.918}=0.353 gr(D,A2)=0.9180.324=0.353 g r ( D , A 3 ) = 0.420 0.971 = 0.432 g_r(D,A^3)= \frac{0.420}{0.971}=0.432 gr(D,A3)=0.9710.420=0.432 g r ( D , A 4 ) = 0.363 1.565 = 0.232 g_r(D,A^4)= \frac{0.363}{1.565}=0.232 gr(D,A4)=1.5650.363=0.232
对于分类问题,假设有 K 类,属于第 k 类的概率为 p k p_{k} pk,则概率分布的基尼系数为:
G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p)=\sum_{k=1}^{K}p_{k}(1-p_{k})=1- \sum_{k=1}^{K}p_{k}^2 Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
如果样本集合 D D D 根据特征 A A A 是否取某一个值 a 被分割成 D 1 D_1 D1, D 2 D_2 D2两部分,则在特征 A A A 的条件下,集合 D D D 的基尼系数定义为:
G i n i ( D , A ) = ∣ D 1 ∣ D G i n i ( D 1 ) + ∣ D 2 ∣ D G i n i ( D 2 ) Gini(D,A)= \frac{|D_1|}{D}Gini(D_1)+\frac{|D_2|}{D}Gini(D_2) Gini(D,A)=D∣D1∣Gini(D1)+D∣D2∣Gini(D2)
基尼指数 G i n i ( D ) Gini(D) Gini(D) 表示集合 D D D 的不确定性, G i n i ( D , A ) Gini(D,A) Gini(D,A) 表示经 A = a A=a A=a 分割后集合 D D D 的不确定性。基尼指数值越大,样本集合的不确定性就越大,与熵相似。
以上述题目为例,年龄特征 A 1 A^1 A1 :青年,中年,老年
会分别划分为:
Gini(D,A1 = 1) 对应 D1 = 青年,D2 = 中年,老年
Gini(D,A1 = 2) 对应 D1 = 中年,D2 = 青年,老年
Gini(D,A1 = 3) 对应 D1 = 老年,D2 = 青年,中年
依次类推。 ∣ D i ∣ |D_i| ∣Di∣ 指对应类别的样本总数, ∣ D ∣ |D| ∣D∣ 表示集合总样本数。
H ( D ∣ A 1 ) = 5 15 ( 2 × 2 5 × ( 1 − 2 5 ) ) + 10 15 ( 2 × 7 10 × ( 1 − 7 10 ) ) = 0.44 H(D|A^1)= \frac{5}{15} \left( 2 \times \frac{2}{5} \times \left(1-\frac{2}{5} \right) \right)+ \frac{10}{15} \left( 2 \times \frac{7}{10} \times \left(1-\frac{7}{10} \right) \right)=0.44 H(D∣A1)=155(2×52×(1−52))+1510(2×107×(1−107))=0.44
依次类推:
G i n i ( D , A 1 ) Gini(D,A^1) Gini(D,A1)
G i n i ( D , A 1 = 1 ) = 0.44 Gini(D,A^1 = 1) = 0.44 Gini(D,A1=1)=0.44 #青年
G i n i ( D , A 1 = 2 ) = 0.48 Gini(D,A^1 = 2) = 0.48 Gini(D,A1=2)=0.48 #中年
G i n i ( D , A 1 = 3 ) = 0.44 Gini(D,A^1 = 3) = 0.44 Gini(D,A1=3)=0.44 #老年
G i n i ( D , A 2 ) Gini(D,A^2) Gini(D,A2)
G i n i ( D , A 2 = 1 ) = 0.32 Gini(D,A^2 = 1) = 0.32 Gini(D,A2=1)=0.32
G i n i ( D , A 3 ) Gini(D,A^3) Gini(D,A3)
G i n i ( D , A 3 = 1 ) = 0.27 Gini(D,A^3 = 1) = 0.27 Gini(D,A3=1)=0.27 # 所有基尼指数中的最小值
G i n i ( D , A 4 ) Gini(D,A^4) Gini(D,A4)
G i n i ( D , A 4 = 1 ) = 0.36 Gini(D,A^4 = 1) = 0.36 Gini(D,A4=1)=0.36
G i n i ( D , A 4 = 2 ) = 0.47 Gini(D,A^4 = 2) = 0.47 Gini(D,A4=2)=0.47
G i n i ( D , A 4 = 3 ) = 0.32 Gini(D,A^4 = 3) = 0.32 Gini(D,A4=3)=0.32
基尼指数主要是用来选择 最优特征 和 最优切分点 的。
经过上面一些概念的讲解,下面3种决策树生成树生成算法就不难理解了,主要来看一下他们的区别:
在 ID3 算法中是没有剪枝操作的,所以这种方法容易出现过拟合,在 C4.5 中加入了剪枝操作,主要是在决策树学习的损失函数中加入了叶节点个数的考虑,将其作为惩罚项,自下而上递归地将叶节点回缩以后计算损失函数,损失函数值变小,则删除当前节点。
CART 是指分类与回归树,其首先从生成算法生成的树底端不断剪枝,直到根节点,形成一个子树序列,然后通过验证法计算每一个子树的损失函数,从中选择最优的子树。
Bootstraping 方法又称自助法,是有放回的抽样方法,基于这种方法我们将介绍 Bagging 方法的思路:
而 随机森林方法是在 bagging 方法上做了修改:
因为随机森林在选取的时候充满随机性,所以基本是不可复线的,即同样的参数下跑的分类结果可能存在略微差异,但大体相似。
参考文献:
https://baike.baidu.com/item/信息熵/7302318
https://blog.csdn.net/weixin_34370347/article/details/87143933