【图解例说机器学习】参数估计 (MLE and MAP)

2024-01-23 18:40

本文主要是介绍【图解例说机器学习】参数估计 (MLE and MAP),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参数估计:给定一个数据集,我们希望用一个给定的分布去拟合该数据集的分布,确定该分布的参数的过程就是参数估计。例如,我们用二项分布去拟合多次投掷硬币的情况,计算该二项分布的最优参数(出现正面的概率 θ \theta θ)就是参数估计。

下面,我们介绍在机器学习中常用的参数估计:极大似然估计 (Maximum Likelihood Estimation, MLE),最大后验概率估计 (Maximum A Posteriori, MAP)。在此之前,我们介绍一下参数估计中常用的一些概念.


  • 频率学派 VS. 贝叶斯学派

    • 频率学派:事件本身是服从某种参数 θ \theta θ固定的分布。频率学派认为概率即是频率,某次得到的样本 x \mathrm x x只是无数次可能的试验结果的一个具体实现,样本中未出现的结果不是不可能出现,只是这次抽样没有出现而已。在参数估计中,频率学派的代表是最大似然估计 MLE。
    • 贝叶斯学派:参数 θ \theta θ也是随机分布的。贝叶斯学派认为只能依靠得到的样本 x \mathrm x x去做推断,而不能考虑那些有可能出现而未出现的结果。同时,贝叶斯学派引入了主观的概念,认为一个事件在发生之前,人们应该对它是有所认知,即先验概率 p ( θ ) p(\theta) p(θ),然后根据样本 x \mathrm x x 通过贝叶斯定理来得到后验概率 p ( θ ∣ x ) p(\theta\mid\mathrm x) p(θx)。在参数估计中,贝叶斯学派的代表是最大后验概率估计 MAP。

  • 概率 VS. 统计

    概率与统计可以看成是互逆的概念。在http://stanford.edu/~lanhuong/refresher/notes/probstat-section3.pdf中对概念与统计推断作了简要概述:

    • The basic problem of probability is: Given the distribution of the data, what are the properties (e.g. its expectation) of the outcomes (i.e. the data)?

    • The basic problem of statistical inference is the inverse of probability: Given the outcomes, what can we say about the process that generated the data?

    对于在机器学习中的常见问题,这里的data就是我们的训练样例,且机器学习的目的就是 say about the process that generated the data, 即学习生成训练样例的模型。


  • 似然函数 VS. 概率函数
    似然函数和概率函数的数学表达式一样,只是以不同的角度看待该函数表达式:

    • θ \theta θ已知, x \mathrm x x是变量, P ( x ∣ θ ) P(\mathrm x\mid\theta) P(xθ) 被称为概率函数;
    • x \mathrm x x已知, θ \theta θ是变量, P ( x ∣ θ ) P(\mathrm x\mid\theta) P(xθ) 被称为似然函数;

​ 一般为了保持符号的一致性,似然函数也经常写作 L ( θ ∣ x ) L(\theta\mid\mathrm x) L(θx)


极大似然估计 (MLE)

最大似然估计MLE的思想是,寻找使得观测到的数据出现概率最大的参数 θ \theta θ

