这是模式识别与机器学习笔记专栏的第一篇,我会持续更新,点个关注不迷路~
在所有的生活场景中,我们无时无刻不在进行着模式识别。比如你看见迎面走来一个人,根据他的长相来辨认出他好像是你一年前某个活动小组的组长,然后你开始决策要不要和他打个招呼。或者你走进水果店,把西瓜拍了个遍来决定最后买哪一个。或者你突然被捂上眼睛,听着背后人的声音来辨别是不是你的亲爱的。
模式(pattern) 可以理解成某种特征,也就是你可以获取到的某种原始数据,而 模式识别(pattern recognition) 就是根据输入原始数据来判断其类别并采取相应行为的能力。它对我们至关重要,但我们常常希望可以有机器帮我们来做这个工作,让机器执行预定的程序来进行分类从而决策。比如一个短信拦截系统,帮我们分辨哪些是骚扰短信,哪些是有用的信息。
在这个问题上,贝叶斯决策理论是最最经典而基本的分类方法了。那么,何为贝叶斯分类决策?
1. 贝叶斯公式
首先,我们熟悉的贝叶斯公式
P
(
ω
i
∣
x
)
=
p
(
x
∣
ω
i
)
P
(
ω
i
)
p
(
x
)
P(\omega_i|x)=\frac{p(x|\omega_i)P(\omega_i)}{p(x)}
P(ωi∣x)=p(x)p(x∣ωi)P(ωi)
在模式识别问题中,用
d
d
d 维向量
x
x
x 来表示希望分类对象的特征,它一般是从传感器获取,并且抽象化出来。
ω
\omega
ω 来表示可能分类的类别。
ω
i
\omega_i
ωi 对应着第
i
i
i 类,如果是一个两类问题,
i
=
1
,
2
i=1,2
i=1,2 ,如果是
c
c
c 类问题,则
i
=
1
,
2
,
.
.
.
,
c
i=1,2,...,c
i=1,2,...,c
P ( ω i ∣ x ) P(\omega_i|x) P(ωi∣x) 是由特征 x x x 预测的结果,也就是后验概率, p ( x ∣ ω i ) p(x|\omega_i) p(x∣ωi) 是类条件概率,或者叫似然概率,就是特征 x x x 这个随机变量分布情况,它是取决于类别 ω \omega ω 的状态的。 P ( ω i ) P(\omega_i) P(ωi)是类先验信息,是根据先前知识经验给定的,并且因为总共就c类,所以很容易得到 ∑ j = 1 c P ( ω j ) = 1 \sum^{c}_{j=1}P(\omega_j)=1 ∑j=1cP(ωj)=1。 p ( x ) p(x) p(x)是归一化因子,并不重要:
p
(
x
)
=
∑
j
=
1
c
p
(
x
∣
ω
j
)
P
(
ω
j
)
p(x)=\sum^{c}_{j=1}p(x|\omega_j)P(\omega_j)
p(x)=j=1∑cp(x∣ωj)P(ωj)
目的就是使得所有后验概率之和为1。
贝叶斯公式提供了一个后验概率的重要计算依据:从似然概率和先验概率得到。
2. 最小错误率贝叶斯决策
首先简化问题为二分类问题,比如短信分类问题,
ω
=
ω
1
\omega=\omega_1
ω=ω1 是将短信分为有用短信,
ω
=
ω
2
\omega=\omega_2
ω=ω2 是将短信分类为垃圾短信。假设我们现在对这两类的先验概率和特征
x
x
x 的类条件概率分布都知道了。那么通过一个短信提取到的特征
x
x
x ,就可以利用贝叶斯公式计算后验概率,也就是对可能的两类做出的概率判断。
P
(
ω
1
∣
x
)
=
p
(
x
∣
ω
1
)
P
(
ω
1
)
P
(
ω
2
∣
x
)
=
p
(
x
∣
ω
2
)
P
(
ω
2
)
P(\omega_1|x)=p(x|\omega_1)P(\omega_1)\\ P(\omega_2|x)=p(x|\omega_2)P(\omega_2)
P(ω1∣x)=p(x∣ω1)P(ω1)P(ω2∣x)=p(x∣ω2)P(ω2)
很自然的来比较后验概率来进行决策,哪一类的后验概率大,就判定为哪一类,先验是给定的,归一化因子不重要,实质上比的就是类条件概率分布。
- 现在引入一个错误率 P ( e r r o r ∣ x ) P(error|x) P(error∣x) 的概念,对一个 x x x ,算出了 P ( ω 1 ∣ x ) P(\omega_1|x) P(ω1∣x) 和 P ( ω 2 ∣ x ) P(\omega_2|x) P(ω2∣x),假如我们让 ω = ω 1 \omega=\omega_1 ω=ω1,也就是判定为第一类,把这条短信判断成有用的,那么我们判断正确的概率就是 P ( ω 1 ∣ x ) P(\omega_1|x) P(ω1∣x) ,而判断错误的概率就是 P ( ω 2 ∣ x ) P(\omega_2|x) P(ω2∣x)。写成公式:
P ( e r r o r ∣ x ) = { P ( ω 1 ∣ x ) 如果判定为 ω 2 P ( ω 2 ∣ x ) 如果判定为 ω 1 P(error|x)= \begin{cases} P(\omega_1|x)& \text{如果判定为}\omega_2 \\ P(\omega_2|x)& \text{如果判定为}\omega_1 \end{cases} P(error∣x)={P(ω1∣x)P(ω2∣x)如果判定为ω2如果判定为ω1
- 我们希望我们判断的错误率更小,因此我们得到判决规则:
如果 P ( ω 1 ∣ x ) > P ( ω 2 ∣ x ) P(\omega_1|x)>P(\omega_2|x) P(ω1∣x)>P(ω2∣x),判定为 ω 1 \omega_1 ω1;否则判定为 ω 2 \omega_2 ω2
——这就是最小错误率贝叶斯决策,也就是哪一类后验概率大,判为哪一类
- 写成似然概率和先验概率的形式:
如果 p ( x ∣ ω 1 ) P ( ω 1 ) > p ( x ∣ ω 2 ) P ( ω 2 ) p(x|\omega_1)P(\omega_1)>p(x|\omega_2)P(\omega_2) p(x∣ω1)P(ω1)>p(x∣ω2)P(ω2),判定为 ω 1 \omega_1 ω1;否则判定为 ω 2 \omega_2 ω2
3. 最小风险贝叶斯决策
下面把判决规则升级一下。
再回想一下短信分类的问题。假如预测成有用短信和骚扰短信的后验概率接近的时候,这时候误判的可能性还是比较高的。如果误判,可能会把有用的分成垃圾,把垃圾短信分成有用的。可以想象这两者的错误率是此消彼长的,但对哪种的错误率容忍度更高呢?把有用的分成垃圾的看起来更加难以接受。这时候可能就希望那种模棱两可的情况还是判定成有用的好。那么如何来体现这种对错误率容忍度的不同呢?下面就引入损失函数。
对每一种判断以及真实情况定义一个损失函数 λ ( α i ∣ ω j ) \lambda(\alpha_i|\omega_j) λ(αi∣ωj),以下面的两类问题为例
λ ( α i ∥ ω j ) \lambda(\alpha_i\|\omega_j) λ(αi∥ωj) | ω 1 \omega_1 ω1 | ω 2 \omega_2 ω2 |
---|---|---|
α 1 \alpha_1 α1 | 0 | 1 |
α 2 \alpha_2 α2 | 2 | 0 |
ω j \omega_j ωj 表示要分类对象的真实类别是 ω j \omega_j ωj , α i \alpha_i αi 表示要采取的行为,即判定为 ω i \omega_i ωi
以短信分类为例,假如真实是 ω 1 \omega_1 ω1 ,有用短信,采取 α 1 \alpha_1 α1 ,判断为有用,也就是判断正确了,可以定义损失就是0。假如真实是 ω 2 \omega_2 ω2 ,垃圾短信,采取 α 1 \alpha_1 α1 ,判断为有用,也就是判断错误了,可以定义损失函数为1。假如真实是 ω 1 \omega_1 ω1 ,有用短信,采取 α 2 \alpha_2 α2 ,判断为垃圾,同样是判断错误了,而这种错误我们的容忍度更低,那么可以定义损失函数为2。
- 由损失函数乘以对应的后验概率 P ( ω j ∣ x ) P(\omega_j|x) P(ωj∣x) 并求和,得到风险函数 R ( α i ∣ x ) R(\alpha_i|x) R(αi∣x)
R ( α 1 ∣ x ) = λ ( α 1 ∣ ω 1 ) P ( ω 1 ∣ x ) + λ ( α 1 ∣ ω 2 ) P ( ω 2 ∣ x ) R ( α 2 ∣ x ) = λ ( α 2 ∣ ω 1 ) P ( ω 1 ∣ x ) + λ ( α 2 ∣ ω 2 ) P ( ω 2 ∣ x ) R(\alpha_1|x)=\lambda(\alpha_1|\omega_1)P(\omega_1|x) +\lambda(\alpha_1|\omega_2)P(\omega_2|x)\\ R(\alpha_2|x)=\lambda(\alpha_2|\omega_1)P(\omega_1|x) + \lambda(\alpha_2|\omega_2)P(\omega_2|x) R(α1∣x)=λ(α1∣ω1)P(ω1∣x)+λ(α1∣ω2)P(ω2∣x)R(α2∣x)=λ(α2∣ω1)P(ω1∣x)+λ(α2∣ω2)P(ω2∣x)
理解起来就是: α i \alpha_i αi行为的风险=每种 ω \omega ω 情况下采取 α i \alpha_i αi行为的损失x是这种 ω \omega ω 的后验概率
- 与最小错误率贝叶斯决策相对应的,这时候使得风险函数最小就行了,判决规则写成:
如果 R ( α 1 ∣ x ) < R ( ω 2 ∣ x ) R(\alpha_1|x) < R(\omega_2|x) R(α1∣x)<R(ω2∣x),采取行为 α 1 \alpha_1 α1 ,也就是判定为 ω 1 \omega_1 ω1;否则采取行为 α 2 \alpha_2 α2 ,也就是判定为 ω 2 \omega_2 ω2
因此决策的方式就是采取风险 R ( α i ∣ x ) R(\alpha_i|x) R(αi∣x)最小的行为 α i \alpha_i αi——这是最小风险贝叶斯决策
- 把 λ ( α i ∣ ω j ) \lambda(\alpha_i|\omega_j) λ(αi∣ωj) 简写成 λ i j \lambda_{ij} λij ,并把类条件概率和先验概率代入,得到判决规则:
如果 ( λ 11 − λ 21 ) p ( x ∣ ω 1 ) P ( ω 1 ) < ( λ 22 − λ 12 ) p ( x ∣ ω 2 ) P ( ω 2 ) (\lambda_{11}-\lambda_{21})p(x|\omega_1)P(\omega_1) < (\lambda_{22}-\lambda_{12})p(x|\omega_2)P(\omega_2) (λ11−λ21)p(x∣ω1)P(ω1)<(λ22−λ12)p(x∣ω2)P(ω2),采取行为 α 1 \alpha_1 α1 ,也就是判定为 ω 1 \omega_1 ω1;否则采取行为 α 2 \alpha_2 α2 ,也就是判定为 ω 2 \omega_2 ω2
- 还可以写成似然比的形式:
如果 p ( x ∣ ω 1 ) p ( x ∣ ω 2 ) < ( λ 22 − λ 12 ) ( λ 11 − λ 21 P ( ω 2 ) P ( ω 1 ) \frac{p(x|\omega_1)}{p(x|\omega_2)}<\frac{(\lambda_{22}-\lambda_{12})}{(\lambda_{11}-\lambda_{21}}\frac{P(\omega_2)}{P(\omega_1)} p(x∣ω2)p(x∣ω1)<(λ11−λ21(λ22−λ12)P(ω1)P(ω2) ,采取行为 α 1 \alpha_1 α1 ,也就是判定为 ω 1 \omega_1 ω1;否则采取行为 α 2 \alpha_2 α2 ,也就是判定为 ω 2 \omega_2 ω2
这样写的好处是,不等式右边的损失函数和先验概率都是给定的,是一个常数,左边就是似然概率之比,所以只需要算出似然概率之比就可以进行分类预测
- 另外,如果采用如下0-1损失函数的时候,最小风险贝叶斯决策就会退化成最小错误率贝叶斯决策
λ ( α i ∥ ω j ) \lambda(\alpha_i\|\omega_j) λ(αi∥ωj) | ω 1 \omega_1 ω1 | ω 2 \omega_2 ω2 |
---|---|---|
α 1 \alpha_1 α1 | 0 | 1 |
α 2 \alpha_2 α2 | 1 | 0 |
R ( α 1 ∣ x ) = λ ( α 1 ∣ ω 1 ) P ( ω 1 ∣ x ) + λ ( α 1 ∣ ω 2 ) P ( ω 2 ∣ x ) = P ( ω 2 ∣ x ) R ( α 2 ∣ x ) = λ ( α 2 ∣ ω 1 ) P ( ω 1 ∣ x ) + λ ( α 2 ∣ ω 2 ) P ( ω 2 ∣ x ) = P ( ω 1 ∣ x ) R(\alpha_1|x)=\lambda(\alpha_1|\omega_1)P(\omega_1|x)+\lambda(\alpha_1|\omega_2)P(\omega_2|x)=P(\omega_2|x)\\ R(\alpha_2|x)=\lambda(\alpha_2|\omega_1)P(\omega_1|x) + \lambda(\alpha_2|\omega_2)P(\omega_2|x)=P(\omega_1|x) R(α1∣x)=λ(α1∣ω1)P(ω1∣x)+λ(α1∣ω2)P(ω2∣x)=P(ω2∣x)R(α2∣x)=λ(α2∣ω1)P(ω1∣x)+λ(α2∣ω2)P(ω2∣x)=P(ω1∣x)
- 如果是多类情况
R ( α i ∣ x ) = ∑ j = 1 c λ ( α i ∣ ω j ) P ( ω j ∣ x ) R(\alpha_i|x)=\sum^c_{j=1}\lambda(\alpha_i|\omega_j)P(\omega_j|x) R(αi∣x)=j=1∑cλ(αi∣ωj)P(ωj∣x)
决策行为 α ∗ = a r g m i n R ( α i ∣ x ) \alpha^*=argminR(\alpha_i|x) α∗=argminR(αi∣x) ,也就是采取的行为 α i \alpha_i αi 是使得风险 R ( α i ∣ x ) R(\alpha_i|x) R(αi∣x) 最小的那个 α i \alpha_i αi
还想BB几句
感谢你看到这里!我是在努力code,刚尝试写博的小白zolich。我希望把自己的学习心得写成细致的笔记形式,帮助自己记忆查阅,也希望能够帮到和我一样在努力学习的人。
如果这篇文章对你有一点点帮助的话,顺手点赞or收藏or分享下吧~拜托啦,这对我真的很重要!我会持续写作,加个关注看后续!你的支持是对我最大的鼓励!
水平所限,如有疏漏,欢迎指正~