在机器学习算法——贝叶斯分类器1(贝叶斯决策论)_Vicky_xiduoduo的博客-CSDN博客中讲到,求后验概率P(c|x),有两种策略,一种是判别式模型,一种是生成式模型,其中

P(x|c)是样本x相对于类标记c的类条件概率或称为“似然”。 似然P(x|c),由于涉及关于x所有属性的联合概率,直接根据样本出现的频率来估计会遇到严重的困难。

所以估计类条件概率一般常用得策略是先假定其具有某种确定得概率分布形式,再基于训练样本对概率分布的参数进行估计

记关于类别c的类条件概率P(x|c),假设P(x|c)具有确定的形式并且被参数向量\theta_c唯一确定,则我们的任务就说利用训练集D估计参数\theta_c。为了明确起见,将P(x|c)记为P(x|\theta_c)

事实上,概率模型的训练过程就是参数估计的过程。对于参数估计,统计学界有两种解决方案:

(1)频率主义学派

参数虽然未知,但却是客观存在的固定值,因此,可通过优化似然函数等准则来确定参数值。

(2)贝叶斯学派

参数是未观察到的随机变量,其本身也可有分布。因此,可假定参数服从一个先验分布,然后基于观测到的数据来计算参数的后验分布。

本节介绍频率主义学派的极大似然估计(Maximum Likelihood Estimation, MLE),这是根据数据采样来估计概率分布参数的经典方法。

D_c表示训练集D中第c类样本组成的集合,假设这些样本是独立同分布的,则参数\theta_c对于数据集

 D_c的似然是

P(D_c|\theta_c) = \prod_{x \in D_c}P(x|\theta_c)(公式2.1)

 对\theta_c进行极大似然估计,就是去寻找最大化似然P(D_c| \theta_c)的参数值\hat{\theta_c}

直观上看,极大似然估计是试图在\theta_c所有可能的取值中,找到一个能使数据出现的“可能性”最大的值。

公式2.1的连乘操作易造成下溢(即当接近零的数被四舍五入为零时会发生下溢),通常采用对数似然,即

LL(\theta_c) = log P(D_c|\theta_c) = \sum_{x \in D_c} log P(x| \theta_c)

此时参数\theta_c的极大似然估计\hat{\theta_c}为:

\hat{\theta_c} = arg \ \underset{\theta_c}{max} LL(\theta_c).

例如,在连续属性情形下,假设概率密度函数 P(x|c) \sim N( \mu_c, \sigma_c^2 ),其密度函数为:

f(x) = \frac{1}{\sqrt{2\pi \sigma_c} exp(-\frac{(x-\mu_c)^2}{2 \sigma_c^2})}

L = f(x_1)\times ... \times f(x_c)\\ = \frac{1}{\sqrt{2 \pi \sigma_c ^2}}e^{-\frac{(x_1-\mu_c)^2}{2 \sigma^2}} \times ...\times \frac{1}{\sqrt{2 \pi \sigma_c ^2}}e^{-\frac{(x_c-\mu_c)^2}{2 \sigma_c^2}}

ln \frac{1}{\sqrt{2 \pi \sigma_c ^2}}e^{-\frac{(x_1-\mu_c)^2}{2 \sigma_c^2}} \\ = ln(\frac{1}{\sqrt{2\pi \sigma_c^2}}) +ln(e^{-\frac{(x_1 - \mu_c) ^2}{2 \sigma_c^2}}) \\ =ln(2 \pi \sigma_c^2) ^{-\frac{1}{2}}- \frac{(x_1-\mu_c)^2}{2 \sigma_c^2} \\ =-\frac{1}{2} ln (2\pi) - \frac{1}{2} ln(\sigma_c^2) - \frac{(x_1-\mu_c)^2}{2 \sigma_c^2}\\ = -\frac{1}{2} ln(2\pi) - ln(\sigma_c) - \frac{(x_1-\mu_c)^2}{2 \sigma_c^2}

所以,

ln L = ln( \frac{1}{\sqrt{2 \pi \sigma_c ^2}}e^{-\frac{(x_1-\mu_c)^2}{2 \sigma_c^2}} \times ... \times \frac{1}{\sqrt{2 \pi \sigma_c ^2}}e^{-\frac{(x_c-\mu_c)^2}{2 \sigma_c^2}} )\\ = -\frac{1}{2}ln(2 \pi) - ln(\sigma_c)- \frac{(x_1-\mu_c)^2}{2 \sigma_c^2} - ...- \frac{1}{2}ln(2 \pi) - ln(\sigma_c)- \frac{(x_c-\mu_c)^2}{2 \sigma_c^2} \\ =-\frac{c}{2} ln (2\pi)-c ln(\sigma_c)- \frac{(x_1-\mu_c)^2}{2 \sigma_c^2}-...-\frac{(x_c-\mu_c)^2}{2 \sigma^2}

\mu_c最大似然估计,需要对\mu_c求偏导,然后令其等于0,得出:

\frac{\partial (lnL)}{\partial \mu_c}=0 - 0 + \frac{(x_1-\mu_c)}{\sigma_c^2} +...+ \frac{(x_c-\mu_c)}{\sigma_c^2} \\ = \frac{1}{\sigma_c^2}[(x_1-\mu_c)+...+(x_c-\mu_c)]\\ =\frac{1}{\sigma_c^2}[(x_1+...+x_c)-n\mu_c]

令其等于0,则

0=(x_1+...+x_c)-n\mu_c \\ n\mu_c = (x_1+...+x_c)\\ \mu_c = \frac{(x_1+...+x_c)}{n} = \frac{1}{|D_c|}\sum_{x \in D_c}x

 对\sigma_c^2求极大似然估计,需要对\sigma_c^2求偏导,然后令其等于0,得出:

\frac{\partial (lnL) }{\partial \sigma_c} = 0 - \frac{n}{\sigma_c}+\frac{(x_1-\mu_c)^2}{\sigma_c^3}+...+\frac{(x_c-\mu_c)^2}{\sigma_c^3}\\ =-\frac{n}{\sigma_c}+\frac{1}{\sigma_c^3}[(x_1-\mu_c)^2+...+(x_c-\mu_c)^2]

 n\sigma_c ^2=(x_1-\mu_c)^2+...+(x_n-\mu_c)^2\\ \sigma_c^2 = \frac{(x_1-\mu_c)^2+...+(x_n-\mu_c)^2}{n} = \frac{1}{|D_c|} \sum_{x \in D_c} (x-\mu_c)(x-\mu_c)^T

 也就是说,通过极大似然法得到的正态分布均值就是样本均值,方差就是(x-\mu_c)(x-\mu_c)^T的均值。在离散属性情形下,也可通过类似的方式估计类条件概率。

需要注意的是,这种参数化的方法虽然能使类条件概率估计变得简单,但估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布。在现实应用中,欲做出能较好地接近潜在真实分布的假设,往往需在一定程度上利用关于应用任务本身的经验知识,否则若仅凭“猜测”来假设概率分布形式,很可能产生误导性的结果。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