对于抛硬币来说,在一次抛硬币时,其结果的概率分布如下:
P ( x i ∣ θ ) = { θ , x i = 1 1 − θ , x i = 0 = θ x i ( 1 − θ ) 1 − x i (1) \begin{aligned} P(\mathrm x_i\mid\theta)&=\begin{cases} \theta,\quad\quad\hspace{4mm}\mathrm x_i=1\\ 1-\theta,\quad\mathrm x_i=0 \end{cases}\\ &=\theta^{\mathrm x_i}(1-\theta)^{1-\mathrm x_i} \end{aligned}\tag{1} P(xiθ)={θ,xi=11θ,xi=0=θxi(1θ)1xi(1)
其中 x i = 1 \mathrm x_i=1 xi=1表示第 i i i抛硬币时正面朝上。那么抛 N N N次硬币,其结果为 { x 1 , x 2 , ⋯ , x N } \{\mathrm x_1,\mathrm x_2,\cdots,\mathrm x_N\} {x1,x2,,xN}的概率为
P ( x 1 , x 2 , ⋯ , x N ∣ θ ) = ∏ i = 1 N θ x i ( 1 − θ ) 1 − x i (2) P(\mathrm x_1,\mathrm x_2,\cdots,\mathrm x_N\mid\theta)=\prod\limits_{i=1}^{N}\theta^{\mathrm x_i}(1-\theta)^{1-\mathrm x_i}\tag{2} P(x1,x2,,xNθ)=i=1Nθxi(1θ)1xi(2)
MLE就是寻找最优的 θ \theta θ最大化公式(2)的概率,即求解
θ ⋆ = arg ⁡ max ⁡ θ ∏ i = 1 N θ x i ( 1 − θ ) 1 − x i (3) \theta^\star=\arg\max_{\theta}\prod\limits_{i=1}^{N}\theta^{\mathrm x_i}(1-\theta)^{1-\mathrm x_i}\tag{3} θ=argθmaxi=1Nθxi(1θ)1xi(3)
对于优化问题(3),我们一般考虑将其转为对数目标函数,一方面可以将连乘转化为加和,防止计算溢出;另一方面使得目标函数更加精炼,便于通过求导求解最优解(连乘的导数不易计算)。为此,优化问题(3)可以转化为:
θ ⋆ = arg ⁡ max ⁡ θ ∑ i = 1 N log ⁡ θ x i ( 1 − θ ) 1 − x i = arg ⁡ max ⁡ θ ∑ i = 1 N x i log ⁡ θ + ( 1 − x i ) log ⁡ ( 1 − θ ) (4) \theta^\star=\arg\max_{\theta}\sum\limits_{i=1}^{N}\log{\theta^{\mathrm x_i}(1-\theta)^{1-\mathrm x_i}}=\arg\max_{\theta}\sum\limits_{i=1}^{N}\mathrm x_i\log{\theta}+(1-\mathrm x_i)\log{(1-\theta)}\tag{4} θ=argθmaxi=1Nlogθxi(1θ)1xi=argθmaxi=1Nxilogθ+(1xi)log(1θ)(4)
对(4)的目标函数对 θ \theta θ求导,并令导数为0 (目标函数为凹函数,在导数为0点取得极值),我们有:
∑ i = 1 N x i 1 θ + ( 1 − x i ) − 1 1 − θ = 0 → θ = ∑ i = 1 N x i ∑ i = 1 N 1 (5) \sum\limits_{i=1}^{N}\mathrm x_i\frac{1}{\theta}+(1-\mathrm x_i)\frac{-1}{1-\theta}=0\rightarrow\theta=\frac{\sum\nolimits_{i=1}^{N}\mathrm x_i}{\sum\nolimits_{i=1}^{N}1}\tag{5} i=1Nxiθ1+(1xi)1θ1=0θ=i=1N1i=1Nxi(5)
公式(5)的结果比较符合直观:比如抛硬币10次,发现5次正面朝上,我们就说出现正面朝上的概率为0.5. 但是,也可能出现7次正面朝上的情况,这时我们说出现正面朝上的概率为0.7,显然这时与实际情况不符合(假定硬币是均匀的)。也就是说,当试验次数较少时,使用最大似然函数时的误差会较大。


上式(1)-(5)详细推导了离散的二项分布的最大似然估计(5)。对于常用的连续分布正态分布 N ( μ , σ 2 ) \mathcal N(\mu,\sigma^2) N(μ,σ2),我们只需要将公式(2)中的连乘项改为正态分布的概率密度函数,然后通过对数、求导为零,可以得到其最大似然估计为:
μ = 1 N ∑ i = 1 N x i (6) \mu=\frac{1}{N}\sum\limits_{i=1}^{N}x_i\tag{6} μ=N1i=1Nxi(6)

σ 2 = 1 N ∑ i = 1 N ( x i − μ ) 2 (7) \sigma^2=\frac{1}{N}\sum\limits_{i=1}^{N}(x_i-\mu)^2\tag{7} σ2=N1i=1N(xiμ)2(7)

其中,我们这里假设总共有 N N N个样本, x 1 , x 2 , ⋯ , x N x_1,x_2,\cdots,x_N x1,x2,,xN


最大后验概率估计 (MAP)

在最大后验概率MAP中,参数 θ \theta θ被看作为一个随机变量,服从某种概率分布,被称为先验概率 P ( θ ) P(\theta) P(θ)

还是以上述抛硬币为例,考虑到先验概率,优化问题(3)被改写为:
θ ⋆ = arg ⁡ max ⁡ θ ∏ i = 1 N θ x i ( 1 − θ ) 1 − x i p ( θ ) (8) \theta^\star=\arg\max_{\theta}\prod\limits_{i=1}^{N}\theta^{\mathrm x_i}(1-\theta)^{1-\mathrm x_i}p(\theta)\tag{8} θ=argθmaxi=1Nθxi(1θ)1xip(θ)(8)
同样地,将公式(8)进行对数化可得:
θ ⋆ = arg ⁡ max ⁡ θ ∑ i = 1 N log ⁡ θ x i ( 1 − θ ) 1 − x i p ( θ ) = arg ⁡ max ⁡ θ ∑ i = 1 N x i log ⁡ θ + ( 1 − x i ) log ⁡ ( 1 − θ ) + log ⁡ p ( θ ) (9) \begin{aligned} \theta^\star&=\arg\max_{\theta}\sum\limits_{i=1}^{N}\log{\theta^{\mathrm x_i}(1-\theta)^{1-\mathrm x_i}}p(\theta)\\&=\arg\max_{\theta}\sum\limits_{i=1}^{N}\mathrm x_i\log{\theta}+(1-\mathrm x_i)\log{(1-\theta)}+\log p(\theta)\tag{9} \end{aligned} θ=argθmaxi=1Nlogθxi(1θ)1xip(θ)=argθmaxi=1Nxilogθ+(1xi)log(1θ)+logp(θ)(9)
一般地,我们假设硬币是均匀地,即 p ( θ = 1 2 ) = 1 p(\theta=\frac{1}{2})=1 p(θ=21)=1,即此时参数 θ \theta θ时一个固定的未知量。此时,对(8)的目标函数对 θ \theta θ求导,并令导数为0,我们可以得到和公式(5)一样的结果。这说明,当先验分布为均匀分布时,MLE等价于MAP。但是,在最大后验概率中,我们可以假设 θ \theta θ是服从某一概率分布的。这里我们假设 θ ∼ N ( μ , σ ) \theta\sim N(\mu,\sigma) θN(μ,σ),即
p ( θ ) = 1 2 π σ e − ( θ − μ ) 2 2 σ 2 (10) p(\theta)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\theta-\mu)^2}{2\sigma^2}}\tag{10} p(θ)=2π σ1e2σ2(θμ)2(10)
将公式(10)带入公式(9)可得:
θ ⋆ = arg ⁡ max ⁡ θ ∑ i = 1 N x i log ⁡ θ + ( 1 − x i ) log ⁡ ( 1 − θ ) + log ⁡ 1 2 π σ − ( θ − μ ) 2 2 σ 2 (11) \theta^\star=\arg\max_{\theta}\sum\limits_{i=1}^{N}\mathrm x_i\log{\theta}+(1-\mathrm x_i)\log{(1-\theta)}+\log{\frac{1}{\sqrt{2\pi}\sigma}}-\frac{(\theta-\mu)^2}{2\sigma^2}\tag{11} θ=argθmaxi=1Nxilogθ+(1xi)log(1θ)+log2π σ12σ2(θμ)2(11)
注意:由于正态分布的概率密度函数(10)是关于 θ \theta θ 的凹函数,公式(4)也是凹函数,所以公式(11)中的目标函数也是凹函数,所以我们可以利用导数为0取得最优的参数值 θ ⋆ \theta^\star θ。但是此时,我们一般无法得到如公式(5)一样简洁的解析表达式。在下面的具体实例中,我们直接给出目标函数的图像,从而可以形象地直接确定其最优解。对于比较复杂的目标函数,我们就需要借助其他迭代算法来求解了。

