跳转至

统计机器学习02:贝叶斯定理

本页统计信息
  • 本页约 2686 个字, 预计阅读时间 9 分钟。

  • 本页总阅读量

统计机器学习公式推导Revisiting,第二部分贝叶斯定理

贝叶斯理论是非常经典的分类算法,我们一般用\(x\)表示样本,用\(\omega_j\)表示可能的分类类别,则\(P(\omega_j| x)\)表示\(x\)属于这一类别的概率。 贝叶斯决策论是在概率框架下实施决策的基本方法,本质上是如何基于概率和误判损失来选择最优的类别标记.

贝叶斯公式的推导

根据条件概率公式,我们有 $$ P(AB)=P(A|B)P(B)=P(B|A)P(A)\Rightarrow P(A|B)=\frac{P(B|A)P(A)}{P(B)} $$

这就是贝叶斯公式最简单的基本形式,其中

  • \(P(A)\) 是先验概率(prior),指的是样本中各种情况出现的概率

  • \(P(B|A)\) 是似然(likelihood),表示A发生的条件下,B出现的概率

  • \(P(A|B)\) 是后验概率(posterior)

现在我们假设有若干个特征\(\omega_1,\omega_2,…,\omega_c\),对于数据集D中的一个样本x,有

\[ \begin{aligned} P(\omega_j|x)=\frac{P(x|\omega_j)P(\omega_j)}{P(x)}\\ P(x)=\sum_{j=1}^{c}P(x|\omega_j)P(\omega_j) \end{aligned} \]

贝叶斯定理可以用于分类问题的决策,而用贝叶斯定理进行决策的实质是通过概率分布 情况来使得分类错误的可能性最小化,上面提到的公式事实上是基于后验概率来进行分类决策 的,也称为Optimal Bayes Decision Rule

贝叶斯决策也可能会碰到一些特殊情况,比如当先验概率相等的时候,只需要比较likelihood 就可以,当likelihood一样大小的时候只需要比较先验概率就可以。

贝叶斯公式的Loss

条件风险

可以定义一个loss function来估计贝叶斯公式的loss,我们设\(\lambda(\alpha_i|\omega_j)\)表示将原本类型为\(\omega_j\)的样本分类成了\(\alpha_i\)所带来的loss(也可以叫risk),则将数据集D中的样本x分类为\(\alpha_i\)所带来的条件风险(Condition Risk)可以表示为:

$$ R(\alpha_i|x)=\sum\limits_{j=1}\limits^{c}\lambda(\alpha_i|\omega_j)P(\omega_j|x) $$ 而对于所有可能的\(\alpha_i\),可以对其条件风险进行积分,得到总的条件风险 $$ R=\int R(\alpha_i|x)p(x)dx $$ 可以记\(\lambda_{ij}=\lambda(\alpha_i|\omega_j)\)则对于一个二分类问题,我们只需要比较\(R(\alpha_i|x)\)的大小,将其展开之后发现只需要比较\(\frac{P(x|\omega_1)}{P(x|\omega_2)}\)\(\frac{\lambda_{12}-\lambda_{22}}{\lambda_{21}-\lambda_{11}}\times\frac{P(\omega_2)}{P(\omega_1)}\)的大小。

0-1 loss

一种简单的loss定义是损失在分类正确的时候为0,错误的时候为1,即

