前言
在机器学习中,有两大门派,分别是频率学派和贝叶斯学派,在现在深度学习大行其道的时代下,数据量空前庞大,频率学派占据了比较大的优势,而贝叶斯学派似乎有点没落,然而,贝叶斯理论在机器学习中是有着很重要的地位的,它从理论上揭示了模型为什么可以工作,为什么会fail,在数据量必须小的一些任务中,通常也可以表现得比频率学派的好,让我们开始我们的贝叶斯之旅吧。这一讲,主要阐述的是在贝叶斯的观点中,我们如何根据现有的数据和假设,对未知的样本进行分类决策。如有谬误,请联系指正。转载请注明出处。
∇ \nabla ∇ 联系方式:
e-mail: FesianXu@gmail.com
QQ: 973926198
github: https://github.com/FesianXu
知乎专栏: 计算机视觉/计算机图形理论与应用
微信公众号:
为什么要贝叶斯
我们在以前的文章《概率派和贝叶斯派的区别》中,曾经讨论过频率学派和贝叶斯学派看待未知模型参数的一些观点,我们这里简单描述下就是:
频率学派相信我们的模型参数尽管未知,但是其是有一个真实的值 θ \theta θ的,只要我们的样本足够多,我们就可以准确无偏地估计出这个真实的值出来;而贝叶斯学派相信我们的模型的未知参数是一个随机变量,而不是一个简简单单的值,因此是符合一个分布的。也就是说,基于我们现有的样本数据,我们对模型中的未知参数的估计都是估计出这些未知参数先验分布的一些参数而已,比如高斯分布的均值和协方差矩阵等等,在贝叶斯学派眼中,模型的参数本身就不是确定的,因此只能用随机变量表达。
我们从以上的区别中可以看出,在贝叶斯模型中,因为每个参数都是一个随机变量,也即是符合某个分布的,如果我们对数据的来源有一定的自信(比如我们的数据是关于电子科技大学的男女比例,我们就会知道这个比例将会大到爆炸,这个我们是很有自信的,因此可以作为先验概率引入的。),那么你将可以通过假设参数分布的形式,引入你对数据的先验知识(prior knowledge),我们称之为对参数的先验假设,表示为 p ( θ ) p(\theta) p(θ)。我们以后将会发现,如果这个先验知识足够合理,将会使得模型即使是在小规模的数据上训练,都可以获得较为理想的效果,这点是频率学派模型较难做到的。
总结来说,也就是贝叶斯模型在小数据集上具有更好的泛化性能,至于什么叫泛化性能,参考以前文章《经验误差,泛化误差》。
利用贝叶斯理论进行分类
在进行进一步讨论之前,我们对我们接下来需要用的的符号进行统一的规定表示和解释:
- 样本(sample), x ∈ R n \bf{x} \in \mathbb{R}^n x∈Rn,其中的 n n n称之为样本的维度(dimension)。
- 状态(state),第一类: ω = ω 1 \omega = \omega_1 ω=ω1;第二类: ω = ω 2 \omega = \omega_2 ω=ω2,在其他文献中,这个通常也称之为类别(class),指的是某个样本配对的类别属性。
- 先验概率(prior), p ( ω 1 ) p(\omega_1) p(ω1), p ( ω 2 ) p(\omega_2) p(ω2),指的是对某些类别的预先知道的知识,比如在预测某个病人是否是癌症病人的例子,在没有得到任何关于这个病人的信息之前,因为我们知道得癌症是一个较为低概率的事件,因此其先验概率 p ( ω = 癌 症 ) p(\omega=癌症) p(ω=癌症)是一个很小的值。先验概率表现了我们对于某个知识的“信仰”。
- 样本分布密度(sample distribution density), p ( x ) p(\bf{x}) p(x)。
- 类条件概率密度(class-conditional probablity density), p ( x ∣ ω 1 ) p(\bf{x}|\omega_1) p(x∣ω1), p ( x ∣ ω 2 ) p(\bf{x}|\omega_2) p(x∣ω2),这个概率也经常被称之为似然概率(likelihood probablity)。
以上的术语将会在以后的文章中经常见到,我们届时再做更加深入的讨论。
让我们考虑一个情景:
给你 n n n个样本作为已知的训练集, X = { x 1 , x 2 , ⋯ , x n } \bf{X}=\{\bf{x}_1,\bf{x}_2,\cdots,\bf{x}_n\} X={x1,x2,⋯,xn},其对应的标签为, Y = { y 1 } \bf{Y}=\{\bf{y}_1\} Y={y1},先给你一个新的样本 x \bf{x} x,其需要预测其标签。
这个就是基本的分类问题的情景,为了简便,不妨将这里的标签看成是二分类标签 y i ∈ { + 1 , − 1 } \bf{y}_i \in \{+1,-1\} yi∈{+1,−1}。我们可以将这个分类问题等价为求 p ( ω 1 ∣ x ) p(\omega_1|\bf{x}) p(ω1∣x)和 p ( ω 2 ∣ x ) p(\omega_2|\bf{x}) p(ω2∣x)的概率大小,一般来说,如果 p ( ω 1 ∣ x ) > p ( ω 2 ∣ x ) p(\omega_1|\bf{x}) > p(\omega_2|\bf{x}) p(ω1∣x)>p(ω2∣x),那么就可以将其判断为第一类了对吧!反之亦然。
因为有概率论中的贝叶斯公式,我们有:
p
(
ω
i
∣
x
)
=
p
(
ω
i
,
x
)
p
(
x
)
=
p
(
ω
i
)
p
(
x
∣
ω
i
)
∑
j
=
1
M
p
(
ω
i
)
p
(
x
∣
ω
i
)
(1.1 贝叶斯公式)
p(\omega_i|\bf{x}) = \frac{p(\omega_i,\bf{x})}{p(\bf{x})}=\frac{p(\omega_i)p(\bf{x}|\omega_i)}{\sum_{j=1}^M p(\omega_i)p(\bf{x}|\omega_i)} \tag{1.1 贝叶斯公式}
p(ωi∣x)=p(x)p(ωi,x)=∑j=1Mp(ωi)p(x∣ωi)p(ωi)p(x∣ωi)(1.1 贝叶斯公式)
因为
p
(
x
)
p(\bf{x})
p(x)在
p
(
ω
1
∣
x
)
p(\omega_1|\bf{x})
p(ω1∣x)和
p
(
ω
2
∣
x
)
p(\omega_2|\bf{x})
p(ω2∣x)都是一样的,因此在分类问题中,一般可以忽略这个项,我们有:
p
(
ω
i
∣
x
)
∝
p
(
ω
i
)
p
(
x
∣
ω
i
)
(1.2 贝叶斯公式常用形式)
p(\omega_i|\bf{x}) \propto p(\omega_i)p(\bf{x}|\omega_i) \tag{1.2 贝叶斯公式常用形式}
p(ωi∣x)∝p(ωi)p(x∣ωi)(1.2 贝叶斯公式常用形式)
其中,
p
(
ω
i
)
p(\omega_i)
p(ωi)称之为先验概率;
p
(
x
∣
ω
i
)
p(\bf{x}|\omega_i)
p(x∣ωi)称之为似然概率,或者称之为类条件概率;
p
(
ω
i
∣
x
)
p(\omega_i|\bf{x})
p(ωi∣x)称之为后验概率(posterior)。其中,因为我们已经有了先前样本
X
\bf{X}
X以及其对应的标签
Y
\bf{Y}
Y,因此可以估计出先验概率和似然概率出来(一般情况下,需要对似然概率进行建模,我们后续再讨论)。
∇ \nabla ∇总而言之,我们通过人工的先验概率,和从已有数据中学习到的似然概率中,可以得到后验概率,而后验概率为我们的分类提供了很重要的依据。 ∇ \nabla ∇
决策论,如何做出一个合理的选择
机器学习整个过程可以分为两个阶段,一是**推理(inference)阶段,二是决策(decision)**阶段。推理阶段主要是从训练样本集中估计出 p ( x , t ) p(\bf{x}, \bf{t}) p(x,t)分布,决策阶段是根据这个联合概率分布,如何作出一个合理的决策,对样本进行分类。
决策论(Decision Theory)[1]指导我们如何根据在推理阶段得出的 p ( x , t ) p(\bf{x}, \bf{t}) p(x,t)分布进行合理的分类。一般来说,决策策略可分为最小错误分类率策略和最小期望损失策略,我们分别介绍下。
最小错误分类率
最小分类错误率(minimizing the misclassification rate)策略的主要目的就是让分类错误率最小化,这个在大多数情况下是适用的。我们先对分类错误率这个概念进行定义,显然,考虑二分类情况,将类别1的物体分类到了2或者相反就是误分类了,用数学表达式表达就是:
p
(
m
i
s
t
a
k
e
)
=
p
(
x
∈
R
1
,
C
2
)
+
p
(
x
∈
R
2
,
C
1
)
=
∫
R
1
p
(
x
,
C
2
)
d
x
+
∫
R
2
p
(
x
,
C
1
)
d
x
p(\rm{mistake}) = p(\bf{x} \in \mathcal{R}_1,\mathcal{C}_2)+ p(\bf{x} \in \mathcal{R}_2,\mathcal{C}_1) \\ = \int_{\mathcal{R}_1} p(\bf{x},\mathcal{C}_2) \rm{d}\bf{x}+ \int_{\mathcal{R}_2} p(\bf{x},\mathcal{C}_1) \rm{d}\bf{x}
p(mistake)=p(x∈R1,C2)+p(x∈R2,C1)=∫R1p(x,C2)dx+∫R2p(x,C1)dx
其中的
R
k
\mathcal{R}_k
Rk称之为决策区域(decision regions),如果输入向量在决策区域
k
k
k下,那么该输入向量的所有样本都是被预测为了
k
k
k类。
p
(
x
∈
R
i
,
C
j
)
p(\bf{x} \in \mathcal{R}_i, \mathcal{C}_j)
p(x∈Ri,Cj)表示将属于类别
j
j
j的样本分类为了类别
i
i
i。对于一个新样本
x
\bf{x}
x,为了最小化
p
(
m
i
s
t
a
k
e
)
p(\rm{mistake})
p(mistake),我们应该将其类别分到式子(2.1)中的被积函数中较小的一个,因为这样,较大的一项就会因为决策区域不适合而变为0了,因此只会剩下一项较小的。换句话说,就是如果
p
(
x
,
C
1
)
>
p
(
x
,
C
2
)
p(\bf{x},\mathcal{C}_1) > p(\bf{x},\mathcal{C}_2)
p(x,C1)>p(x,C2),那么就将其预测为
C
1
\mathcal{C}_1
C1。
我们这里引用[1] page 40 给出的图示进行理解,如下图所示,其中
x
^
\hat{x}
x^表示决策边界,大于
x
^
\hat{x}
x^将会被预测为第二类,小于则会被预测为第一类,于是,我们的决策错误率就是红色区域,绿色区域和蓝色区域的面积了。我们可以清楚的发现,不管
x
^
\hat{x}
x^怎么移动,绿色和蓝色区域的和是一个常数,只有红色区域会在变化,因此直观上看,只有当
x
^
=
x
0
\hat{x} = x_0
x^=x0的时候,也就是
p
(
x
,
C
1
)
=
p
(
x
,
C
2
)
p(x,\mathcal{C_1})=p(x,\mathcal{C_2})
p(x,C1)=p(x,C2)的时候,才会有最小分类错误率。我们有:
p
(
x
,
C
1
)
=
p
(
x
,
C
2
)
⇒
p
(
C
1
∣
x
)
p
(
x
)
=
p
(
C
2
∣
x
)
p
(
x
)
⇒
p
(
C
1
∣
x
)
=
p
(
C
2
∣
x
)
(2.2 最优决策)
p(x,\mathcal{C_1})=p(x,\mathcal{C_2}) \\ \Rightarrow p(\mathcal{C}_1|x)p(x) = p(\mathcal{C}_2|x)p(x) \\ \Rightarrow p(\mathcal{C_1|x}) = p(\mathcal{C_2|x}) \tag{2.2 最优决策}
p(x,C1)=p(x,C2)⇒p(C1∣x)p(x)=p(C2∣x)p(x)⇒p(C1∣x)=p(C2∣x)(2.2 最优决策)
也就是说,当
p
(
C
1
∣
x
)
>
p
(
C
2
∣
x
)
p(\mathcal{C_1|x}) > p(\mathcal{C_2|x})
p(C1∣x)>p(C2∣x)时,选择
C
1
\mathcal{C}_1
C1作为理论分类错误率最小的选择。我们可以发现,选择具有最大后验概率的类别作为预测结果能够达到最小分类错误率的效果,这个原则我们称之为最大后验概率原则,同时,我们留意,在参数估计中也有一个称之为**最大后验概率估计(maximize a posterior probablity, MAP)**的原则,请不要混淆。
当类别多于2类时,比如有
K
K
K类时,计算正确率将会更加方便,我们有:
p
(
c
o
r
r
e
c
t
)
=
∑
k
=
1
K
p
(
x
∈
R
k
,
C
k
)
=
∑
k
=
1
K
∫
R
k
p
(
x
,
C
k
)
d
x
(2.3 多类分类的正确率)
p(\rm{correct}) = \sum_{k=1}^K p(\bf{x} \in \mathcal{R}_k, \mathcal{C}_k) \\ = \sum_{k=1}^K \int_{\mathcal{R}_k} p(\bf{x},\mathcal{C}_k) \rm{d} \bf{x} \tag{2.3 多类分类的正确率}
p(correct)=k=1∑Kp(x∈Rk,Ck)=k=1∑K∫Rkp(x,Ck)dx(2.3 多类分类的正确率)
同理的,同样是选择具有最大后验概率的类别作为预测结果,能够达到最小分类错误率。
注意到,这个原则有一些等价的表达形式,我们将会在这个系列的附录中进行补充。
最小期望损失
按道理来说,最小分类错误已经可以在绝大多数任务中使用了,但是有一些任务,比如医生根据CT影像对病人进行癌症的诊断,在这些任务中,错报和漏报可有着不同的后果。如果只是错报,将没有疾病的人诊断为病人,顶多再去进行一次体检排查,但是如果将有癌症的患者漏报成没有疾病的人,那么就可能错失了最佳的治疗时机,因此这种情况下,这两种错误方式可有着不同的代价。
为了对这个代价进行数学描述,我们引入了一个**损失矩阵(loss matrix)**用来描述不同错误分类带来的不同代价:
cancer | normal | |
---|---|---|
cancer | 0 | 1000 |
normal | 1 | 0 |
这个矩阵很好的描述了我们刚才的需求,让我们用
L
L
L表示,其中
L
i
,
j
L_{i,j}
Li,j表示其第
i
i
i行,
j
j
j列的元素。与最小化分类错误率不同的,我们定义一个代价函数:
E
[
L
]
=
∑
k
∑
j
∫
R
j
L
k
,
j
p
(
x
,
C
k
)
d
x
(3.1 代价函数)
\mathbb{E}[L] = \sum_{k} \sum_{j} \int_{\mathcal{R}_j} L_{k,j}p(\bf{x}, \mathcal{C}_k) \rm{d} \bf{x} \tag{3.1 代价函数}
E[L]=k∑j∑∫RjLk,jp(x,Ck)dx(3.1 代价函数)
我们的目标是最小化(3.1)。
当然,如果你需要对一个样本
x
\bf{x}
x作出决策,你也许需要将其分解为:
R
(
α
k
∣
x
)
=
∑
j
L
k
,
j
p
(
C
k
∣
x
)
(3.2 分类风险)
R(\alpha_k|\bf{x}) = \sum_j L_{k,j}p(\mathcal{C}_k|\bf{x}) \tag{3.2 分类风险}
R(αk∣x)=j∑Lk,jp(Ck∣x)(3.2 分类风险)
这里的
R
(
⋅
)
R(\cdot)
R(⋅)表示Risk,表示分类为
k
k
k类的风险,当然是越小越好。
因此总结来说,最小化风险的计算步骤为:
- 计算后验概率:
p ( C k ∣ x ) = p ( x ∣ C k ) p ( C k ) ∑ i = 1 c p ( x ∣ C i ) p ( C i ) k = 1 , 2 , ⋯ , c p(\mathcal{C}_k|x) = \frac{p(x|\mathcal{C}_k) p(\mathcal{C}_k)}{\sum_{i=1}^c p(x|\mathcal{C}_i)p(\mathcal{C}_i)} \\ k = 1,2,\cdots,c p(Ck∣x)=∑i=1cp(x∣Ci)p(Ci)p(x∣Ck)p(Ck)k=1,2,⋯,c - 计算风险:
R ( R k ∣ x ) = ∑ j L k , j p ( C k ∣ x ) R(\mathcal{R}_k|\bf{x}) = \sum_j L_{k,j}p(\mathcal{C}_k|\bf{x}) R(Rk∣x)=j∑Lk,jp(Ck∣x) - 决策:
α = arg min i = 1 , ⋯ , c R ( α i ∣ x ) \alpha = \arg \min _{i = 1, \cdots, c} R(\alpha_i | x) α=argi=1,⋯,cminR(αi∣x)
显然,当损失矩阵是一个单位矩阵的时候,最小分类错误率和最小分类风险等价。
Reference
[1] Bishop C M. Pattern recognition and machine learning (information science and statistics) springer-verlag new york[J]. Inc. Secaucus, NJ, USA, 2006.
[2] 张学工. 模式识别[J]. 2010.