您当前的位置: 首页 >  机器学习

静静的喝酒

暂无认证

  • 3浏览

    0关注

    99博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

机器学习笔记——极大似然估计与最大后验概率估计

静静的喝酒 发布时间:2022-07-05 14:05:51 ,浏览量:3

机器学习笔记——极大似然估计与最大后验概率估计
  • 目录
    • 数据与概率模型
      • 相关符号定义
    • 频率学派角度看待机器学习问题
      • 极大似然估计
    • 贝叶斯学派角度看待机器学习问题
      • 最大后验概率估计
      • 贝叶斯估计及其弊端
    • 实例了解极大似然估计和最大后验概率的区别

目录 数据与概率模型

机器学习领域的一个关键概念——事件发生的不确定性。概率论 为这种不确定性的量化和操纵提供了框架,成为机器学习的核心基础之一。 基于现实世界中所发生现象的任何实际模型,必须要考虑到 随机性 的可能。也就是说,我们所关注的信息可能是事先不可预料的。但是,经过大量重复试验,这种现象往往存在某种 规律性。 因此,表述该现象的模型实质上是概率性的 → \to → 这种模型被称为 概率模型。

示例:投掷一枚质地均匀的硬币。 排除硬币站立等极特殊情况,样本空间 S \mathcal S S中共包含两种情况: S = { H e a d , T a i l } \mathcal S = \{Head,Tail\} S={Head,Tail} 其中 H e a d Head Head表示“硬币正面朝上”, T a i l Tail Tail表示“硬币反面朝上”。 我们发现,投掷硬币这个试验,确实满足上述两种属性:

  • 在投掷硬币试验结果出现之前,我们没有办法事先预料硬币是正面朝上还是反面朝上;
  • 在大量重复试验过程中,我们发现 规律:硬币正面朝上和反面朝上的次数相差不大。
相关符号定义

我们定义 X \mathcal X X为大量数据试验产生的数据集合(data):

  • 定义该数据集合共包含 N N N个数据样本;

  • 样本维度 数量定义为 p p p; 样本维度,通俗点讲,即使用 一组数值描述数据样本特征,而这组数值的数量即样本维度。 S \mathcal S S中的任意一个样本都可以使用这组数值进行表示。 示例:

    如果我们想要统计 收入与人之间 的关联关系,在收集样本时,我们对样本属性进行划分: 性别:0 - 男 \ 1 - 女; 年龄: 学历:0 - 高中\ 1 - 专科\ 2 - 本科\ 3 - 硕士\ 4 - 博士 从事行业:0 - IT行业\ 1 - 金融\ 2 - 服务\ 3 - 管理… 从事年限:0 - 0-1年\ 1 - 1-3年\ 2 - 3-5年\ 3 - 5年以上 婚姻情况:0 - 已婚\ 1 - 未婚 月收入情况:0 - 5000以下\ 1 - 5000-8000\ 2 - 8000-10000\ 3 - 10000以上 现有一个样本描述如下: 一个27岁姑娘,硕士,从事金融行业1年,未婚,月收入9200 使用 向量 表示该样本的特征信息: [ 1 , 27 , 3 , 1 , 0 , 1 , 2 ] [1,27,3,1,0,1,2] [1,27,3,1,0,1,2] 以上我们从 7个维度 对一个样本进行统计,在数据集合中任意一个样本都可以统计到该特征。

