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