区块链技术博客
www.b2bchain.cn

【模型算法】S07E02 贝叶斯统计推断:最大后验求职学习资料

本文介绍了【模型算法】S07E02 贝叶斯统计推断:最大后验求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。

1.回顾贝叶斯定理

首先,我们先来复习一下贝叶斯定理:

$p(Theta|X)=frac{p(X|Theta)p(Theta)}{p(X)}$

在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容:

贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下:

$p(Theta)$:先验分布。 反映的是在观测到数据之前我们对待估计的参数$Theta$的了解和认识。

$p(X|Theta)$: 在确定了参数的情况下,试验数据的概率分布。实际上这就是对实际观测数据的一种描述。

$p(Theta|X)$:后验分布。 后验分布就是我们通过贝叶斯定理得到的最终的分析结果,反映的是在给定观测数据的基础上,我们对于参数的新的认知。说的更直白一点,就是最开始没有观测数据的时候,我们依据以往的经验赋予了参数一个先验分布,然后来了实际的观测数据之后,我们就对先验进行了更新,得到了这次分析过程的后验分布。

$p(X)$:边缘概率。 这是一个与我们待估计的参数$Theta$无关的一个边缘概率值:$p(X)=sum_{theta}p(X,Theta)=sum_{theta}p(X|Theta)p(Theta)$,因此我们并不用太关心这个值,仅仅把他当做是后验概率$p(Theta|X)$计算过程中的归一化系数即可。

因此我们更需要聚焦的就是如下的这个正比关系:

$p(Theta|X)propto p(X|Theta)p(Theta)$

实际上,有一个概念需要大家树立,那就是后验分布也是不断的处在动态更新过程当中的。一次试验得到的后验分布,对于后续进一步收集到的新的观测数据,他又可以看作是后续分析的一个先验。

2.贝叶斯推断与后验分布

在贝叶斯推断中,我们将待估计的量记为$Theta$,视其为一个随机变量,我们的目标就是基于观测到的样本数据值$X=(X_1,X_2,…,X_n)$来提取$Theta$的信息,我们称$X=(X_1,X_2,…,X_n)$为观测值,那么我们需要首先知道或者明确以下两方面内容:

第一个是视作随机变量$Theta$的待估计未知参数的先验分布$p_{Theta}$,如果$Theta$是连续的则相应的记作是$f_{Theta}$。

第二个是基于参数$Theta$的观测数据的分布模型,也就是条件分布$p_{X|Theta}$或者说是$f_{X|Theta}$,当然这取决于$Theta$是连续型还是离散型随机变量。

一旦确立了$X$的观测值$x$,贝叶斯推断的完整答案就由随机变量$Theta$的后验分布$p_{Theta|X}(theta|x)$或者$f_{Theta|X}(theta|x)$来描述和决定,这个后验分布的计算就是依赖贝叶斯定理来进行的。后验分布的精髓就在于他利用已经得知的观测数据,抓住了关于$Theta$的一切信息。

3.贝叶斯推断求解过程

这里我们总结一下上述的整个过程:

首先,贝叶斯推断的起点是未知随机变量$Theta$的先验分布$p_{Theta}$或者$f_{Theta}$。

然后,我们需要确定观测数据$X$的分布模型,他是一个基于随机变量$Theta$的条件概率:$p_{X|Theta}$或者$f_{X|Theta}$。

一旦我们观察到了$X$的一个特定值$x$之后,我们就可以开始运用贝叶斯法则去计算$Theta$的后验分布:

$p_{Theta|X}(theta|x)=frac{p_{Theta}(theta)p_{X|Theta}(x|theta)}{p_X(x)}=frac{p_{Theta}(theta)p_{X|Theta}(x|theta)}{sum_{theta’}p_{Theta}(theta’)p_{X|Theta}(x|theta’)}$

如果是连续型的随机变量,就把上面的概率质量函数替换成概率密度函数就可以了。

4.贝叶斯推断实际举例

感觉说来说去,还是比较理论,很多量该怎么确定可能还是不知道如何下手。那么我们通过一个抛掷硬币的例子来把贝叶斯推断的过程演练一遍:

假设我们有一个并不均匀的硬币,投掷出正面和反面的概率并不是相等的$0.5$,因此我们通过不断的进行硬币抛掷试验来估计正面的概率$theta$。

那么我们首先为$theta$选择一个先验分布,实际上,我们对他一无所知,只知道这个$theta$应该介于$[0,1]$之间,这个范围很粗犷,因此我们选择$beta$分布作为参数$theta$的先验分布。