回归正题,使用 数学符号 对数据集合 X \mathcal X X进行表示: X = ( x ( 1 ) x ( 2 ) x ( 3 ) ⋮ x ( N ) ) \mathcal X = \begin{pmatrix} x^{(1)} \\ x^{(2)} \\ x^{(3)}\\ \vdots \\ x^{(N)} \end{pmatrix} X= ​x(1)x(2)x(3)⋮x(N)​ ​ 其中 N N N表示数据集合 X \mathcal X X中包含的样本数量;每一个样本根据 样本维度 可以进行如下表示( x 1 x_1 x1​示例): x ( 1 ) = ( x 1 ( 1 ) , x 2 ( 1 ) , x 3 ( 1 ) , . . . , x p ( 1 ) ) x^{(1)} = \begin{pmatrix} x_1^{(1)},x_2^{(1)} ,x_3^{(1)}, ...,x_p^{(1)} \end{pmatrix} x(1)=(x1(1)​,x2(1)​,x3(1)​,...,xp(1)​​) 可以将其理解成:使用关于样本 x ( 1 ) x^{(1)} x(1)的 p p p个维度的不同结果 x 1 ( 1 ) , x 2 ( 1 ) , x 3 ( 1 ) , . . . , x p ( 1 ) x_1^{(1)},x_2^{(1)} ,x_3^{(1)}, ...,x_p^{(1)} x1(1)​,x2(1)​,x3(1)​,...,xp(1)​对 x ( 1 ) x^{(1)} x(1)进行表示。 综上,将样本数量与维度结合,关于样本集合 X \mathcal X X的表示如下( N × p N \times p N×p 的二维矩阵): X = ( x ( 1 ) x ( 2 ) x ( 3 ) ⋮ x ( N ) ) = ( x 1 ( 1 ) , x 2 ( 1 ) , ⋯   , x p ( 1 ) x 1 ( 2 ) , x 2 ( 2 ) , ⋯   , x p ( 2 ) x 1 ( 3 ) , x 2 ( 3 ) , ⋯   , x p ( 3 ) ⋮ x 1 ( N ) , x 2 ( N ) , ⋯   , x p ( N ) ) N × p \mathcal X = \begin{pmatrix} x^{(1)} \\ x^{(2)} \\ x^{(3)}\\ \vdots \\ x^{(N)} \end{pmatrix} = \begin{pmatrix} x_1^{(1)},x_2^{(1)},\cdots,x_p^{(1)} \\ x_1^{(2)},x_2^{(2)},\cdots,x_p^{(2)} \\ x_1^{(3)},x_2^{(3)},\cdots,x_p^{(3)} \\ \vdots \\ x_1^{(N)},x_2^{(N)},\cdots,x_p^{(N)} \end{pmatrix}_{N\times p} X= ​x(1)x(2)x(3)⋮x(N)​ ​= ​x1(1)​,x2(1)​,⋯,xp(1)​x1(2)​,x2(2)​,⋯,xp(2)​x1(3)​,x2(3)​,⋯,xp(3)​⋮x1(N)​,x2(N)​,⋯,xp(N)​​ ​N×p​

我们将 数据本身 看做概率模型,设该模型的参数(parameter)为 θ \theta θ。 某一样本 x x x可以进行如下表示: x ∼ P ( x ; θ ) x \sim P(x ; \theta) x∼P(x;θ) 可以将其理解成:在 P ( x ; θ ) P(x; \theta) P(x;θ)的概率分布下,以模型参数 θ \theta θ产生一个又一个的相互独立的 x x x样本,构成 X \mathcal X X数据集合。 样本间相互独立原因是‘每一个样本’均是在相同概率分布下,通过重复试验产生的结果,因此各结果之间不存在关联关系。 例如:投掷两次同一个硬币,第一次正面朝上和第二次正面朝上的概率没有任何关系。

机器学习的核心是通过样本集合 X \mathcal X X学习概率模型的参数 θ \theta θ,并基于 θ \theta θ对新样本进行预测。

频率学派角度看待机器学习问题

频率学派认为:概率分布 P ( x ; θ ) P(x ; \theta) P(x;θ)中的参数 θ \theta θ是一个 未知的常量。数据集合 X \mathcal X X本身是随机变量(Random Variable)。

这里引用黑格尔的一句话很贴切:存在即合理。结合 x ∼ P ( x ; θ ) x \sim P(x ; \theta) x∼P(x;θ),既然 x x x是基于参数 θ \theta θ的概率分布 P ( x ; θ ) P(x ; \theta) P(x;θ)产生出来的样本,每一个样本 x x x的存在都有它的道理。

因此,频率学派通过大量试验产生的样本集合 X \mathcal X X将概率模型参数 θ \theta θ估计出来。常用的方法是 极大似然估计(Maximum Likelihood Estimate,MLE)。

极大似然估计

