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

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

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

目录

数据与概率模型

机器学习领域的一个关键概念——事件发生的不确定性概率论 为这种不确定性的量化和操纵提供了框架,成为机器学习核心基础之一。
基于现实世界中所发生现象的任何实际模型,必须要考虑到 随机性 的可能。也就是说,我们所关注的信息可能是事先不可预料的。但是,经过大量重复试验,这种现象往往存在某种 规律性
因此,表述该现象的模型实质上是概率性 → \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) xP(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) xP(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=θargmaxP(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=θargmaxlogP(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) xiidP(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=1NP(xi;θ)
我们在处理连乘过程中是非常消耗运算资源的,我们给 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=1NP(xi;θ)=i=1NlogP(xi;θ)
我们发现, log ⁡ \log log函数将极大似然估计中的乘法运算替换成加法运算,有效降低了运算资源的消耗
个人理解:若干个概率值相乘(有多少个样本,就有多少个概率结果),它的结果都会无限趋近于零,最终可能会达到计算机能够判定的临界值 -> 这给计算机的计算和判定带来负担,并存在判定错误的隐患。
我们同样发现,新结果中的 P ( x i ∣ θ ) P(x_i \mid \theta) P(xiθ)套了一层 log ⁡ \log log函数,这个 log ⁡ \log log是否对极大似然估计结果产生影响呢?
log ⁡ \log log函数图像如下图所示:
机器学习笔记——极大似然估计与最大后验概率估计_第1张图片
我们发现:

  • log ⁡ \log log函数属于单调递增函数,因此 log ⁡ P ( x i ; θ ) \log P(x_i ; \theta) logP(xi;θ) log ⁡ \log log函数的添加对极大似然估计结果的单调性没有影响。
  • 由于 P ( x i ; θ ) P(x_i ; \theta) P(xi;θ)是概率结果,其值域为 [ 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=1NP(xi;θ) ∑ i = 1 N log ⁡ P ( x i ; θ ) \sum_{i=1}^N \log P(x_i ; \theta) i=1NlogP(xi;θ)结果存在上界(最大值) → ≤ 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 \\ \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=θargmaxP(θX)=θargmaxP(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θargmaxP(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θargmaxP(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θargmaxlogP(Xθ)P(θ)θargmaxlogP(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=θargmaxlogP(Xθ)
因此,最大后验概率估计不仅要让 log ⁡ P ( X ∣ θ ) \log P(X \mid \theta) logP(Xθ)达到最大,而且还要让 log ⁡ P ( θ ) \log P(\theta) logP(θ)也要达到最大。从而出现 最大后验估计能够影响参数的值朝着先验分布偏移

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

正面朝上 反面朝上
次数 7 3

设:投掷硬币正面朝上的概率为 p p p,则反面朝上的概率为 ( 1 − p ) (1-p) (1p)。当前试验使用极大似然估计计算结果:
P ( X ∣ θ ) = ( p ) 7 × ( 1 − p ) 3 P(X \mid \theta) = (p)^7 \times (1-p)^3 P(Xθ)=(p)7×(1p)3
对上述结果进行 log ⁡ \log log操作
ln ⁡ ( P ( X ∣ θ ) ) = ln ⁡ ( ( p ) 7 × ( 1 − p ) 3 ) = 7 ln ⁡ ( p ) + 3 ln ⁡ ( 1 − p ) \begin{aligned} \ln(P(X \mid \theta)) & = \ln((p)^7 \times (1-p)^3) \\ & = 7\ln(p) + 3\ln(1-p) \end{aligned} ln(P(Xθ))=ln((p)7×(1p)3)=7ln(p)+3ln(1p)
目的是求解 ln ⁡ ( P ( X ∣ θ ) ) \ln(P(X \mid \theta)) ln(P(Xθ))的最大值,对上式进行求导操作
ln ⁡ ′ ( P ( X ∣ θ ) ) = 0 → 7 p + 3 p − 1 = 0 → p = 0.7 \begin{aligned} \ln'(P(X \mid \theta)) = 0 \\ \to \frac{7}{p} + \frac{3}{p-1} =0 \\ \to p = 0.7 \end{aligned} ln(P(Xθ))=0p7+p13=0p=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的位置取到最值
机器学习笔记——极大似然估计与最大后验概率估计_第2张图片

至此,使用极大似然估计方法计算得到 投掷硬币正面朝上的概率为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 π σ e − ( x − μ ) 2 2 σ 2 = 1 0.1 × 2 π e − ( p − 0.5 ) 2 0.02 \begin{aligned} P(\theta) & = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x - \mu)^2}{2\sigma^2}} \\ & = \frac{1}{0.1 \times\sqrt{2\pi}} e^{-\frac{(p - 0.5)^2}{0.02}} \end{aligned} P(θ)=2π σ1e2σ2(xμ)2=0.1×2π 1e0.02(p0.5)2

根据最大后验概率估计,计算函数的最值
ln ⁡ ( P ( x ∣ θ ) P ( θ ) ) = ln ⁡ ( P ( x ∣ θ ) ) + ln ⁡ ( P ( θ ) ) = ln ⁡ ( ( p ) 7 × ( 1 − p ) 3 ) + ln ⁡ ( 1 0.1 × 2 π e − ( 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(\frac{1}{0.1 \times\sqrt{2\pi}} e^{-\frac{(p - 0.5)^2}{0.02}}) \end{aligned} ln(P(xθ)P(θ))=ln(P(xθ))+ln(P(θ))=ln((p)7×(1p)3)+ln(0.1×2π 1e0.02(p0.5)2)
对该结果求导,可以得到如下式子:
3 p − 1 + 7 p − 100 × ( p − 1 2 ) \frac{3}{p-1} + \frac{7}{p} - 100 \times (p - \frac{1}{2}) p13+p7100×(p21)
对该求导结果求解零点,我们这里使用代码实现(解一元三次方程费眼睛~)

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()

机器学习笔记——极大似然估计与最大后验概率估计_第3张图片
我们发现,零点位置横坐标约为 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()

图像结果如下:
机器学习笔记——极大似然估计与最大后验概率估计_第4张图片
但是随着试验次数的增加,极大似然估计的计算结果会越来越准确,而先验知识能够影响的部分也越来越小
基于上述例子,若改成投掷1000次硬币,正面朝上和反面朝上结果分布如下

正面朝上 反面朝上
次数 700 300

不修改先验分布 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结果要更小一点点)):
机器学习笔记——极大似然估计与最大后验概率估计_第5张图片
我们发现,最大后验概率估计貌似不起作用了,即随着重复试验次数的增加,先验知识的影响在减小。
可能这个硬币确实是个质地不均匀的硬币~
θ 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.70.50.558),但随着重复试验次数的增多,先验分布的影响力在逐渐减小,但先验分布仍然是 很有必要的

下一节将介绍高斯分布。

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

你可能感兴趣的:(机器学习,机器学习,人工智能,概率论,python)