"我刚开始写论文时东一棒槌西一棒槌,我导师说小伙子这样不行,写论文逻辑得顺,前后得有连接,要行云流水。他说我给你举个栗子:从前有座山,山里有座庙,庙里有个和尚,和尚……顿时豁然开朗。" ——from 微博

上面的引子挺有道理,不管是写论文还是学知识,感觉都是这个理。学校模式识别课第一部分讲贝叶斯决策,感觉有的人学的稀里糊涂,没把知识串起来,当然实验也不会做。其实挺简单的,做个简单总结吧。

以下内容中行间公式为代码中用到的公式

一、原始记忆点-overview

贝叶斯决策说到底还是从贝叶斯公式(全概率公式)说起:
$$
p(w|x)=\frac{p(x|w)p(w)}{p(x)}
$$

$x$可以理解为观测到的样本的情况,$w$为样本属于的类别。只需要用上述公式计算在这种观测下,样本属于每个类别的概率,对于基于最小错误率的贝叶斯决策,哪个概率大就判断为哪一类即可(其中他们的分母一样可忽略)。简单粗暴。(当然,此外还有基于最小风险的贝叶斯决策,Neyman-Pearson决策,最小最大决策。我想让此博客更关注整体框架和逻辑,因此这些决策按下不表。)

但是实际应用的时候问题就来了,$p(x|w)$和$p(w)$是多少。$p(w)$简单,可以直接由训练集中某个类别出现的频率代替。猜测:这里需要训练样本独立、随机采样什么的 那么类条件概率$p(x|w)$呢?

二、类条件概率估计

1.参数估计

参数估计就是已经知道或者假定样本服从某种分布,只是其中的参数不知道,需要靠我们推算出来。这里以正态分布为例,给出推导结果。推导过程请参考教材ppt。

三种估计的对比:贝叶斯估计、最大似然估计、最大后验概率估计

1.1 最大似然估计

最大似然估计就是根据已经抽取的n个样本$x_1,x_2,...,x_n$估计这组样本最可能来自哪个概率密度函数。也就是求解让这些样本出现的联合概密最大的参数,即 $\hat\theta_{ML}=\mathop{\arg\max_{\theta}}\sum_{i=1}^{n}\ln{p(x_i;\theta)}$

正态分布的均值和方差的求解结果为:
$$
\hat{\mu}_{ML}=\frac{1}{n}\sum^{n}_{i=1}x_i=bar(x)
$$

$$
\hat{\Sigma}_{ML}=\frac{1}{n}\sum_{i=1}^{n}(x_i-\hat{\mu}_{ML})(x_i-\hat{\mu}_{ML})^T
$$

1.2 最大后验概率估计(MAP)

最大后验概率估计的思想是:把待估计的参数看作随机变量,希望使后验概率最大。即 $\hat{\theta}_{MAP}=\arg\max_\theta{p(\theta|X)}$

2.非参数估计

2.1 频率分布直方图

白话来说,就是把值域分成几个小区间,然后统计落在每个小区间的频率。然后,为了让整个图的积分为1,要将频率除以h,h为区间宽度。

2.2 Parzen窗法

parzen窗法有两种理解角度:

  • 第一种角度:(上帝视角)体现在代码里就是遍历分布的自变量

    是对频数的加权统计(根据核函数加权)

  • 第二种角度:(群众视角)体现在代码里就是遍历每个样本

    每个样本对分布所做的贡献,对自己所在位置的分布贡献最大,离得越远,贡献越小。

公式为:
$$
\hat{p}_n(x)=\frac{1}{nh_n^d}\sum_{i=1}^{n}k(\frac{x-x_i}{h_n})
$$

其中$h_n$是控制“窗”宽度的参数,$d$代表特征的维度,$n$为样本数,$k()$为核函数。$\frac{x-x_i}{h_n}$的作用是把样本值归一化到$[-\frac{1}{2},\frac{1}{2}]$.

均匀窗

$x=(x^1,x^2,...,x^d)\mathcal\in{R}^d$

$$
k(x)=\left\{\begin{array}{cc}
1, & \left|x^i\right|\leq1/2\quad i=1,2,...,d\\
0, & other\ values
\end{array}\right.
$$

高斯窗

$$
k(x)=\frac{1}{\sqrt{2\pi}}\exp(-\frac{\Vert x\Vert^2}{2})
$$

三、决策面方程

决策面即是两类的概率$p(w_i|x)$和$p(w_j|x)$相等的时候。通用的决策面方程为:
$$
\begin{split}
& g_i(x)-g_j(x)\\
& =-\frac{1}{2}[(x-\mu_i)\Sigma_i^{-1}(x-\mu_i)-(x-\mu_j)\Sigma_j^{-1}(x-\mu_j)]-\frac{1}{2}\ln{\frac{\vert \Sigma_i\vert}{\vert \Sigma_j\vert}}+\ln{\frac{P(w_i)}{P(w_j)}} \\
& =0
\end{split}
$$
针对三种情况,有进一步化简的决策面方程,但是个人感觉实用性不强,在此按下不表。

四、实验结果

使用MATLAB完成实验,源代码及数据集已上传到Github

girldata

GIRLdata

boydata

标签: 机器学习

添加新评论