极大似然估计表示如下: θ M L E = arg ⁡ max ⁡ θ P ( X ; θ ) \theta_{MLE} = \mathop{\arg\max}\limits_{\theta} P(X ; \theta) θMLE​=θargmax​P(X;θ) 从字面意思来讲,求得一个具体的参数 θ \theta θ,使得数据集合 X \mathcal X X的概率最大。而 数据集合 X \mathcal X X的概率同样可以表示为数据集合内样本的联合概率分布。公式表示如下: P ( X ; θ ) = P ( x ( 1 ) , x ( 2 ) , . . . , x ( N ) ; θ ) P(X ; \theta) = P(x^{(1)},x^{(2)},...,x^{(N)};\theta) P(X;θ)=P(x(1),x(2),...,x(N);θ)

通常情况下,我们也将极大似然估计表示为如下形式: θ M L E = arg ⁡ max ⁡ θ log ⁡ P ( X ; θ ) \theta_{MLE} = \mathop{\arg\max}\limits_{\theta} \log P(X ; \theta) θMLE​=θargmax​logP(X;θ) 为什么要加一个 log ⁡ \log log函数呢? 上面提到,从 P ( x ; θ ) P(x ; \theta) P(x;θ)概率分布中产生相互独立的样本 x x x,我们称 x x x服从于 P ( x ; θ ) P(x ; \theta) P(x;θ)且独立同分布。数学符号记作: x ∼ iid P ( x ; θ ) x \overset{\text{iid}}{\sim}P(x ; \theta) x∼iidP(x;θ) 因此,数据集合 X \mathcal X X产生的联合概率分布 P ( X ; θ ) P(X; \theta) P(X;θ)表示如下: P ( X ; θ ) = ∏ i = 1 N P ( x ( i ) ; θ ) P(X ; \theta) = \prod_{i=1}^N P(x^{(i)} ; \theta) P(X;θ)=i=1∏N​P(x(i);θ) 我们在处理连乘过程中是非常消耗运算资源的,我们给 P ( X ; θ ) P(X; \theta) P(X;θ)添加一层 log ⁡ \log log函数,重新观察运算过程: log ⁡ P ( X ; θ ) = log ⁡ ∏ i = 1 N P ( x ( i ) ; θ ) = ∑ i = 1 N log ⁡ P ( x ( i ) ; θ ) \begin{aligned} \log P(X; \theta) & = \log \prod_{i=1}^N P(x^{(i)} ; \theta) \\ & = \sum_{i=1}^N \log P(x^{(i)} ; \theta) \end{aligned} logP(X;θ)​=logi=1∏N​P(x(i);θ)=i=1∑N​logP(x(i);θ)​ 我们发现, log ⁡ \log log函数将极大似然估计中的乘法运算替换成加法运算,有效降低了运算资源的消耗; 个人理解:若干个概率值相乘(有多少个样本,就有多少个概率结果),它的结果都会无限趋近于零,最终可能会达到计算机能够判定的临界值 -> 这给计算机的计算和判定带来负担,并存在判定错误的隐患。 我们同样发现,新结果中的 P ( x ( i ) ; θ ) P(x^{(i)}; \theta) P(x(i);θ)套了一层 log ⁡ \log log函数,这个 log ⁡ \log log是否对极大似然估计结果产生影响呢? log ⁡ \log log函数图像如下图所示: 请添加图片描述 我们发现:

  • log ⁡ \log log函数属于单调递增函数,因此 log ⁡ P ( x ( i ) ; θ ) \log P(x^{(i)} ; \theta) logP(x(i);θ)中 log ⁡ \log log函数的添加对极大似然估计结果的单调性没有影响。
  • 由于 P ( x ( i ) ; θ ) P(x^{(i)} ; \theta) P(x(i);θ)是概率结果,其值域为 [ 0 , 1 ] [0,1] [0,1],而 log ⁡ \log log映射后的结果值域为 ( − ∞ , 0 ] (-\infty,0] (−∞,0],其映射区间明显增大。
  • 相比于 ∏ i = 1 N P ( x ( i ) ; θ ) \prod_{i=1}^N P(x^{(i)} ; \theta) ∏i=1N​P(x(i);θ), ∑ i = 1 N log ⁡ P ( x ( i ) ; θ ) \sum_{i=1}^N \log P(x^{(i)} ; \theta) ∑i=1N​logP(x(i);θ)结果存在上界(最大值) → ≤ 0 \to \leq 0 →≤0 恒成立。
