贝叶斯的参数估计
朴素贝叶斯方法需要知道先验概率,此时
P ( Y i ) P(Y_i) P ( Y i ) 是先验概率,P ( X ∣ Y i ) P(X|Y_i) P ( X ∣ Y i ) 是类的条件概率密度。
P ( Y i ) P(Y_i) P ( Y i ) 容易得到,对类的条件密度的估计存在两个问题:1,实际的样本对于类条件概率的估计来说,太少了;2,有时特征空间的维度太高,计算复杂度太高。
为了降低估计难度,我们可以将类条件密度参数化,比如用正态分布来估计P ( X ∣ Y i ) P(X|Y_i) P ( X ∣ Y i ) (极大似然)。
再来一遍:
根据贝叶斯公式,利用先验概率和类条件概率求后验概率:
P ( w i ∣ x ) = p ( x ∣ w i ) P ( w i ) ∑ j = 1 2 p ( x ∣ w j ) P ( w j ) P(w_i|x)=\dfrac{p(x|w_i)P(w_i)}{\sum_{j=1}^{2}p(x|w_j)P(w_j)} P ( w i ∣ x ) = ∑ j = 1 2 p ( x ∣ w j ) P ( w j ) p ( x ∣ w i ) P ( w i )
其中,p ( x ∣ w i ) p(x|w_i) p ( x ∣ w i ) 就是类条件概率密度,其中x是个特征向量x = [ x 1 , x 2 , . . . , x d ] T x=[x_1,x_2,...,x_d]^T x = [ x 1 , x 2 , . . . , x d ] T 。
1,这个类条件概率密度我们总是假设它已知,然而真实情况是,它并非已知,而且貌似没那么好估计,因为特征向量包含多的特征,这就导致类条件概率密度函数中的参数个数为指数级别,很难进行估计。
2,实际中,假设特征向量x的第j个特征Xj可取值有Sj个,那么参数个数为 c ∏ j = 1 d S j c\prod_{j=1}^d S_j c ∏ j = 1 d S j
在参数估计里面,主要有最大似然估计和贝叶斯估计。
极大似然估计法(Maximum Likehood Estimation)
极大似然估计法认为参数是固有的,但是可能由于一些外界噪声的干扰,使数据看起来不是完全由参数决定的。没关系,数学家们觉得,虽然有误差存在,但只要让在这个数据给定的情况下,找到一个概率最大的参数就可以了。那问题其实就变成了一个条件概率最大的求解,即求使得p ( θ ∣ D ) p(\theta|D) p ( θ ∣ D ) 最大的参数θ \theta θ :
arg max θ p ( θ ∣ D ) \mathop{\arg\max}_{\theta}\,p(\theta|D) arg max θ p ( θ ∣ D )
根据条件概率公式:p ( θ ∣ D ) = p ( D ∣ θ ) p ( θ ) p ( D ) p(\theta|D)=\dfrac{p(D|\theta)p(\theta)}{p(D)} p ( θ ∣ D ) = p ( D ) p ( D ∣ θ ) p ( θ )
因为我们在极大似然估计中假设 θ 是确定的,所以p(θ)就是一个常数。p(D) 同样是根据已有的数据得到的,也是确定的,或者我们可以把其看作是对整个概率的一个归一化因子。这时候,求解上面的公式arg max θ p ( θ ∣ D ) \mathop{\arg\max}_{\theta}\,p(\theta|D) arg max θ p ( θ ∣ D ) 就变成了求解:
arg max θ p ( D ∣ θ ) \mathop{\arg\max}_{\theta}\, p(D|\theta) arg max θ p ( D ∣ θ )
其中,p ( D ∣ θ ) p(D|\theta) p ( D ∣ θ ) 就是似然函数,我们要做的就是求一个是似然最大的参数。
求解这个问题,需要假设我们的数据是相互独立的,那么对数据的抽样集合D = { x 1 , x 2 , x 3 , . . . , x n } D=\{x_1,x_2,x_3,...,x_n\} D = { x 1 , x 2 , x 3 , . . . , x n } ,有:
p ( D ∣ θ ) = ∏ i = 1 n p ( x i ∣ θ ) p(D|\theta)=\prod_{i=1}^{n}p(x_i|\theta) p ( D ∣ θ ) = ∏ i = 1 n p ( x i ∣ θ ) 。
取对数、求导取极值点,就得到了要估计的参数。
假设有一组独立同分布的随机变量X,给定一个概率分布D,假设其概率密度函数为f,以及一个分布的参数θ,从这组样本中抽出x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x 1 , x 2 , . . . , x n ,那么通过参数θ \theta θ 的模型 f 生成上面样本的概率为:
f ( x 1 , x 2 , ⋯ , x n ∣ θ ) = f ( x 1 ∣ θ ) × f ( x 2 ∣ θ ) × ⋯ f ( x n ∣ θ ) f(x_1,x_2,\cdots,x_n|\theta) = f(x_1|\theta) \times f(x_2|\theta) \times \cdots f(x_n|\theta) f ( x 1 , x 2 , ⋯ , x n ∣ θ ) = f ( x 1 ∣ θ ) × f ( x 2 ∣ θ ) × ⋯ f ( x n ∣ θ )
最大似然估计会寻找关于θ 的最可能的值,即在所有可能的 θ 取值中,寻找一个值使这个采样的“可能性”最大。
为是”模型已定,参数未知”,此时我们是根据样本采样求估计参数θ \theta θ ,所以定义似然函数:
L ( θ ∣ x 1 , x 2 , ⋯ , x n ) = f ( x 1 , x 2 , ⋯ , x n ∣ θ ) = ∏ f ( x i ∣ θ ) L(\theta|x_1,x_2,\cdots,x_n)=f(x_1,x_2,\cdots,x_n|\theta) = \prod f(x_i | \theta) L ( θ ∣ x 1 , x 2 , ⋯ , x n ) = f ( x 1 , x 2 , ⋯ , x n ∣ θ ) = ∏ f ( x i ∣ θ )
由于概率密度f ( x i ∣ θ ) f(x_i|\theta) f ( x i ∣ θ ) 一般比较小,而n往往比较大,连乘容易造成浮点数下溢,所以我们用对数似然函数:
ln L ( θ ∣ x 1 , x 2 , ⋯ , x n ) = ∑ i = 1 n f ( x i ∣ θ ) \ln L(\theta|x_1,x_2,\cdots,x_n) = \sum\limits_{i=1}^n f(x_i | \theta) ln L ( θ ∣ x 1 , x 2 , ⋯ , x n ) = i = 1 ∑ n f ( x i ∣ θ )
并且令:
l ^ = 1 n ln L \widehat l= \dfrac{1}{n} \ln L l = n 1 ln L
那么参数θ \theta θ 的估计值为:
θ ^ M L E = arg max θ l ^ ( θ ∣ x 1 , x 2 , ⋯ , x n ) \widehat{\theta}_{MLE} =\mathop{\arg\max}_{\theta} \widehat l(\theta|x_1,x_2,\cdots,x_n) θ M L E = arg max θ l ( θ ∣ x 1 , x 2 , ⋯ , x n )
举个例子
http://noahsnail.com/2018/05/17/
假设样本服从正态分布N ∼ ( μ , σ 2 ) N\sim(\mu,\sigma^2) N ∼ ( μ , σ 2 ) ,则似然函数:
L ( θ ∣ D ) = ∏ i = 0 n p ( x i ∣ θ ) ≃ L ( μ , σ 2 ) = ∏ i = 0 n 1 2 π σ e − ( x i − μ ) 2 2 σ 2 L(\theta|D)=\prod_{i=0}^{n}p(x_i|\theta)\simeq L(\mu,\sigma^2)=\prod_{i=0}^n \dfrac {1} {\sqrt{2\pi} \sigma}e^{-\frac {(x_i-\mu)^2} {2\sigma^2}} L ( θ ∣ D ) = ∏ i = 0 n p ( x i ∣ θ ) ≃ L ( μ , σ 2 ) = ∏ i = 0 n 2 π σ 1 e − 2 σ 2 ( x i − μ ) 2
对其取对数得:
l n L ( μ , σ 2 ) = − n 2 l n ( 2 π ) − n 2 l n ( σ 2 ) − 1 2 σ 2 ∑ i = 0 n ( x i − μ ) 2 lnL(\mu,\sigma^2)=-\frac {n} {2}ln(2\pi) - \frac {n} {2} ln(\sigma^2) - \frac {1} {2\sigma^2} \sum_{i=0}^n(x_i-\mu)^2 l n L ( μ , σ 2 ) = − 2 n l n ( 2 π ) − 2 n l n ( σ 2 ) − 2 σ 2 1 ∑ i = 0 n ( x i − μ ) 2
分别对μ , θ 2 \mu\, ,\quad \theta^2 μ , θ 2 求偏导,并令偏导数为0,得:
{ ∂ l n L ( μ , σ 2 ) ∂ μ = 1 σ 2 ∑ i = 0 n ( x i − μ ) = 0 ∂ l n L ( μ , σ 2 ) ∂ σ 2 = − n 2 σ 2 + 1 2 σ 4 ∑ i = 0 n ( x i − μ ) 2 = 0 \begin{cases} \dfrac {\partial lnL(\mu,\sigma^2)} {\partial \mu}= \dfrac {1} {\sigma^2} \sum_{i=0}^n(x_i-\mu) =0 \\ \dfrac {\partial lnL(\mu,\sigma^2)} {\partial \sigma^2}= -\dfrac {n} {2\sigma^2} + \dfrac {1} {2\sigma^4}\sum_{i=0}^n(x_i-\mu)^2 =0 \end{cases} ⎩ ⎪ ⎨ ⎪ ⎧ ∂ μ ∂ l n L ( μ , σ 2 ) = σ 2 1 ∑ i = 0 n ( x i − μ ) = 0 ∂ σ 2 ∂ l n L ( μ , σ 2 ) = − 2 σ 2 n + 2 σ 4 1 ∑ i = 0 n ( x i − μ ) 2 = 0
解得:
{ μ ^ = 1 n ∑ i = 0 n x i = x ˉ σ ^ 2 = 1 n ∑ i = 0 n ( x i − x ˉ ) 2 \begin{cases} \hat{\mu}= \frac {1} {n} \sum_{i=0}^nx_i=\bar{x}\\ \hat{\sigma}^2 = \frac {1} {n} \sum_{i=0}^n(x_i-\bar{x})^2 \end{cases} { μ ^ = n 1 ∑ i = 0 n x i = x ˉ σ ^ 2 = n 1 ∑ i = 0 n ( x i − x ˉ ) 2
μ ^ , σ ^ 2 \hat{\mu},\hat{\sigma}^2 μ ^ , σ ^ 2 就是正态分布中μ , θ 2 \mu ,\,\theta^2 μ , θ 2 的最大似然估计值。
贝叶斯估计法
用极大似然估计可能会出现所要估计的概率值为0的情况。 这时会影响到后验概率的计算结果, 使分类产生偏差。 解决这一问题的方法是采用贝叶斯估计。
最大似然估计和贝叶斯估计的区别
最大似然估计要估计的参数θ被当作是固定形式的一个未知变量,然后我们结合真实数据通过最大化似然函数来求解这个固定形式的未知变量。
贝叶斯估计则是将参数视为是有某种已知先验分布的随机变量,意思是这个参数不是一个固定的未知数,而是符合一定先验分布如:随机变量θ符合正态分布等。那么在贝叶斯估计中除了类条件概率密度p ( x ∣ ω ) p(x|\omega) p ( x ∣ ω ) 符合一定的先验分布,参数θ也符合一定的先验分布。我们通过贝叶斯规则将参数的先验分布转化成后验分布进行求解 !
在最大似然估计中θ \theta θ 被假定为固定值,而贝叶斯估计中认为θ \theta θ 是随机变量。
设样本集合为D,目标是计算P ( ω i ∣ x , D ) P(\omega_i|x,D) P ( ω i ∣ x , D ) ,根据贝叶斯公式:
P ( ω i ∣ x , D ) = P ( x ∣ ω i , D ) P ( ω i ∣ D ) ∑ j = 1 c P ( x ∣ ω j , D ) P ( ω j ∣ D ) P(\omega_i|x,D) = \dfrac{P(x|\omega_i,D)P(\omega_i|D)}{\sum_{j=1}^{c}P(x|\omega_j,D)P(\omega_j|D)} P ( ω i ∣ x , D ) = ∑ j = 1 c P ( x ∣ ω j , D ) P ( ω j ∣ D ) P ( x ∣ ω i , D ) P ( ω i ∣ D )
1,由于先验概率通常可以事先获得,所以:P ( ω i ) = P ( ω i ∣ D ) P(\omega_i)=P(\omega_i|D) P ( ω i ) = P ( ω i ∣ D )
2,每个样本只依赖于所属的类(类之间也是相互独立的),所以:P ( x ∣ ω i , D ) = P ( x ∣ ω i , D i ) P(x|\omega_i,D)=P(x|\omega_i,D_i) P ( x ∣ ω i , D ) = P ( x ∣ ω i , D i ) ,于是:
上式变为:
P ( ω i ∣ x , D ) = P ( x ∣ ω i , D i ) ⋅ P ( ω i ) ∑ j = 1 c P ( x ∣ ω j , D j ) ⋅ P ( ω j ) P(\omega_i|x,D) = \dfrac{P(x|\omega_i,D_i)\cdot P(\omega_i)}{\sum_{j=1}^{c}P(x|\omega_j,D_j)\cdot P(\omega_j)} P ( ω i ∣ x , D ) = ∑ j = 1 c P ( x ∣ ω j , D j ) ⋅ P ( ω j ) P ( x ∣ ω i , D i ) ⋅ P ( ω i )
只要在每类中,独立计算P ( x ∣ ω i , D i ) P(x|\omega_i,D_i) P ( x ∣ ω i , D i ) ,就可以确定X的类别。
由于类之间相互独立,所以我们不用区分类了,P ( x ∣ ω i , D i ) = P ( x ∣ D ) P(x|\omega_i,D_i)=P(x|D) P ( x ∣ ω i , D i ) = P ( x ∣ D ) 。
因此,核心工作就是要估计P ( x ∣ D ) P(x|D) P ( x ∣ D )
怎样估计P ( x ∣ D ) P(x|D) P ( x ∣ D ) 呢?
根据条件概率公式p ( x , θ ∣ D ) = p ( x ∣ θ , D ) p ( θ ∣ D ) p(x,\theta|D)=p(x|\theta,D)p(\theta|D) p ( x , θ ∣ D ) = p ( x ∣ θ , D ) p ( θ ∣ D ) ,
p ( x ∣ D ) = ∫ θ p ( x , θ ∣ D ) d θ = ∫ θ p ( x ∣ θ , D ) p ( θ ∣ D ) d θ p(x|D)=\int_{\theta}p(x,\theta|D)d\theta=\int_{\theta}p(x|\theta,D)p(\theta|D)d\theta p ( x ∣ D ) = ∫ θ p ( x , θ ∣ D ) d θ = ∫ θ p ( x ∣ θ , D ) p ( θ ∣ D ) d θ
又因为对数据D中的x而言,θ \theta θ 和θ , D \theta,D θ , D 是同一条件,有p ( x ∣ θ , D ) = p ( x ∣ θ ) p(x|\theta,D)=p(x|\theta) p ( x ∣ θ , D ) = p ( x ∣ θ )
所以
p ( x ∣ D ) = ∫ θ p ( x , θ ∣ D ) d θ = ∫ θ p ( x ∣ θ , D ) p ( θ ∣ D ) d θ = ∫ θ p ( x ∣ θ ) p ( θ ∣ D ) d θ p(x|D)=\int_{\theta}p(x,\theta|D)d\theta=\int_{\theta}p(x|\theta,D)p(\theta|D)d\theta=\int_{\theta}p(x|\theta)p(\theta|D)d\theta p ( x ∣ D ) = ∫ θ p ( x , θ ∣ D ) d θ = ∫ θ p ( x ∣ θ , D ) p ( θ ∣ D ) d θ = ∫ θ p ( x ∣ θ ) p ( θ ∣ D ) d θ
注意到: ∫ θ p ( x ∣ θ ) p ( θ ∣ D ) d θ \int_{\theta}p(x|\theta)p(\theta|D)d\theta ∫ θ p ( x ∣ θ ) p ( θ ∣ D ) d θ 如果P ( θ ∣ D ) P(\theta|D) P ( θ ∣ D ) 在某个θ ^ \hat{\theta} θ ^ 附近有非常显著的尖峰,则
p ( x ∣ D ) ≃ p ( x ∣ θ ^ ) p(x|D)\simeq p(x|\hat{\theta}) p ( x ∣ D ) ≃ p ( x ∣ θ ^ )
即:
如果条件概率有一个已知的形式,则利用已有的训练样本,就能通过p ( θ ∣ D ) p(\theta|D) p ( θ ∣ D ) 对p ( x ∣ D ) p(x|D) p ( x ∣ D ) 进行估计。
贝叶斯估计过程,就是:
(1)p ( x ∣ D ) = ∫ θ p ( x ∣ θ ) p ( θ ∣ D ) d θ p(x|D)=\int_{\theta}p(x|\theta)p(\theta|D)d\theta p ( x ∣ D ) = ∫ θ p ( x ∣ θ ) p ( θ ∣ D ) d θ
(2)p ( θ ∣ D ) = p ( D ∣ θ ) p ( θ ) p ( D ) = p ( D ∣ θ ) p ( θ ) ∫ θ p ( D ∣ θ ) p ( θ ) d θ p(\theta|D)=\dfrac{p(D|\theta)p(\theta)}{p(D)}=\dfrac{p(D|\theta)p(\theta)}{\int_{\theta}p(D|\theta)p(\theta)d\theta} p ( θ ∣ D ) = p ( D ) p ( D ∣ θ ) p ( θ ) = ∫ θ p ( D ∣ θ ) p ( θ ) d θ p ( D ∣ θ ) p ( θ )
其中,p ( D ∣ θ ) = ∏ i = 1 n p ( x i ∣ θ ) p(D|\theta)=\prod_{i=1}^{n}p(x_i|\theta) p ( D ∣ θ ) = ∏ i = 1 n p ( x i ∣ θ )
Ref:
https://blog.csdn.net/liu1194397014/article/details/52766760