对于一个具体实例 ( μ = 0.5 , σ = 0.1 \mu=0.5,\sigma=0.1 μ=0.5,σ=0.1,事件 x \mathrm x x为10次试验有7次为正面朝上),此时问题(8)中的目标函数为:
P ( θ ∣ x ) = P ( x ∣ θ ) P ( θ ) = θ 7 ( 1 − θ ) 3 10 2 π e − 50 ( θ − 0.5 ) 2 (10) P(\theta\mid\mathrm x)=P(\mathrm x\mid\theta)P(\theta)=\theta^7(1-\theta)^3\frac{10}{\sqrt{2\pi}}e^{-50(\theta-0.5)^2}\tag{10} P(θx)=P(xθ)P(θ)=θ7(1θ)32π 10e50(θ0.5)2(10)
我们可以画出其函数曲线如下:

图1

从图1中可以看出,当我们采用不同的先验概率分布时 ( μ = 0.5 , μ = 0.8 \mu=0.5,\mu=0.8 μ=0.5,μ=0.8),最终得到的参数也不同 ( θ ⋆ = 0.56 , θ ⋆ = 0.76 \theta^\star=0.56,\theta^\star=0.76 θ=0.56,θ=0.76)。在这里,我们假设硬币是均匀的,即正面朝上的概率为 θ = 0.5 \theta=0.5 θ=0.5,此时与MLE相比 ( θ = 0.7 \theta=0.7 θ=0.7),MAP的性能时好时坏,也就是说,MAP的性能与先验概率分布的选取有关。