\[ \lambda_{ij}=\left\{ \begin{aligned} 0 \quad (i=j) \\ 1 \quad (i\neq j) \end{aligned} \right. \]

将其带入原本的条件风险表达式,我们可以得到

\[ R(\alpha_i|x)=\sum\limits_{j=1}\limits^{c}\lambda(\alpha_i|\omega_j)P(\omega_i|x)=\sum\limits_{j\not=i}{P(\omega_i|x)}=1-P(\omega_i|x) \]

此时我们进行决策的话只需要比较\(P(\omega_i|x)\)的大小,而根据贝叶斯公式,我们只需要比较\(P(x|\omega_i)P(\omega_i)\)的大小,因此下面我们就来解决这一部分的计算问题。

参数估计 Parameter Estimation

经过刚才的推导我们发现,最后只需要计算\(P(x|\omega_i)P(\omega_i)\)就可以进行贝叶斯决策,而\(P(\omega_i)\)是可以直接在样本中计算出来的,因为监督学习中每个样本都是有label的,可以非常容易地计算出\(P(\omega_i)\),问题就在于如何计算\(P(x|\omega_i)\),也就是类别\(\omega_i\)中出现的样本值为x的概率。

我们可以用数据集D的样本来对\(P(x|\omega_i)\)进行估计,而估计的主要方法有极大似然法(Maximum-Likelihood)和贝叶斯估计法两种。

正态分布 Normal Distribution

我们需要先回忆一下概率论中学过的正态分布的相关知识,因为后面极大似然估计中会用到。正态分布也叫做高斯分布,很明显这个分布是数学王子高斯发现的,正态分布的形式如下: 对于一维变量我们有:

\[ P(x|\mu,\sigma^2)=\mathcal{N}(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\lbrace -\frac{(x-\mu)^2}{2\sigma^2}\rbrace \]

并且\(E(x)=\mu,var(x)=\sigma^2\),而对于d维的向量x,多元高斯分布的参数是d维的均值向量\(\mu\)\(d\times d\)的对称正定协方差矩阵\(\Sigma\)

\[ P(\boldsymbol x|\mu,\Sigma)=\mathcal{N}(x|\mu,\Sigma^2)=\frac{1}{({2\pi})^{\frac{d}{2}}|\Sigma|^{\frac{1}{2}}}\exp[-\frac{1}{2}(\boldsymbol x-\mu)^{T}\Sigma^{-1}(\boldsymbol x-\mu)] \]

极大似然法

估计模型参数的时候最常用的方法就是极大似然估计,对于一个包含m个样本的数据集X,我们可以假设它是由一个概率分布\(p_{\mathrm{data}}(\mathbf x)\)生成的,现在我们要用这个数据集来估计出一个\(p_{\mathrm{model}}(\mathbf x)\)来近似地比较真实的概率模型,我们可以给模型设定一族参数\(\theta\),因此模型可以表示为\(p_{\mathrm{model}}(\mathbf x,\theta)\),这样一来,极大似然法可以定义成:

\[ \theta_{\mathrm{ML}}=\arg\max\limits_{\theta}p_{\mathrm{model}}(\mathbf x,\theta)=\arg\max\limits_{\theta}\prod _{i=1}^m p_{\mathrm{model}}(x^{(i)},\theta) \]

但是多个概率的积不太容易计算,因此可以给目前函数取一个对数:

\[ \theta_{\mathrm{ML}}=\arg\max\limits_{\theta}\sum _{i=1}^m \log p_{\mathrm{model}}(x^{(i)},\theta) \]

因为重新缩放代价函数的时候argmax不会改变,因此可以除以样本的大小m得到和训练数据经验分布相关的期望作为极大似然法的评价准则:

\[ \theta_{\mathrm{ML}}=\arg\max\mathbb E_{\mathbf x -p_{\mathrm {data}}}[\log p_{\mathrm{model}}(x,\theta)] \]

一种解释最大似然估计的观点就是将极大似然法看作最小化训练集上的经验分布和模型分布之间的差异,而两者之间的差异可以根据KL散度进行度量,即:

\[ D_{KL}(\hat p_{\mathrm{data}}||p_{\mathrm{model}})=\mathbb E_{\mathbf x -p_{\mathrm {data}}}[\log \hat p_{\mathrm{data}}(x) - \log p_{\mathrm{model}}(x)] \]

贝叶斯定理的参数估计

我们假定需要进行分类的变量在某一类别下其样本的值是服从高斯分布的,则有

\[ P(\omega_i|x)=P(x|\omega_i)P(\omega_i)=P(x|\omega_i,\theta_i)P(\omega_i), \theta_i=(\mu_i,\sigma_i) \]

其中\(\theta_i\)为待估计的参数。我们定义整个数据集D中类别为\(\omega_i\)的子集是\(D_i\),其对于参数\(\theta_i\)的似然为

\[ P(D_i|\theta)=\prod\limits_{x_k\in D_i}P(x_k|\theta_i) \]

极大似然法的基本思路就是让这个数据集的似然达到最大,而达到最大的时候的参数值就是我们要求的参数估计值,因为它使得数据集中 可能属于这个类别的样本的概率达到了最大。而为了防止数值过小造成下溢,可以采用对数似然

\[ l(\theta) = \ln P(D_i|\theta) = \sum\limits_{x_k\in D_i}\ln P(x_k|\theta_i) \]

我们的目标就是\(\theta^*=\arg\max\limits_{\theta} l(\theta)\)

我们之前已经假设了某一类别下的x服从正态分布,则有

\[ \begin{aligned} \ln P(x_k|\theta_i) & = \ln (\frac{1}{({2\pi})^{\frac{d}{2}}|\Sigma|^{\frac{1}{2}}}\exp[-\frac{1}{2}(x_k-\mu_i)^{T}\Sigma^{-1}(x_k-\mu_i)])\\ & = -\frac{d}{2}\ln (2\pi)-\frac{1}{2}\ln |\Sigma|-\frac{1}2 (x_k-\mu_i)^{T}\Sigma^{-1}(x_k-\mu_i) \end{aligned} \]

则对\(\mu_i\)求偏导数得到

\[ \frac{\partial \ln P(x_k|\theta_i)}{\partial \mu_i}=\Sigma^{-1}(x_k-\mu_i) \]

我们需要让对数似然函数取得最值,则对其求偏导数可得到

\[ \sum_{x_k\in D_i}\Sigma^{-1}(x_k-\mu_i)=0\Rightarrow \mu_i=\frac{1}{n}\sum_{x_k\in D_i} x_k \]

同理可以对\(\Sigma_i\)进行求导可以得到

\[ \frac{\partial \ln P(x_k|\theta_i)}{\partial \Sigma_i}=\frac{1}{2\Sigma}+\frac{1}{2\Sigma^2}(x_k-\mu_i)(x_k-\mu_i)^T \]

因此可以求得\(\Sigma\)的估计值

\[ \Sigma^2=\sum_{x_k\in D_i}(x_k-\mu_i)(x_k-\mu_i)^T=\sum_{x_k\in D_i}||x_k-\mu_i||^2 \]

这些参数按照上面的估计公式计算之后可以带入原本的likelihood表达式计算出likelihood,进一步计算出posterior

贝叶斯估计

极大似然法是频率学派的方法,而贝叶斯估计则是贝叶斯派的估计方法,区别在于极大似然法MLE认为估计的参数是一个fixedvalue但是贝叶斯派则认为 它是随机的变量. 把训练集D作为变量,则有

\[ P(\omega_i|x,D)=\frac{P(x|\omega_i,D)P(\omega_i,D)}{\sum P(x|\omega_i,D)P(\omega_i,D)} \]

又可以化简为

\[ P(\omega_i|x,D)=\frac{P(x|\omega_i,D_i)P(\omega_i)}{\sum P(x|\omega_i,D_i)P(\omega_i)} \]

朴素贝叶斯 Naive Bayes

朴素贝叶斯分类器的基本思想是,既然我们的困难是\(P(x|\omega_j)\)涉及到x所有属性的联合概率不好估计,那我们就把联合概率的计算难度降到最低, 也就是假设x的所有属性(也可以叫做特征)是互相独立的,此时对于d维的样本\(x\in D\),贝叶斯的公式变成了

\[ P(\omega|x)=\frac{P(\omega)P(x|\omega)}{P(x)}=\frac{P(\omega)}{P(x)}\prod_{i=1}^dP(x_i|\omega) \]

类似地,对于所有类别来说P(x)是相同的,因此朴素贝叶斯分类的目标就是

\[ h_{nb}(x)=\arg\max_{c\in Y}P(\omega)\prod_{i=1}^{d}P(x_i|\omega) \]

训练集D中,令\(D_c\)表示第c类样本构成的集合,则类的先验概率

\[ P(c)=\frac{|D_c|}{|D|} \]

对于离散的属性而言,可以令\(D_{c,x_i}\)表示\(D_c\)中第i个特征的取值为\(x_i\)的样本组成的集合,则条件概率可以估计为

\[ P(x_i|\omega)=\frac{|D_{c,x_i}|}{|D_c|} \]

拉普拉斯修正\(Laplas Smoothing\):样本存在局限性,不可能所有的特征都恰好在样本中出现,特别是朴素贝叶斯的完全独立假设使得样本可能的特征数量变得特别多,我们可以假定所有的特征大致上都是均匀分布的,通过在训练集上添加K个特征(K种不同的特征,每种类型各一个)使得每种特征都可以出现,此时的先验概率估算公式 变成了:

\[ P(x_i|\omega)=\frac{|D_{c,x_i}|+1}{|D_c|+1} \]

颜色主题调整

评论区~

有用的话请给我个star或者follow我的账号!! 非常感谢!!
快来跟我聊天~