本文简单整理了如下内容:html
(一)贝叶斯决策论:最小错误率决策、最小风险决策;经验风险与结构风险app
(二)判别函数;生成式模型;多元高斯密度下的判别函数:线性判别函数LDF、二次判别函数QDFide
(三)贝叶斯错误率函数
(四)生成式模型的参数估计:贝叶斯学派与频率学派;极大似然估计、最大后验几率估计、贝叶斯估计;多元高斯密度下的参数估计post
(五)朴素贝叶斯与文本分类(挪到了下一篇博客)性能
贝叶斯决策论(Bayesian decision theory)假设模式分类的决策可由几率形式描述,并假设问题的几率结构已知。规定如下记号:类别有 $c$ 个,为 $\omega_1,\omega_2,...,\omega_c$ ;样本的特征矢量 $\textbf x\in\mathbb R^d$ ;类别 $\omega_i$ 的先验几率为 $P(\omega_i)$ (prior),且 $\sum_{i=1}^cP(\omega_i)=1$ ;类别 $\omega_i$ 对样本的类条件几率密度为 $p(\textbf x|\omega_i)$ ,称为似然(likelihood);那么,已知样本 $\textbf x$ ,其属于类别 $\omega_i$ 的后验几率 $P(\omega_i|\textbf x)$ (posterior)就能够用贝叶斯公式来描述(假设为连续特征):学习
$$P(\omega_i|\textbf x)=\frac{p(\textbf x|\omega_i)P(\omega_i)}{p(\textbf x)}=\frac{p(\textbf x|\omega_i)P(\omega_i)}{\sum_{j=1}^cp(\textbf x|\omega_j)P(\omega_j)}$$测试
分母被称为证据因子(evidence)。后验几率固然也知足和为1,$\sum_{j=1}^cP(\omega_j|\textbf x)=1$ 。若是是离散特征,将几率密度函数(PDF)$p(\cdot)$ 替换为几率质量函数(PMF)$P(\cdot)$ 。优化
因此,当类条件几率密度、先验几率已知时,能够用最大后验几率决策(Maximum a posteriori decision),将样本的类别判为后验几率最大的那一类。决策规则为:spa
$$\arg\max_iP(\omega_i|\textbf x)$$
也就是说,若是样本 $\textbf x$ 属于类别 $\omega_i$ 的后验几率 $P(\omega_i|\textbf x)$ 大于其它任一类别的后验几率 $P(\omega_j|\textbf x)(j\in\{1,...,c\}\setminus \{i\})$ ,则将该样本分类为类别 $\omega_i$。
1、最小错误率决策:等价于最大后验几率决策
从平均错误率(平均偏差几率) $P(error)$ 最小的角度出发,讨论模型如何来对样本的类别进行决策。平均错误率的表达式为
$$P(error)=\int p(error,\textbf x)\text d\textbf x = \int P(error|\textbf x)p(\textbf x)\text d\textbf x$$
能够看出,若是对于每一个样本 $\textbf x$ ,保证 $P(error|\textbf x)$ 尽量小,那么平均错误率就能够最小。$P(error|\textbf x)$ 的表达式为
$$P(error|\textbf x)=1-P(\omega_i|\textbf x), \text{ if we decide }\omega_i$$
从这个表达式能够知道,最小错误率决策(Minimum error rate decision)等价于最大后验几率决策。
2、最小风险决策:指望风险最小化。最小错误率决策的推广
这里定义一个新的量:风险(risk)。首先介绍损失(loss)或称为代价(cost)的概念。
对于一个 $\omega_j$ 类的样本 $\textbf x$ ,若是分类器 $\alpha(\textbf x)$ 将其分类为 $\omega_i$ 类,则记损失(loss)或称为代价(cost)为 $\lambda_{ij}$ 。显然,当 $j=i$ 时,$\lambda_{ij}=0$ 。
下面介绍几种经常使用的损失函数。首先规定一下记号:
将样本 $\textbf x$ 的真实类别记做 $y\in\{1,2,...,c\}$ ,并引入其one-hot表示 $\textbf y=(0,0,...,0,1,0,...,0)^{\top}\in\mathbb R^c$(只有真实类别的那一维是1即 $\textbf y_y=1$ ,其余维均是0);
将分类器的输出类别记为 $\alpha(\textbf x)\in\{1,2,...,c\}$ ,而分类器认为样本属于 $\omega_j $ 类的后验几率为 $\alpha_j(\textbf x)$ ,并将全部类别的后验几率组成向量 $\boldsymbol\alpha(\textbf x)\in\mathbb R^c$ ;
记损失函数(loss function)为 $L(y,\alpha(\textbf x))=\lambda_{\alpha(\textbf x),y}$ ,能够定义以下几种损失函数:
i. 0-1损失函数:
$$L(y,\alpha(\textbf x))=1,\text{ if }y\not=\alpha(\textbf x)\text{ else }0$$
也可用示性函数表示为 $I(y\not=\alpha(\textbf x))$ ;
ii. 平方(quadratic)损失函数(回归问题也适用):
$$L(y,\alpha(\textbf x))=(y-\alpha(\textbf x))^2$$
iii. 交叉熵(cross entropy)损失函数:
$$L(y,\alpha(\textbf x))=-\sum_{j=1}^c\textbf y_j\log\alpha_j(\textbf x)=-\textbf y^{\top}\log\boldsymbol\alpha(\textbf x)$$
对于如今所讨论的单标签问题实际上就是对数损失函数 $L(y,\alpha(\textbf x))=-\log\alpha_y(\textbf x)$ ;
iv. 合页(hinge)损失函数:对于二类问题,令标签只可能取-1或1两值,那么
$$ L(y,\alpha(\textbf x))=\max\{0,1-y\alpha(\textbf x)\}$$
回到主题。
首先咱们引出指望风险(expected risk)的概念:
$$R_{\text{exp}}(\alpha)=\mathbb E[L(y,\alpha(\textbf x))]=\int_{\mathcal X\times\mathcal Y} L(y,\alpha(\textbf x))p(\textbf x,y)\text d\textbf x\text dy$$
也就是说样本损失的指望。固然,这个值是求不出来的,由于假如说能够求出来,就至关于知道了样本和类别标记的联合分布 $p(\textbf x,y)$,那就不须要学习了。这个量的意义在于指导咱们进行最小风险决策。顺着往下推:
$$\begin{aligned}R_{\text{exp}}(\alpha)&=\int_{\mathcal X\times\mathcal Y} L(y,\alpha(\textbf x))P(y|\textbf x)p(\textbf x)\text d\textbf x\text d y\\&=\int \biggl(\int L(y,\alpha(\textbf x))P(y|\textbf x)\text dy\biggr)p(\textbf x)\text d\textbf x\\&=\int \biggl(\sum_{y=1}^cL(y,\alpha(\textbf x))P(y|\textbf x)\biggr)p(\textbf x)\text d\textbf x\\&=\int R(\alpha(\textbf x)|\textbf x)p(\textbf x)\text d\textbf x\end{aligned}$$
咱们关注这个最后这个形式:
$$R_{\text{exp}}(\alpha)=\int R(\alpha(\textbf x)|\textbf x)p(\textbf x)\text d\textbf x$$
下面引出条件风险的概念:将一个样本 $\textbf x$ 分类为 $\omega_i$ 类的条件风险定义以下:
$$R(\alpha_i|\textbf x)=\sum_{j=1}^c\lambda_{ij}P(\omega_j|\textbf x)$$
这个式子很好理解,样本 $\textbf x$ 属于类别 $\omega_j(j\in 1,2,...,c)$ 的后验几率是 $P(\omega_j|\textbf x)$,那么取遍每个可能的类别,用损失进行加权就能够。
有了一个样本的表达式,就能够换个角度来看指望风险的表达式了:它实际上就是以下的指望的形式
$$R_{\text{exp}}(\alpha)=\mathbb E[L(y,\alpha(\textbf x))]=\mathbb E_{\textbf x}[R(\alpha(\textbf x)|\textbf x)]$$
所谓的“条件风险”跟此前的错误率有什么联系?为了看得清楚一点,对比一下上面那个平均错误率的式子
$$R_{\text{exp}}(\alpha)=\int R(\alpha(\textbf x)|\textbf x)p(\textbf x)\text d\textbf x$$
$$P(error)= \int P(error|\textbf x)p(\textbf x)\text d\textbf x$$
能够很直接地看出来:风险在这里起到的做用和错误率在以前起到的做用相同,所以风险是错误率的一个替代品,一种推广。
相似以前的分析,选择对于每一个样本都保证条件风险尽量小的分类规则 $\alpha(\textbf x)$,将使指望风险最小化。
由此可得,最小风险决策的决策规则为:
$$\arg\min_iR(\alpha_i|\textbf x)$$
我这里的顺序和 [1] 有点不同,[1] 是先定义了条件风险 $R(\alpha(\textbf x)|\textbf x)$ ,再定期望的定义获得指望风险 $R_{\text{exp}}(\alpha)$ ; 我这里则是倒过来,从指望风险的直观定义出发,导出了指望风险如何写成条件风险的指望的形式,天然地引出了条件风险的定义。
若是将损失取成0-1损失,即当 $j\not=i$ 时 $\lambda_{ij}=1$ ,能够推导出条件风险为
$$R(\alpha_i|\textbf x)=\sum_{j=1}^c\lambda_{ij}P(\omega_j|\textbf x)=\sum_{j\not=i}P(\omega_j|\textbf x)=1-P(\omega_i|\textbf x)$$
显然这个形式和最小错误率决策的式子如出一辙。所以,在使用0-1损失的时候,最小风险决策退化为最小错误率决策。
另外,很容易意识到的一个事实是:使用0-1损失函数时,若是把一个本应是 $\omega_i$ 类的样本错分红了 $\omega_j$ 类,与把一个本应是 $\omega_j$ 类的样本错分红了 $\omega_i$ 类,这两种状况下的代价是相等的(只要分错类,代价都是1)。实际上,这种状况在许多场景下是不合理的:例如考虑一个二分类任务,其中有一类的训练样本极少,称为少数类,那么在训练过程当中,若是把少数类样本错分为多数类,那么这种决策行为的代价显然应该大于把多数类样本错分为少数类 —— 即便分类器将所有训练样本都分到多数类,那么训练集上的错误率会很低,可是分类器不能识别出任何少数类样本。至于如何解决类不平衡问题,这又是一个新的话题了,以前写过一篇博客简单摘抄了一点。
3、学习准则:经验风险最小化与结构风险最小化
刚才提到,咱们学习的目标是使指望风险最小;但实际上,指望风险没法求出。给定含 $N$ 个样本的训练集,模型关于训练集的平均损失(训练偏差)定义为经验风险(empirical risk):
$$R_{\text{emp}}(\alpha)=\frac1N\sum_{i=1}^NL(y_i,\textbf x_i)$$
根据大数定律,当样本数趋于无穷时,经验风险趋于指望风险。因此一种学习策略是经验风险最小化(empirical risk minimum,ERM),在样本量足够大的状况下能够有比较好的效果。当模型直接输出后验几率分布、使用对数损失函数时,经验风险最小化等价于极大似然估计(一个很是典型的推导:Logistic回归的推导过程)。
若是使用0-1损失函数,则经验风险就是训练集上的错误率;若是使用平方损失函数,则经验风险就是训练集上的均方偏差(MSE):
$$R_{\text{emp}}(\alpha)=\frac1N\sum_{i=1}^NI(y_i\not=\alpha(\textbf x_i))$$
$$R_{\text{emp}}(\alpha)=\frac1N\sum_{i=1}^N(y_i-\alpha(\textbf x_i))^2$$
可是样本量不足时,这样的作法容易招致过拟合(overfitting),由于评价模型是看它的泛化性能,须要其在测试集上有较好的效果,而模型在学习过程当中因为过分追求在训练集上的高正确性,可能将学习出很是复杂的模型。所以,另外一种策略是结构风险最小化(structural risk minimum,SRM),结构风险是在经验风险的基础上加上一个惩罚项(正则化项),来惩罚模型的复杂度:
$$R_{\text{srm}}(\alpha)=\frac1N\sum_{i=1}^NL(y_i,\textbf x_i)+C J(\alpha)$$
当模型直接输出后验几率分布、使用对数损失函数、模型复杂度由模型的先验几率表示时,结构风险最小化等价于最大后验几率估计。
4、引入拒识的决策
在必要状况下,分类器对于某些样本能够拒绝给出一个输出结果(后面能够转交给人工处理)。
在引入拒识(reject)的状况下,分类器能够拒绝将样本判为 $c$ 个类别中的任何一类。具体来讲,损失的定义以下:
$$\lambda_{ij}=\begin{cases} 0 & i=j;\\ \lambda_s & i\not=j; \\ \lambda_r\quad(\lambda_r<\lambda_s) & reject.\end{cases}$$
这里必须有拒识代价小于错分代价,不然就永远都不会对样本拒识了。在这种状况下,条件风险的表达式为
$$R(\alpha_i|\textbf x)=\begin{cases} \lambda_s(1-P(\omega_i|\textbf x)) & i=1,2,...,c;\\ \lambda_r & reject.\end{cases}$$
因此在引入拒识的状况下,最小风险决策为
$$\arg\min_iR(\alpha_i|\textbf x)=\begin{cases} \arg\max_iP(\omega_i|\textbf x) & \text{if}\quad \max_iP(\omega_i|\textbf x)>1-\frac{\lambda_r}{\lambda_s};\\ reject & otherwise.\end{cases}$$
这里有一个提法:最小风险决策所决定出的贝叶斯分类器被称为贝叶斯最优分类器,相应地,风险被称为贝叶斯风险。可是须要注意,它成为最优分类器的条件是几率密度函数能够被准确地估计。而实际中,这很困难,由于估计几率密度函数的两种方法——参数方法、非参数方法都是贝叶斯分类器的近似。
1、判别函数
判别函数 $g_i(\textbf x)$ 是对分类器的一种描述。分类规则能够描述为:
$$\arg\max_ig_i(\textbf x)$$
也就是说,选择若是样本 $\textbf x$ 使得类别 $\omega_i$ 的判别函数 $g_i(\textbf x)$ 的值最大,大于其余任一类别的判别函数值 $g_j(\textbf x)(j\in\{1,...,c\}\setminus\{i\})$ ,则将它判为 $\omega_i$ 类,这个类别的决策区域记为 $\mathcal R_i$ 。
特别地,考虑二类分类问题,可获得两个类别的决策面(判别边界)方程为:$g_1(\textbf x)=g_2(\textbf x)$ 。
对于贝叶斯分类器来讲,判别函数的形式能够有多种选择:最小风险决策对应于 $g_i(\textbf x)=-R(\alpha_i|\textbf x)$ ;最小错误率决策对应于 $g_i(\textbf x)=P(\omega_i|\textbf x)$ ,固然还可简化为 $g_i(\textbf x)=p(\textbf x|\omega_i)P(\omega_i)$ ,或者取对数后成为
$$g_i(\textbf x)=\ln p(\textbf x|\omega_i)+\ln P(\omega_i)$$
2、多元高斯密度下的判别函数
对于生成式模型(Generative model),思路在于表征类别内部的特征分布,建模路线是:$\textbf x\rightarrow p(\textbf x|\omega_i)\rightarrow g_i(\textbf x)$ 。这其中的关键就是如何根据样原本估计 $ p(\textbf x|\omega_i)$ 。有两种估计方法:参数方法和非参数方法(高丝混合模型则介于两者之间)。下面就开始先介绍多元高斯密度下的判别函数,再介绍此情形下的参数估计;后面的博客会简单介绍非参数方法。
参数方法将类条件几率密度 $p(\textbf x|\omega_i)$ 指定为一个显式表示的函数(好比多元高斯密度),而后将估计类条件几率密度转化为了估计函数的参数(好比多元高斯密度的均值向量和协方差矩阵)。
对于生成式模型来讲,因为是不一样的类别 $\omega_i$ 的样本是分开学习的,每一个类别都有本身的判别函数 $g_i(\textbf x)$ ,不关心彼此之间的区别(相比之下,判别式模型则是全部类别的样本放在一块儿学习,直接从样本学习判别函数,目的就是区分各个类别),因此下面的讨论中将省略类别信息 $\omega_i$ ,由于每一个类别都是同样的过程。
假设样本 $\textbf x\in\mathbb R^d$ 的类条件几率密度服从多元高斯密度 $p(\textbf x)\sim N(\boldsymbol\mu,\varSigma)$ ,即
$$p(\textbf x)=\frac{1}{(2\pi)^{\frac d2}|\varSigma|^{\frac12}}\exp(-\frac12(\textbf x-\boldsymbol\mu)^{\top}\varSigma^{-1}(\textbf x-\boldsymbol\mu))$$
其中均值向量和协方差矩阵分别为(后面的讨论里,限定协方差矩阵为正定矩阵,从而其行列式为正)
$$\boldsymbol\mu=\mathbb E[\textbf x]=\int\textbf xp(\textbf x)\text d\textbf x$$
$$\varSigma=\mathbb E[(\textbf x-\boldsymbol\mu)(\textbf x-\boldsymbol\mu)^{\top}]=\int(\textbf x-\boldsymbol\mu)(\textbf x-\boldsymbol\mu)^{\top}p(\textbf x)\text d\textbf x$$
份量形式可写为
$$\mu_i=\mathbb E[x_i],\quad \varSigma_{ij}=\mathbb E[(x_i-\mu_i)(x_j-\mu_j)]$$
协方差矩阵的对角线元素表示各维的方差,非对角线元素代表两维之间的协方差。对于高斯分布来讲,独立等价于不相关,因此若是某两维统计独立,则 $\varSigma_{ij}=0$ 。
(1)多元高斯分布有线性不变性:令 $\textbf y=A^{\top}\textbf x\in\mathbb R^k$ ,则 $p(\textbf y)\sim N(A^{\top}\boldsymbol\mu,A^{\top}\varSigma A)$ 。这个结论能够很轻易的从特征函数( $\phi(\textbf x)$ )的角度来证实。
(2)协方差矩阵的对角化 / 单位化:根据代数的知识咱们知道,对于实对称矩阵 $\varSigma$ ,必定能够找到一个正交矩阵 $\varPhi$ ,使特征值分解后成为对角矩阵 $\varLambda$ :
$$\varSigma\varPhi=\varPhi\varLambda$$
$$\varLambda=\varPhi^{-1}\varSigma\varPhi=\varPhi^{\top}\varSigma\varPhi$$
写成份量形式就是熟悉的特征值分解 $\varSigma\phi_i=\lambda_i\phi_i$,其中 $\varPhi=(\phi_1,...,\phi_d)$ 是各特征向量 $\phi_i\in\mathbb R^d,\quad i\in\{1,...,d\}$ 构成的正交矩阵( $\varPhi^{\top}\varPhi=I$ ),每一个特征向量自身作内积时值为1:$\phi_i^{\top}\phi_i=1$ ,任两个特征向量作内积时值为0:$\phi_i^{\top}\phi_j=0$ ;$\varLambda=\text{diag} (\lambda_1,...,\lambda_d)$ 是各特征值做为对角线元素的对角矩阵。
基于以上两点,
i. 能够经过线性变换 $\textbf y=\varPhi^{\top}\textbf x$,将协方差矩阵对角化:$p(\textbf y)\sim N(\varPhi^{\top}\boldsymbol\mu,\varLambda)$ ,值得注意的是主成分分析就是将协方差矩阵对角化的过程,见本系列博客的第四篇;
ii. 也能够经过白化变换(Whitening transform)$A=\varPhi\varLambda^{-\frac12}$ ,将协方差矩阵单位化(注:在《模式分类》英文版的勘误表上,将这个式子更正为$A=\varPhi\varLambda^{-\frac12}\varPhi^{\top}$ ,可是课后习题有一道涉及白化变换的题目则没有被勘误;这两种形式下均可推出变换后的协方差矩阵 $A^{\top}\varSigma A=I$ 是单位矩阵,因此我也不太清楚到底哪一个是对的)。
下面开始介绍多元高斯密度下的判别函数。咱们直接将多元高斯密度的表达式代入 $g_i(\textbf x)=\ln p(\textbf x|\omega_i)+\ln P(\omega_i)$ ,可获得以下的二次判别函数(Quadratic discriminant function):
$$g_i(\textbf{x})=-\frac12(\textbf{x}-\boldsymbol{\mu}_i)^{\top}\varSigma_i^{-1}(\textbf{x}-\boldsymbol{\mu}_i)-\frac12\ln |\varSigma_i|+\ln P(\omega_i)\underset{\text{与}i\text{无关,能够去掉}}{\underline{-\frac d2\ln2\pi}}$$
在二类状况下,决策面是超二次曲面。
若是作必定的简化,认为各个类别的协方差矩阵都相等 $\varSigma_i=\varSigma$ ,将上式展开化简,可获得线性判别函数(Linear discriminant function):
$$g_i(\textbf{x})=(\boldsymbol{\mu}_i^{\top}\varSigma^{-1})\textbf{x}-\frac12\boldsymbol{\mu}_i^{\top}\varSigma^{-1}\boldsymbol{\mu}_i+\ln P(\omega_i)$$
在这种状况下,二类分类的决策面是超平面。
这里有个坑,就是当协方差矩阵是奇异矩阵,致使其逆矩阵没法计算(MNIST数据集就存在这种状况)。除了降维以外,我认为还能够利用如下两种方法来规避这个问题:
(1)求伪逆矩阵 $\varSigma^\dagger=(\varSigma^{\top}\varSigma)^{-1}\varSigma^{\top}$ 来代替逆矩阵,伪逆矩阵也知足 $\varSigma^\dagger\varSigma=I$ 。固然了,有可能伪逆也是求不出来的,由于中间也有求逆操做。
(2)使用Shrinkage策略(正则判别分析),将各个类的协方差矩阵向同一矩阵缩并,还可把矩阵再向单位矩阵缩并:
$$\varSigma_i(\alpha)=\frac{(1-\alpha)n_i\varSigma_i+\alpha n\varSigma}{(1-\alpha)n_i+\alpha n},\quad 0<\alpha<1$$
$$\varSigma(\beta)=(1-\beta)\varSigma+\beta I,\quad 0<\beta<1$$
第二个式子单拿出来看的话,能够认为是对LDF作正则(但因为LDF自己就比较简单,因此该方法过于简单了),第一个式子能够认为是对QDF作正则。这种策略也能够用来缓解过拟合。
其实吧也不用搞这么复杂,每一个类的协方差矩阵都像第二个式子那样,加个很小的扰动就好了。
这里附上sklearn库中对LDF、QDF以及Shrinkage的介绍:1.2. Linear and Quadratic Discriminant Analysis ,其接口的调用方式无非仍是那几行代码,初始化一个类的实例,fit()方法来训练,predict()方法来测试。。。我在上学期实现过(由于第一周课的做业是这个,[逃。。。),QDF在调了Shrinkage那个参数以后(取0.05步长直接搜索调的)在MNIST数据集上降维到500、200、100这三个维度上的accuracy和sklearn库是同样的,固然速度就慢了不止一点半点了哈。下面附上784维时我实现的LDF、QDF在验证集的调参图(降维以后的调参图就不贴了哈太多了),LDF不加正则的效果是最好的,QDF则须要加正则:
考虑二类的状况,错误率 $P(error)$ :
$$\begin{aligned}P(error)=&P(\textbf x\in\mathcal R_2,\omega_1)+P(\textbf x\in\mathcal R_1,\omega_2)\\=&P(\textbf x\in\mathcal R_2|\omega_1)P(\omega_1)+P(\textbf x\in\mathcal R_1|\omega_2)P(\omega_2)\\=&\int_{\mathcal R_2}p(\textbf x|\omega_1)P(\omega_1)\text{d}\textbf x+\int_{\mathcal R_1}p(\textbf x|\omega_2)P(\omega_2)\text{d}\textbf x\end{aligned}$$
对于一维特征的特殊状况,以下图所示,分类错误率就是阴影面积。而三角形那部分能够去掉从而使错误率最小,什么样的决策规则能够去掉它?固然是 $\arg\max_ip(x|\omega_i)P(\omega_i)$ ,而这正是贝叶斯判决的最小错误率决策。
这里有个结论(是 [1] 的一道课后习题):对于一个两类问题,设两类的类条件几率密度都服从多元高斯密度,且两类先验几率相等、协方差矩阵相等,那么贝叶斯错误率为
$$P(error)=\dfrac1{\sqrt{2\pi}}\int_{\frac r2}^{\infty}\exp(-\dfrac{u^2}2)\text{d}u$$
其中平方马氏距离 $r^2=(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)^{\top}\varSigma^{-1}(\boldsymbol{\mu}_1-\boldsymbol{\mu}_2)$ ,若是能让这个值增大,那么错误率就会减少。考虑协方差矩阵是对角矩阵的状况,能够进一步获得 $r^2=\sum_{i=1}^d(\frac{\mu_{i1}-\mu_{i2}}{\varSigma_i})^2$ ,其中 $\mu_{i1}$ 表示第一类样本的第 $i$ 维特征的均值。可见,若是某一维特征在两类样本上的均值不一样,那么它就是有用的;另外,能够经过增长特征的方式,来增长 $r^2$ ,减少错误率。
可是仍是要注意,以上分析的前提是几率密度能够被精确估计。实际上,样本量有限,没法准确估计几率密度。另外,特征增长固然可能使错误率反而增长,除了由于估计不许确以外,还多是高斯密度这个前提自己就是不许的。并且,样本量小而特征不少,无疑会带来不少麻烦,好比过拟合等。
1、参数估计
数理统计的基本问题就是根据样本所提供的信息,对整体的分布或者分布的数字特征做出统计推断。所谓整体就是一个具备肯定分布的随机变量,参数估计问题就是整体所服从的分布类型已知,但某些参数未知。
统计学中的两大学派,贝叶斯学派(Bayesian)和频率学派(Frequentist)对于参数估计的见解是不一样的。频率学派是直接估计参数的具体值;贝叶斯学派则将参数视做随机变量,估计其分布。极大似然估计(Maximum likelihood estimation,MLE)属于频率学派,贝叶斯参数估计(Bayesian estimation)则属于贝叶斯学派。
两者有没有联系?有。好比说一维特征的状况,假设类条件几率密度的形式为高斯密度且未知参数为均值(方差已知),参数的先验密度已知为高斯密度:当样本量无穷大时,贝叶斯估计出的均值趋近于MLE估计的均值(这个例子取自[1])。
既然说到了参数估计,不妨就总结一下三种估计方法:极大似然估计、最大后验几率估计(Maximum a posteriori,MAP)、贝叶斯估计。
设要估计的参数为 $\theta$ ,随机变量 $\boldsymbol X$ 的 $n$ 个观测值为 $x_1,...,x_n$ (iid样本,它们总体用 $X$ 表明,能够认为观测数据就是训练集)。首先仍是摆上贝叶斯公式,后验等于似然乘先验除以证据:
$$p(\theta |X)=\frac{p(X|\theta)p(\theta)}{p(X)}=\frac{p(X|\theta)p(\theta)}{\int p(X|\theta)p(\theta)\text d\theta}$$
1. 极大似然估计
极大似然估计是一种基于观测数据,“几率最大的则最有可能发生”的思路,将似然最大化:
$$\hat\theta_{MLE}=\arg\max_{\theta}p(X|\theta)=\arg\max_{\theta}\prod_{i=1}^np(x_i|\theta)$$
式中 $\prod_{i=1}^np(x_i|\theta)$ 被称为似然函数。一般将其取对数获得对数似然函数,再经过求偏导等于零这个方程来求极大值。式中的 $p(\cdot)$ 是PDF,若是是离散型随机变量须要替换为PMF( $P(\cdot)$ )。
举个例子,抛硬币10次,有3次正面朝上,估计抛一次硬币时正面朝上的几率。在这个例子里,$\boldsymbol X$ 服从二项分布,PMF为: $P(\boldsymbol X=1|\theta)=\theta$ 、$P(\boldsymbol X=0|\theta)=1-\theta$ ,因此
$$\hat\theta_{MLE}=\arg\max_{\theta}\theta^3(1-\theta)^7=0.3$$
2. 最大后验几率估计
最大后验几率估计则是将后验最大化。从下面的推导能够看出,它不光依赖观测数据,还引入了对于参数的先验知识,这对于观测数据有问题(好比,观测值太少)的状况颇有利,由于先验能够认为是“已经知道它大概是什么样的”:
$$\hat\theta_{MAP}=\arg\max_{\theta}p(\theta |X)=\arg\max_{\theta}p(X|\theta)p(\theta)$$
优化目标的第一项因子就是似然。当参数的先验分布是均匀分布时,MLE和MAP等价。
仍是上面的例子,设先验为 $\theta\sim N(0.5,1)$ ,即 $p(\theta)=\frac{1}{\sqrt{2\pi}}\exp(-\frac{(\theta-0.5)^2}{2})$ ,那么
$$\hat\theta_{MAP}=\arg\max_{\theta}\theta^3(1-\theta)^7\cdot \frac{1}{\sqrt{2\pi}}\exp(-\frac{(\theta-0.5)^2}{2})$$
3. 贝叶斯估计(这部分写得很乱,不要看了。。。)
贝叶斯估计则是将参数看做随机变量,估计其后验密度 $p(\theta |X)$ ,并但愿它在真实值 $\theta$ 附近有显著尖峰:
$$p(\theta |X)=\frac{p(X|\theta)p(\theta)}{\int p(X|\theta)p(\theta)\text d\theta}$$
其中 $p(X|\theta)=\prod_{i=1}^np(x_i|\theta)$ 。对于测试样本 $x$ ,能够获得几率密度:
$$p(x|X)=\int p(x,\theta |X)\text d\theta=\int p(x|\theta ,X)p(\theta |X)\text d\theta$$
由于测试样本和训练集无关,因此
$$p(x|X)=\int p(x|\theta)p(\theta|X)\text d\theta$$
经过这个式子,几率密度 $p(x|X)$ 和参数的后验密度 $p(\theta|X)$ 被联系起来(注意 $X$ 的分布形式已知,因此 $p(x|\theta)$ 的形式已知),说明参数的后验分布能够对几率密度的估计产生影响。
在实际使用中,有如下几种状况:
(1) 若是参数的后验密度 $p(\theta |X)$ 在值 $\hat\theta$ 处也有显著尖峰,那么几率密度 $p(x|X)\approx p(x|\hat\theta)$ 。换句话说,取 $\hat\theta$ 做为参数的估计值。实际上就是MAP。
(2) 若是对参数的真实值没有把握,上式说明 $p(x|X)$ 应该是 $p(x|\theta)$ 对全部可能的 $\theta$ 取平均值。因此另一种作法是,求得参数的后验密度 $p(\theta |X)$ 以后,进行 $M$ 次采样,获得一系列 $\theta_i\sim p(\theta |X)$ ,从而取平均值:$p(x|X)\approx\dfrac1M\sum_{i=1}^Mp(x|\theta_i)$ 。
2、多元高斯密度下的参数估计
这里直接上结论了:使用MLE估计多元高斯密度的均值向量和协方差矩阵,其估计结果将是下面的形式(从协方差的分母知道,它是有偏的):
$$\hat{\boldsymbol\mu}=\dfrac1n\sum_{k=1}^n\textbf x_k$$
$$\hat\varSigma=\dfrac1n\sum_{k=1}^n(\textbf x_k-\hat{\boldsymbol\mu})(\textbf x_k-\hat{\boldsymbol\mu})^{\top}$$
若是要使用无偏估计,则须要把第二个式子中的分母改为 $n-1$ ,减去1的意义是自由度减小了1,由于用来估计了均值。
如下迭代公式提供了在线更新均值向量和协方差矩阵的方式(也是课后习题):每当新来一个样本 $\textbf x_{n+1}$,均值向量和协方差矩阵的估计值可更新为
$$\hat{\boldsymbol\mu}^{(n+1)}=\hat{\boldsymbol\mu}+\frac{1}{n+1}(\textbf x_{n+1}-\hat{\boldsymbol\mu})$$
$$\hat\varSigma^{(n+1)}=\frac{n-1}{n}\hat\varSigma+\frac{1}{n+1}(\textbf x_{n+1}-\hat{\boldsymbol\mu})(\textbf x_{n+1}-\hat{\boldsymbol\mu})^{\top}$$
参考资料:
[1] 《模式分类》及slides
[2] 《统计学习方法》