4.1.$beta$先验分布

$beta$分布是一个连续型随机变量的分布,他的概率密度函数为:

$f(theta)=frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}$

这个先验分布我们之前很少接触,除了未知参数$theta$以外,他还有两个参数$alpha$和$beta$,用来控制整个$beta$分布的图像,并且分式$frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}$中间含有复杂的伽马函数。

其实这个分式大家不用特别关心,他可以被理解为一个正则项,保证整个概率密度函数的积分为$1$即可。

那么我们为什么要选择$beta$分布作为未知参数$theta$的先验分布呢?相信大家都有疑问,那么我们通过下面的内容讲解来慢慢揭示,首先我们来看一下$beta$分布的具体形态。

我们刚刚说过,$beta$分布概率密度函数中,参数$alpha$和参数$beta$是用来控制分布的形状的,具体指的什么,我们让参数$alpha$和参数$beta$分别依次从$[0.25, 1, 10]$中取值作为参数,这样就构成了$9$组参数对,我们来依次画出他们的分布形态。

代码片段:

import numpy as np import matplotlib.pyplot as plt from scipy.stats import beta import seaborn seaborn.set()  params = [0.25, 1, 10] x = np.linspace(0, 1, 100) f, ax = plt.subplots(len(params), len(params), sharex=True, sharey=True)  for i in range(len(params)):     for j in range(len(params)):         a = params[i]         b = params[j]         y = beta(a, b).pdf(x)         ax[i, j].plot(x, y, color='red')         ax[i, j].set_title('$\alpha$={},$\beta={}$'.format(a, b))         ax[i, j].set_ylim(0, 10)  ax[0, 0].set_xticks([0, 0.2, 0.4, 0.6, 0.8, 1]) ax[0, 0].set_yticks([0, 2.5, 5, 7.5,  10]) ax[1, 0].set_ylabel('$p(\theta)$') ax[2, 1].set_xlabel('$\theta$') plt.show()

运行结果:
【模型算法】S07E02 贝叶斯统计推断:最大后验

图1.beta分布的不同形态

参数$alpha$和$beta$的不同取值组合,我们能够得到类似于$U$型分布,正态分布,均匀分布,指数分布等等许多不同分布的形状,具有很强的通用性和适应性。

其次一点是共轭性,他能够极大的简化后验分布的计算,这一点我们接下来继续展开。

4.2.关于观测数据的分布

接下来,我们选择观测数据的分布,在抛掷硬币的过程中,确定了某一次抛掷硬币正面向上的概率$theta$之后,抛掷$n$次硬币,其中$y$次向上的概率是满足二项分布的,这个我们之前也反复讲过:

$p(y|theta)=frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

这里我们就抛掷$10$次硬币,其中令正面向上的概率分别是$0.35,0.5,0.8$,来看看观测数据所服从的分布:

代码片段:

from scipy.stats import binom import matplotlib.pyplot as plt import numpy as np import seaborn  seaborn.set()  n = 10 p_params = [0.35, 0.5, 0.8] x = np.arange(0, n + 1) f, ax = plt.subplots(len(p_params), 1)  for i in range(len(p_params)):     p = p_params[i]     y = binom(n=n, p=p).pmf(x)      ax[i].vlines(x, 0, y, colors='red', lw=10)     ax[i].set_ylim(0, 0.5)     ax[i].plot(0, 0, label='n={}n$\theta$={}'.format(n, p), alpha=0)     ax[i].legend()     ax[i].set_xlabel('y')     ax[i].set_xticks(x)  ax[1].set_ylabel('$p(y|\theta)$') plt.show()

运行结果:
【模型算法】S07E02 贝叶斯统计推断:最大后验

图2.不同参数取值下观测数据的分布

4.3.后验的计算

我们接下来就来计算后验:

$f(theta|y)propto f(theta)p(y|theta)$

$f(theta)=frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}$

$p(y|theta)=frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

因此:$f(theta|y)propto frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

而针对选定的先验,参数$alpha$和$beta$是已知的,针对一组已知的观测数据,抛掷的次数$n$和正面向上的次数$y$也是已知的,因此 $frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}$和$frac{n!}{y!(n-y)!}$都是与未知参数$theta$无关的项,他们可以被合并到归一化项当中去,因此我们可以进一步化简:

$f(theta|y)propto theta^{alpha-1}(1-theta)^{beta-1}theta^y(1-theta)^{n-y}=theta^{alpha+y-1}(1-theta)^{beta+n-y-1}$