贝叶斯学派角度看待机器学习问题

相比于频率学派,贝叶斯学派的观点是: P ( x ∣ θ ) P(x \mid \theta) P(x∣θ)中的 参数 θ \theta θ不是一个固定结果,而是和 P ( x ∣ θ ) P(x \mid \theta) P(x∣θ)一样,都是随机变量,且服从某一概率分布。 数学符号表达为: θ ∼ p ( θ ) \theta \sim p(\theta) θ∼p(θ) 通常情况下,称 p ( θ ) p(\theta) p(θ)为 先验分布(Prior Distributions)。 使用贝叶斯定理,将先验分布、后验分布(Posterior Distributions)、似然(Likelihood)联系起来。 观察 贝叶斯定理: P ( θ ∣ X ) = P ( X ∣ θ ) ⋅ P ( θ ) P ( X ) P(\theta \mid X) = \frac{P(X \mid \theta) \cdot P(\theta)}{P(X)} P(θ∣X)=P(X)P(X∣θ)⋅P(θ)​ 其中:

  • P ( θ ∣ X ) P(\theta \mid X) P(θ∣X)是后验分布,是基于对样本 X X X采样之后得到的分布;
  • P ( θ ) P(\theta) P(θ)是先验分布,即对样本 X X X进行 采样之前,通过观察,人们也会对 θ \theta θ有一些认识。
  • P ( X ∣ θ ) P(X \mid \theta) P(X∣θ)是似然,以基于参数 θ \theta θ的概率分布 P ( X ∣ θ ) P(X \mid \theta) P(X∣θ)生成样本 X X X。
  • 分母部分称为配分函数(Partition function),它本质上是一个边缘概率(如果是离散型随机变量,使用 ∑ \sum ∑进行表达): P ( X ) = { ∫ θ P ( X ∣ θ ) P ( θ ) d θ ∑ θ P ( X ∣ θ ) P ( θ ) \begin{aligned} P(X) = \left\{ \begin{array}{ll} \int_{\theta} P(X\mid \theta)P(\theta)d\theta\quad \\ \quad \\ \sum_{\theta} P(X\mid \theta)P(\theta) \end{array} \right. \end{aligned} P(X)=⎩ ⎨ ⎧​∫θ​P(X∣θ)P(θ)dθ∑θ​P(X∣θ)P(θ)​​
最大后验概率估计

贝叶斯学派对于参数 θ \theta θ分布的常用估计方法:最大后验概率(Maximum A Posteriori)估计 其本意即找到一个后验概率 P ( θ ∣ X ) P(\theta \mid X) P(θ∣X)最优结果所对应参数 θ \theta θ的分布作为最优估计。 θ M A P = arg ⁡ max ⁡ θ P ( θ ∣ X ) = arg ⁡ max ⁡ θ P ( X ∣ θ ) ⋅ P ( θ ) P ( X ) \begin{aligned} \theta_{MAP} & = \mathop{\arg\max}\limits_{\theta} P(\theta \mid X) \\ & = \mathop{\arg\max}\limits_{\theta} \frac{P(X \mid \theta) \cdot P(\theta)}{P(X)} \end{aligned} θMAP​​=θargmax​P(θ∣X)=θargmax​P(X)P(X∣θ)⋅P(θ)​​ 观察上式的分母 P ( X ) P(X) P(X):其本质上就是一个关于 X X X的 边缘概率,而 θ \theta θ是一个积分常量。因此 P ( X ) P(X) P(X)和 θ \theta θ无关。(该部分可参考动态规划求解强化学习任务——策略评估[解析解]中的条件概率密度积分) ∫ θ P ( X ∣ θ ) P ( θ ) d θ = ∫ θ P ( X , θ ) d θ = P ( X ) \int_{\theta} P(X\mid \theta)P(\theta)d\theta = \int _{\theta}P(X,\theta)d\theta = P(X) ∫θ​P(X∣θ)P(θ)dθ=∫θ​P(X,θ)dθ=P(X) 因此,上式可以等价为: θ M A P ∝ arg ⁡ max ⁡ θ P ( X ∣ θ ) ⋅ P ( θ ) \theta_{MAP} \propto \mathop{\arg\max}\limits_{\theta} P(X \mid \theta) \cdot P(\theta) θMAP​∝θargmax​P(X∣θ)⋅P(θ)

贝叶斯估计及其弊端

实际上,最大后验概率估计并 不是 标准的贝叶斯学派对于参数 θ \theta θ的估计方法,贝叶斯学派方法本质上就是要求 P ( θ ∣ X ) P(\theta \mid X) P(θ∣X)这个分布本身——贝叶斯估计(Bayesian Estimation) P ( θ ∣ X ) = P ( X ∣ θ ) ⋅ P ( θ ) ∫ P ( X ∣ θ ) P ( θ ) d θ P(\theta \mid X) = \frac{P(X \mid \theta) \cdot P(\theta)}{\int P(X\mid \theta)P(\theta)d\theta} P(θ∣X)=∫P(X∣θ)P(θ)dθP(X∣θ)⋅P(θ)​

贝叶斯估计自身存在弊端,其核心问题在于:要将 P ( X ) P(X) P(X)强行求解。 回顾该式: P ( X ) = ∫ θ P ( X ∣ θ ) P ( θ ) d θ P(X) = \int_{\theta} P(X\mid \theta)P(\theta)d\theta P(X)=∫θ​P(X∣θ)P(θ)dθ 由于 θ \theta θ是一个分布,该分布是存在维度的。如果是在低维状态下,积分可以较容易地计算出来,但是如果 θ \theta θ维度较高,这个积分将变得 异常复杂。从而使对后验分布 P ( θ ∣ X ) P(\theta \mid X) P(θ∣X)进行精确计算是几乎无法实现的。因此,可以采用一些近似计算来获取后验分布。

常见的近似求解方法:

  • 确定性近似 → \to → 变分推断(Variational Inference,VI);
  • 随机性近似 → \to → 马尔可夫链蒙特卡洛方法(Markov Chain Monte Carlo,MCMC)
实例了解极大似然估计和最大后验概率的区别

回顾最大后验概率估计公式: θ M A P ∝ arg ⁡ max ⁡ θ P ( X ∣ θ ) ⋅ P ( θ ) \theta_{MAP} \propto \mathop{\arg\max}\limits_{\theta} P(X \mid \theta) \cdot P(\theta) θMAP​∝θargmax​P(X∣θ)⋅P(θ) 和极大似然估计一样,将 log ⁡ \log log添加到上式中: θ M A P ∝ arg ⁡ max ⁡ θ log ⁡ P ( X ∣ θ ) ⋅ P ( θ ) ∝ arg ⁡ max ⁡ θ log ⁡ P ( X ∣ θ ) + log ⁡ P ( θ ) \begin{aligned} \theta_{MAP} & \propto \mathop{\arg\max}\limits_{\theta} \log P(X \mid \theta) \cdot P(\theta) \\ & \propto \mathop{\arg\max}\limits_{\theta}\log P(X \mid \theta) + \log P(\theta) \end{aligned} θMAP​​∝θargmax​logP(X∣θ)⋅P(θ)∝θargmax​logP(X∣θ)+logP(θ)​ 和极大似然估计相比,最大后验概率估计多了一项 log ⁡ P ( θ ) \log P(\theta) logP(θ); θ M L E = arg ⁡ max ⁡ θ log ⁡ P ( X ∣ θ ) \theta_{MLE} = \mathop{\arg\max}\limits_{\theta} \log P(X \mid \theta) θMLE​=θargmax​logP(X∣θ) 因此,最大后验概率估计不仅要让 log ⁡ P ( X ∣ θ ) \log P(X \mid \theta) logP(X∣θ)达到最大,而且还要让 log ⁡ P ( θ ) \log P(\theta) logP(θ)也要达到最大。从而出现 最大后验估计能够影响参数的值朝着先验分布偏移。

使用投掷硬币试验进行说明: 取一个质地均匀的硬币,投掷10次,投掷结果如下:

正面朝上反面朝上次数73

设:投掷硬币正面朝上的概率为 p p p,则反面朝上的概率为 ( 1 − p ) (1-p) (1−p)。当前试验使用极大似然估计计算结果: P ( X ∣ θ ) = ( p ) 7 × ( 1 − p ) 3 P(X \mid \theta) = (p)^7 \times (1-p)^3 P(X∣θ)=(p)7×(1−p)3 对上述结果进行 log ⁡ \log log操作: ln ⁡ [ P ( X ∣ θ ) ] = ln ⁡ [ ( p ) 7 × ( 1 − p ) 3 ] = 7 ln ⁡ ( p ) + 3 ln ⁡ ( 1 − p ) \begin{aligned} \ln \left[P(X \mid \theta)\right] & = \ln \left[(p)^7 \times (1-p)^3 \right] \\ & = 7\ln(p) + 3\ln(1-p) \end{aligned} ln[P(X∣θ)]​=ln[(p)7×(1−p)3]=7ln(p)+3ln(1−p)​ 目的是求解 ln ⁡ [ P ( X ∣ θ ) ] \ln \left[ P(X \mid \theta) \right] ln[P(X∣θ)]的最大值,对上式进行求导操作: ∂ ln ⁡ [ P ( X ∣ θ ) ] ∂ P ( X ∣ θ ) = 0 → 7 p + 3 1 − p = 0 → p = 0.7 \begin{aligned} & \frac{\partial \ln \left[P(X \mid \theta)\right]}{\partial P(X \mid \theta)} = 0 \\ & \to \frac{7}{p} + \frac{3}{1 - p} = 0 \\ & \to p = 0.7 \end{aligned} ​∂P(X∣θ)∂ln[P(X∣θ)]​=0→p7​+1−p3​=0→p=0.7​

在实际运算中同样可以验证这个信息: 代码如下:

def f(x):
    return (x ** 7) * ((1 - x) ** 3)
    
if __name__ == '__main__':
    x = np.linspace(0,1,100)
    y = [f(i) for i in x]
    plt.plot(x,y)
    plt.plot([0.7 for _ in y])
    plt.show()

返回结果如下。我们发现,确实在0.7的位置取到最值: 请添加图片描述

至此,使用极大似然估计方法计算得到 投掷硬币正面朝上的概率为0.7。 如果试验之前已经知道该该硬币是质地均匀的: P ( H e a d ) = P ( T a i l ) = 0.5 P(Head) = P(Tail) = 0.5 P(Head)=P(Tail)=0.5 由于最大后验概率估计中 θ \theta θ是一个分布而不是具体结果,因此假设 p ( θ ) p(\theta) p(θ)是一个均值为0.5,方差为0.1的高斯分布,即: P ( θ ) = 1 2 π σ exp ⁡ { − ( x − μ ) 2 2 σ 2 } = 1 0.1 × 2 π exp ⁡ { − ( p − 0.5 ) 2 0.02 } \begin{aligned} P(\theta) & = \frac{1}{\sqrt{2\pi}\sigma}\exp \left\{-\frac{(x - \mu)^2}{2\sigma^2}\right\} \\ & = \frac{1}{0.1 \times\sqrt{2\pi}} \exp \left\{-\frac{(p - 0.5)^2}{0.02}\right\} \end{aligned} P(θ)​=2π ​σ1​exp{−2σ2(x−μ)2​}=0.1×2π ​1​exp{−0.02(p−0.5)2​}​

根据最大后验概率估计,计算函数的最值: ln ⁡ ( P ( x ∣ θ ) P ( θ ) ) = ln ⁡ ( P ( x ∣ θ ) ) + ln ⁡ ( P ( θ ) ) = ln ⁡ ( ( p ) 7 × ( 1 − p ) 3 ) + ln ⁡ [ 1 0.1 × 2 π exp ⁡ { − ( p − 0.5 ) 2 0.02 } ] \begin{aligned} \ln(P(x\mid \theta)P(\theta)) & = \ln(P(x\mid \theta)) + \ln(P(\theta))\\ & = \ln((p)^7 \times (1-p)^3) + \ln \left[\frac{1}{0.1 \times\sqrt{2\pi}} \exp \left\{-\frac{(p - 0.5)^2}{0.02} \right\} \right] \end{aligned} ln(P(x∣θ)P(θ))​=ln(P(x∣θ))+ln(P(θ))=ln((p)7×(1−p)3)+ln[0.1×2π ​1​exp{−0.02(p−0.5)2​}]​ 对该结果求导,可以得到如下式子: 3 1 − p + 7 p − 100 × ( p − 1 2 ) \frac{3}{1 - p} + \frac{7}{p} - 100 \times (p - \frac{1}{2}) 1−p3​+p7​−100×(p−21​) 对该求导结果求解零点,我们这里使用代码实现(解一元三次方程费眼睛~)

def diver_opera(x):
    return (3 / (x - 1)) + (7 / x) - (100 * (x - 0.5))

if __name__ == '__main__':
    x = np.linspace(0,1,500)
    dy = [diver_opera(i) for i in x]
    plt.plot(x,dy)
    plt.plot(x,[0 for i in x])
    plt.show()

请添加图片描述 我们发现,零点位置横坐标约为 p = 0.558 p=0.558 p=0.558。即 通过最大后验概率估计投掷硬币正面朝上的概率为0.558。直接求解 P ( X ∣ θ ) P ( θ ) P(X \mid \theta)P(\theta) P(X∣θ)P(θ)同样能够看到该结果。代码如下:

import math
def norm(x):
    return (1 / (0.01 * math.sqrt(2 * math.pi))) * math.exp(-1 * (((x - 0.5) ** 2) / 0.02))

def f(x):
    return (x ** 7) * ((1 - x) ** 3) * norm(x)

if __name__ == '__main__':
    x = np.linspace(0,1,500)
    y_ = [f(i) for i in x]
    plt.plot(x,y_)
    plt.plot([0.558 for i in y_],y_)
    plt.show()

图像结果如下: 请添加图片描述 但是随着试验次数的增加,极大似然估计的计算结果会越来越准确,而先验知识能够影响的部分也越来越小。 基于上述例子,若改成投掷1000次硬币,正面朝上和反面朝上结果分布如下:

正面朝上反面朝上次数700300

在不修改先验分布 P ( θ ) P(\theta) P(θ)的前提下,依然使用极大似然估计和最大后验概率估计对 θ \theta θ进行求解: 代码如下:

import math

def norm(x):
    return (1 / (0.01 * math.sqrt(2 * math.pi))) * math.exp(-1 * (((x - 0.5) ** 2) / 0.02))
def mle(x):
    return (x ** 700) * ((1 - x) ** 300)
def map_operation(x):
    return (x ** 700) * ((1 - x) ** 300) * norm(x)

if __name__ == '__main__':
    x = np.linspace(0,1,500)
    y_mle = [mle(i) for i in x]
    y_map = [map_operation(i) for i in x]
    plt.plot(x,y_map)
    plt.plot(x,y_mle)
    plt.show()

图像结果如下(橙色线是 M L E MLE MLE结果,蓝色线是 M A P MAP MAP结果,它们最大值对应的横坐标相差不大( M A P MAP MAP结果要更小一点点)): 请添加图片描述 我们发现,最大后验概率估计貌似不起作用了,即随着重复试验次数的增加,先验知识的影响在减小。 可能这个硬币确实是个质地不均匀的硬币~ θ M L E = 0.7 , θ M A P = 0.695 \theta_{MLE} = 0.7,\theta_{MAP}=0.695 θMLE​=0.7,θMAP​=0.695

总结: 相比于极大似然估计的操作,最大后验概率估计相当于在极大似然估计的基础上,乘以一个关于参数 θ \theta θ的先验认识 P ( θ ) P(\theta) P(θ),而 P ( θ ) P(\theta) P(θ)的作用就是 影响参数结果朝着 P ( θ ) P(\theta) P(θ)方向偏移( 0.7 ⟶ 0.5 0.558 0.7 \stackrel{0.5}{\longrightarrow} 0.558 0.7⟶0.5​0.558),但随着重复试验次数的增多,先验分布的影响力在逐渐减小,但先验分布仍然是 很有必要的。

下一节将介绍高斯分布。

相关参考: 机器学习-白板推导系列(一)-开篇 最大似然估计,最大后验估计以及贝叶斯估计的理解整理

关注
打赏
1664446683
查看更多评论
立即登录/注册

微信扫码登录

0.0439s