等效情况

如前面所提及的,当先验概率为均匀分布时,MLE和MAP等效,因为此时 θ \theta θ服从均匀分布,没有提供有效的关于 θ \theta θ的先验信息。MLE和MAP等效的另一种情况就是:在频率学派所代表的MLE,当观测数据变大时(例子中对应抛硬币次数),这时观测数据的本身就提供了足够的信息,先验概率的影响变得微不足道,此时MLE和MAP等效,即最终估计的参数值 θ ⋆ \theta^\star θ相同。如下图2和3,表示了当100次抛硬币70次为正面,和1000次抛硬币700次为正面时,对应的似然函数和后验概率函数:

图2
图3

附录

下面给出图1-3的python源代码,由于代码简单,所以就没有注释

图1:

# -*- encoding: utf-8 -*-
"""
@File    : Parameter_Estimation_fig001.py
@Time    : 2020/5/31 14:46
@Author  : tengweitw
@Email   : tengweitw@foxmail.com
"""import numpy as np
import matplotlib.pyplot as plt# Set the format of labels
def LabelFormat(plt):ax = plt.gca()plt.tick_params(labelsize=14)labels = ax.get_xticklabels() + ax.get_yticklabels()[label.set_fontname('Times New Roman') for label in labels]font = {'family': 'Times New Roman','weight': 'normal','size': 16,}return fontsigma=0.1
mu1=0.5
mu2=0.8theta=np.linspace(0,1,1000)
p_theta_x1=theta**7*(1-theta)**3/(np.sqrt(2*np.pi)*sigma)*np.exp(-np.square(theta-mu1)/2/np.square(sigma))
p_theta_x2=theta**7*(1-theta)**3/(np.sqrt(2*np.pi)*sigma)*np.exp(-np.square(theta-mu2)/2/np.square(sigma))p_theta_x0=theta**7*(1-theta)**3/(np.sqrt(2*np.pi)*sigma)p_max_ind0=np.argmax(p_theta_x0)
print(theta[p_max_ind0])p_max_ind1=np.argmax(p_theta_x1)
print(theta[p_max_ind1])p_max_ind2=np.argmax(p_theta_x2)
print(theta[p_max_ind2])plt.figure()
plt.plot(theta,p_theta_x0,'r-')
plt.plot(theta,p_theta_x1,'g-')
plt.plot(theta,p_theta_x2,'b-')plt.plot([theta[p_max_ind0],theta[p_max_ind0]],[0,p_theta_x0[p_max_ind0]],'r--')
plt.plot([theta[p_max_ind1],theta[p_max_ind1]],[0,p_theta_x1[p_max_ind1]],'g--')
plt.plot([theta[p_max_ind2],theta[p_max_ind2]],[0,p_theta_x2[p_max_ind2]],'b--')plt.legend(["MLE",r"MAP, $\mu=0.5$",r"MAP, $\mu=0.8$"])font = LabelFormat(plt)
plt.xlabel(r'$\theta$', font)
plt.ylabel(r'$P(\theta\mid\mathrm{x})$', font)
plt.xlim(0,1)
plt.ylim(0,0.01)
plt.show()