这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。

1.回顾贝叶斯定理

首先,我们先来复习一下贝叶斯定理:

$p(Theta|X)=frac{p(X|Theta)p(Theta)}{p(X)}$

在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容:

贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下:

$p(Theta)$:先验分布。 反映的是在观测到数据之前我们对待估计的参数$Theta$的了解和认识。

$p(X|Theta)$: 在确定了参数的情况下,试验数据的概率分布。实际上这就是对实际观测数据的一种描述。

$p(Theta|X)$:后验分布。 后验分布就是我们通过贝叶斯定理得到的最终的分析结果,反映的是在给定观测数据的基础上,我们对于参数的新的认知。说的更直白一点,就是最开始没有观测数据的时候,我们依据以往的经验赋予了参数一个先验分布,然后来了实际的观测数据之后,我们就对先验进行了更新,得到了这次分析过程的后验分布。

$p(X)$:边缘概率。 这是一个与我们待估计的参数$Theta$无关的一个边缘概率值:$p(X)=sum_{theta}p(X,Theta)=sum_{theta}p(X|Theta)p(Theta)$,因此我们并不用太关心这个值,仅仅把他当做是后验概率$p(Theta|X)$计算过程中的归一化系数即可。

因此我们更需要聚焦的就是如下的这个正比关系:

$p(Theta|X)propto p(X|Theta)p(Theta)$

实际上,有一个概念需要大家树立,那就是后验分布也是不断的处在动态更新过程当中的。一次试验得到的后验分布,对于后续进一步收集到的新的观测数据,他又可以看作是后续分析的一个先验。

2.贝叶斯推断与后验分布

在贝叶斯推断中,我们将待估计的量记为$Theta$,视其为一个随机变量,我们的目标就是基于观测到的样本数据值$X=(X_1,X_2,…,X_n)$来提取$Theta$的信息,我们称$X=(X_1,X_2,…,X_n)$为观测值,那么我们需要首先知道或者明确以下两方面内容:

第一个是视作随机变量$Theta$的待估计未知参数的先验分布$p_{Theta}$,如果$Theta$是连续的则相应的记作是$f_{Theta}$。

第二个是基于参数$Theta$的观测数据的分布模型,也就是条件分布$p_{X|Theta}$或者说是$f_{X|Theta}$,当然这取决于$Theta$是连续型还是离散型随机变量。

一旦确立了$X$的观测值$x$,贝叶斯推断的完整答案就由随机变量$Theta$的后验分布$p_{Theta|X}(theta|x)$或者$f_{Theta|X}(theta|x)$来描述和决定,这个后验分布的计算就是依赖贝叶斯定理来进行的。后验分布的精髓就在于他利用已经得知的观测数据,抓住了关于$Theta$的一切信息。

3.贝叶斯推断求解过程

这里我们总结一下上述的整个过程:

首先,贝叶斯推断的起点是未知随机变量$Theta$的先验分布$p_{Theta}$或者$f_{Theta}$。

然后,我们需要确定观测数据$X$的分布模型,他是一个基于随机变量$Theta$的条件概率:$p_{X|Theta}$或者$f_{X|Theta}$。

一旦我们观察到了$X$的一个特定值$x$之后,我们就可以开始运用贝叶斯法则去计算$Theta$的后验分布:

$p_{Theta|X}(theta|x)=frac{p_{Theta}(theta)p_{X|Theta}(x|theta)}{p_X(x)}=frac{p_{Theta}(theta)p_{X|Theta}(x|theta)}{sum_{theta’}p_{Theta}(theta’)p_{X|Theta}(x|theta’)}$

如果是连续型的随机变量,就把上面的概率质量函数替换成概率密度函数就可以了。

4.贝叶斯推断实际举例

感觉说来说去,还是比较理论,很多量该怎么确定可能还是不知道如何下手。那么我们通过一个抛掷硬币的例子来把贝叶斯推断的过程演练一遍:

假设我们有一个并不均匀的硬币,投掷出正面和反面的概率并不是相等的$0.5$,因此我们通过不断的进行硬币抛掷试验来估计正面的概率$theta$。

那么我们首先为$theta$选择一个先验分布,实际上,我们对他一无所知,只知道这个$theta$应该介于$[0,1]$之间,这个范围很粗犷,因此我们选择$beta$分布作为参数$theta$的先验分布。

4.1.$beta$先验分布

$beta$分布是一个连续型随机变量的分布,他的概率密度函数为:

$f(theta)=frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}$

这个先验分布我们之前很少接触,除了未知参数$theta$以外,他还有两个参数$alpha$和$beta$,用来控制整个$beta$分布的图像,并且分式$frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}$中间含有复杂的伽马函数。

其实这个分式大家不用特别关心,他可以被理解为一个正则项,保证整个概率密度函数的积分为$1$即可。

那么我们为什么要选择$beta$分布作为未知参数$theta$的先验分布呢?相信大家都有疑问,那么我们通过下面的内容讲解来慢慢揭示,首先我们来看一下$beta$分布的具体形态。

我们刚刚说过,$beta$分布概率密度函数中,参数$alpha$和参数$beta$是用来控制分布的形状的,具体指的什么,我们让参数$alpha$和参数$beta$分别依次从$[0.25, 1, 10]$中取值作为参数,这样就构成了$9$组参数对,我们来依次画出他们的分布形态。

代码片段:

import numpy as np import matplotlib.pyplot as plt from scipy.stats import beta import seaborn seaborn.set()  params = [0.25, 1, 10] x = np.linspace(0, 1, 100) f, ax = plt.subplots(len(params), len(params), sharex=True, sharey=True)  for i in range(len(params)):     for j in range(len(params)):         a = params[i]         b = params[j]         y = beta(a, b).pdf(x)         ax[i, j].plot(x, y, color='red')         ax[i, j].set_title('$\alpha$={},$\beta={}$'.format(a, b))         ax[i, j].set_ylim(0, 10)  ax[0, 0].set_xticks([0, 0.2, 0.4, 0.6, 0.8, 1]) ax[0, 0].set_yticks([0, 2.5, 5, 7.5,  10]) ax[1, 0].set_ylabel('$p(\theta)$') ax[2, 1].set_xlabel('$\theta$') plt.show()

运行结果:
【模型算法】S07E02 贝叶斯统计推断:最大后验

图1.beta分布的不同形态

参数$alpha$和$beta$的不同取值组合,我们能够得到类似于$U$型分布,正态分布,均匀分布,指数分布等等许多不同分布的形状,具有很强的通用性和适应性。

其次一点是共轭性,他能够极大的简化后验分布的计算,这一点我们接下来继续展开。

4.2.关于观测数据的分布

接下来,我们选择观测数据的分布,在抛掷硬币的过程中,确定了某一次抛掷硬币正面向上的概率$theta$之后,抛掷$n$次硬币,其中$y$次向上的概率是满足二项分布的,这个我们之前也反复讲过:

$p(y|theta)=frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

这里我们就抛掷$10$次硬币,其中令正面向上的概率分别是$0.35,0.5,0.8$,来看看观测数据所服从的分布:

代码片段:

from scipy.stats import binom import matplotlib.pyplot as plt import numpy as np import seaborn  seaborn.set()  n = 10 p_params = [0.35, 0.5, 0.8] x = np.arange(0, n + 1) f, ax = plt.subplots(len(p_params), 1)  for i in range(len(p_params)):     p = p_params[i]     y = binom(n=n, p=p).pmf(x)      ax[i].vlines(x, 0, y, colors='red', lw=10)     ax[i].set_ylim(0, 0.5)     ax[i].plot(0, 0, label='n={}n$\theta$={}'.format(n, p), alpha=0)     ax[i].legend()     ax[i].set_xlabel('y')     ax[i].set_xticks(x)  ax[1].set_ylabel('$p(y|\theta)$') plt.show()

运行结果:
【模型算法】S07E02 贝叶斯统计推断:最大后验

图2.不同参数取值下观测数据的分布

4.3.后验的计算

我们接下来就来计算后验:

$f(theta|y)propto f(theta)p(y|theta)$

$f(theta)=frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}$

$p(y|theta)=frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

因此:$f(theta|y)propto frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

而针对选定的先验,参数$alpha$和$beta$是已知的,针对一组已知的观测数据,抛掷的次数$n$和正面向上的次数$y$也是已知的,因此 $frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}$和$frac{n!}{y!(n-y)!}$都是与未知参数$theta$无关的项,他们可以被合并到归一化项当中去,因此我们可以进一步化简:

$f(theta|y)propto theta^{alpha-1}(1-theta)^{beta-1}theta^y(1-theta)^{n-y}=theta^{alpha+y-1}(1-theta)^{beta+n-y-1}$

这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。

1.回顾贝叶斯定理

首先,我们先来复习一下贝叶斯定理:

$p(Theta|X)=frac{p(X|Theta)p(Theta)}{p(X)}$

在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容:

贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下:

$p(Theta)$:先验分布。 反映的是在观测到数据之前我们对待估计的参数$Theta$的了解和认识。

$p(X|Theta)$: 在确定了参数的情况下,试验数据的概率分布。实际上这就是对实际观测数据的一种描述。

$p(Theta|X)$:后验分布。 后验分布就是我们通过贝叶斯定理得到的最终的分析结果,反映的是在给定观测数据的基础上,我们对于参数的新的认知。说的更直白一点,就是最开始没有观测数据的时候,我们依据以往的经验赋予了参数一个先验分布,然后来了实际的观测数据之后,我们就对先验进行了更新,得到了这次分析过程的后验分布。

$p(X)$:边缘概率。 这是一个与我们待估计的参数$Theta$无关的一个边缘概率值:$p(X)=sum_{theta}p(X,Theta)=sum_{theta}p(X|Theta)p(Theta)$,因此我们并不用太关心这个值,仅仅把他当做是后验概率$p(Theta|X)$计算过程中的归一化系数即可。

因此我们更需要聚焦的就是如下的这个正比关系:

$p(Theta|X)propto p(X|Theta)p(Theta)$

实际上,有一个概念需要大家树立,那就是后验分布也是不断的处在动态更新过程当中的。一次试验得到的后验分布,对于后续进一步收集到的新的观测数据,他又可以看作是后续分析的一个先验。

2.贝叶斯推断与后验分布

在贝叶斯推断中,我们将待估计的量记为$Theta$,视其为一个随机变量,我们的目标就是基于观测到的样本数据值$X=(X_1,X_2,…,X_n)$来提取$Theta$的信息,我们称$X=(X_1,X_2,…,X_n)$为观测值,那么我们需要首先知道或者明确以下两方面内容:

第一个是视作随机变量$Theta$的待估计未知参数的先验分布$p_{Theta}$,如果$Theta$是连续的则相应的记作是$f_{Theta}$。

第二个是基于参数$Theta$的观测数据的分布模型,也就是条件分布$p_{X|Theta}$或者说是$f_{X|Theta}$,当然这取决于$Theta$是连续型还是离散型随机变量。

一旦确立了$X$的观测值$x$,贝叶斯推断的完整答案就由随机变量$Theta$的后验分布$p_{Theta|X}(theta|x)$或者$f_{Theta|X}(theta|x)$来描述和决定,这个后验分布的计算就是依赖贝叶斯定理来进行的。后验分布的精髓就在于他利用已经得知的观测数据,抓住了关于$Theta$的一切信息。

3.贝叶斯推断求解过程

这里我们总结一下上述的整个过程:

首先,贝叶斯推断的起点是未知随机变量$Theta$的先验分布$p_{Theta}$或者$f_{Theta}$。

然后,我们需要确定观测数据$X$的分布模型,他是一个基于随机变量$Theta$的条件概率:$p_{X|Theta}$或者$f_{X|Theta}$。

一旦我们观察到了$X$的一个特定值$x$之后,我们就可以开始运用贝叶斯法则去计算$Theta$的后验分布:

$p_{Theta|X}(theta|x)=frac{p_{Theta}(theta)p_{X|Theta}(x|theta)}{p_X(x)}=frac{p_{Theta}(theta)p_{X|Theta}(x|theta)}{sum_{theta’}p_{Theta}(theta’)p_{X|Theta}(x|theta’)}$

如果是连续型的随机变量,就把上面的概率质量函数替换成概率密度函数就可以了。

4.贝叶斯推断实际举例

感觉说来说去,还是比较理论,很多量该怎么确定可能还是不知道如何下手。那么我们通过一个抛掷硬币的例子来把贝叶斯推断的过程演练一遍:

假设我们有一个并不均匀的硬币,投掷出正面和反面的概率并不是相等的$0.5$,因此我们通过不断的进行硬币抛掷试验来估计正面的概率$theta$。

那么我们首先为$theta$选择一个先验分布,实际上,我们对他一无所知,只知道这个$theta$应该介于$[0,1]$之间,这个范围很粗犷,因此我们选择$beta$分布作为参数$theta$的先验分布。

4.1.$beta$先验分布

$beta$分布是一个连续型随机变量的分布,他的概率密度函数为:

$f(theta)=frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}$

这个先验分布我们之前很少接触,除了未知参数$theta$以外,他还有两个参数$alpha$和$beta$,用来控制整个$beta$分布的图像,并且分式$frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}$中间含有复杂的伽马函数。

其实这个分式大家不用特别关心,他可以被理解为一个正则项,保证整个概率密度函数的积分为$1$即可。

那么我们为什么要选择$beta$分布作为未知参数$theta$的先验分布呢?相信大家都有疑问,那么我们通过下面的内容讲解来慢慢揭示,首先我们来看一下$beta$分布的具体形态。

我们刚刚说过,$beta$分布概率密度函数中,参数$alpha$和参数$beta$是用来控制分布的形状的,具体指的什么,我们让参数$alpha$和参数$beta$分别依次从$[0.25, 1, 10]$中取值作为参数,这样就构成了$9$组参数对,我们来依次画出他们的分布形态。

代码片段:

import numpy as np import matplotlib.pyplot as plt from scipy.stats import beta import seaborn seaborn.set()  params = [0.25, 1, 10] x = np.linspace(0, 1, 100) f, ax = plt.subplots(len(params), len(params), sharex=True, sharey=True)  for i in range(len(params)):     for j in range(len(params)):         a = params[i]         b = params[j]         y = beta(a, b).pdf(x)         ax[i, j].plot(x, y, color='red')         ax[i, j].set_title('$\alpha$={},$\beta={}$'.format(a, b))         ax[i, j].set_ylim(0, 10)  ax[0, 0].set_xticks([0, 0.2, 0.4, 0.6, 0.8, 1]) ax[0, 0].set_yticks([0, 2.5, 5, 7.5,  10]) ax[1, 0].set_ylabel('$p(\theta)$') ax[2, 1].set_xlabel('$\theta$') plt.show()

运行结果:
【模型算法】S07E02 贝叶斯统计推断:最大后验

图1.beta分布的不同形态

参数$alpha$和$beta$的不同取值组合,我们能够得到类似于$U$型分布,正态分布,均匀分布,指数分布等等许多不同分布的形状,具有很强的通用性和适应性。

其次一点是共轭性,他能够极大的简化后验分布的计算,这一点我们接下来继续展开。

4.2.关于观测数据的分布

接下来,我们选择观测数据的分布,在抛掷硬币的过程中,确定了某一次抛掷硬币正面向上的概率$theta$之后,抛掷$n$次硬币,其中$y$次向上的概率是满足二项分布的,这个我们之前也反复讲过:

$p(y|theta)=frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

这里我们就抛掷$10$次硬币,其中令正面向上的概率分别是$0.35,0.5,0.8$,来看看观测数据所服从的分布:

代码片段:

from scipy.stats import binom import matplotlib.pyplot as plt import numpy as np import seaborn  seaborn.set()  n = 10 p_params = [0.35, 0.5, 0.8] x = np.arange(0, n + 1) f, ax = plt.subplots(len(p_params), 1)  for i in range(len(p_params)):     p = p_params[i]     y = binom(n=n, p=p).pmf(x)      ax[i].vlines(x, 0, y, colors='red', lw=10)     ax[i].set_ylim(0, 0.5)     ax[i].plot(0, 0, label='n={}n$\theta$={}'.format(n, p), alpha=0)     ax[i].legend()     ax[i].set_xlabel('y')     ax[i].set_xticks(x)  ax[1].set_ylabel('$p(y|\theta)$') plt.show()

运行结果:
【模型算法】S07E02 贝叶斯统计推断:最大后验

图2.不同参数取值下观测数据的分布

4.3.后验的计算

我们接下来就来计算后验:

$f(theta|y)propto f(theta)p(y|theta)$

$f(theta)=frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}$

$p(y|theta)=frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

因此:$f(theta|y)propto frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}theta^{alpha-1}(1-theta)^{beta-1}frac{n!}{y!(n-y)!}theta^y(1-theta)^{n-y}$

而针对选定的先验,参数$alpha$和$beta$是已知的,针对一组已知的观测数据,抛掷的次数$n$和正面向上的次数$y$也是已知的,因此 $frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}$和$frac{n!}{y!(n-y)!}$都是与未知参数$theta$无关的项,他们可以被合并到归一化项当中去,因此我们可以进一步化简:

$f(theta|y)propto theta^{alpha-1}(1-theta)^{beta-1}theta^y(1-theta)^{n-y}=theta^{alpha+y-1}(1-theta)^{beta+n-y-1}$

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 【模型算法】S07E02 贝叶斯统计推断:最大后验求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们