图2-3的源代码:

# -*- encoding: utf-8 -*-
"""
@File    : Parameter_Estimation_fig002.py
@Time    : 2020/5/31 16:01
@Author  : tengweitw
@Email   : tengweitw@foxmail.com
"""import numpy as np
import matplotlib.pyplot as plt# Set the format of labels
def LabelFormat(plt):ax = plt.gca()plt.tick_params(labelsize=14)labels = ax.get_xticklabels() + ax.get_yticklabels()[label.set_fontname('Times New Roman') for label in labels]font = {'family': 'Times New Roman','weight': 'normal','size': 16,}return fontsigma=0.1
mu1=0.5
mu2=0.8theta=np.linspace(0,1,1000)
# Here to change 700 300 to 70 30 vice verse
p_theta_x1=theta**70*(1-theta)**30/(np.sqrt(2*np.pi)*sigma)*np.exp(-np.square(theta-mu1)/2/np.square(sigma))
p_theta_x2=theta**70*(1-theta)**30/(np.sqrt(2*np.pi)*sigma)*np.exp(-np.square(theta-mu2)/2/np.square(sigma))
p_theta_x0=theta**70*(1-theta)**30/(np.sqrt(2*np.pi)*sigma)p_max_ind0=np.argmax(p_theta_x0)
print(theta[p_max_ind0])p_max_ind1=np.argmax(p_theta_x1)
print(theta[p_max_ind1])p_max_ind2=np.argmax(p_theta_x2)
print(theta[p_max_ind2])plt.figure()
plt.plot(theta,p_theta_x0,'r-')
plt.plot(theta,p_theta_x1,'g-')
plt.plot(theta,p_theta_x2,'b-')plt.plot([theta[p_max_ind0],theta[p_max_ind0]],[0,p_theta_x0[p_max_ind0]],'r--')
plt.plot([theta[p_max_ind1],theta[p_max_ind1]],[0,p_theta_x1[p_max_ind1]],'g--')
plt.plot([theta[p_max_ind2],theta[p_max_ind2]],[0,p_theta_x2[p_max_ind2]],'b--')plt.legend(["MLE",r"MAP, $\mu=0.5$",r"MAP, $\mu=0.8$"])font = LabelFormat(plt)
plt.xlabel(r'$\theta$', font)
plt.ylabel(r'$P(\theta\mid\mathrm{x})$', font)
plt.xlim(0,1)
plt.ylim(ymin=0)
plt.show()

这篇关于【图解例说机器学习】参数估计 (MLE and MAP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/637174

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件