先验概率 后验概率 似然 极大似然估计 极大后验估计 共轭 概念

最近在看LDA,里面涉及到 狄利克雷的概念,为了把这个事情搞明白,查了一些相关概率知识,

举个例子,掷硬币,伯努利实验 中随机变量x={正面,背面},正面的概率μ为模型参数,假定做了N次试验,Data 中观察序列为X={正面,正面。。。。反面},正面的次数为k,服从二项分布: p(X|μ)pk(1P)(Nk)
P(X|μ) 则成为似然函数
针对观察到的随机变量(也就是Data)X,以及模型参数μ:
P(X|μ)为μ的似然函数,描述的是该观察集合以多大的概率由μ产生
P(μ)为μ的先验概率,这个概率是经验的总结,和实验无关
P(μ|α)为μ的先验概率,依赖于模型参数α,刻画了在α的情况下,参数(概率)μ出现的概率
P(μ|X)为μ的后验概率,描述给定数据X的情况下,模型参数=μ的概率,μ可以有很多取值。
我们现在的问题是,根据实验Data X,估计模型参数μ,很显然,我们想到极大似然估计:
P(X|μ),求解参数μ,使得观察data的概率最大,也就是说找到最有可能产生Data的模型参数。

p(X|μ)xip(xi|μ)=pk(1p)Nk

求其一阶导数,采用梯度下降法,令其导数为0,可以求出p= k/n,符合我们的期望。这就是似然函数以及极大似然估计的概念。

'现在有一个问题: 如果N的次数不够大,比如我就做了1次试验,碰巧是正面,结果就是p=1,得出正面概率为1的谬论。很显然,对抛硬币,我们有一定的先验,比如抛10次,应该有5次,或者4-6次是正面,也就是有先验概率p=0.4~0.6.

所以我们在似然函数的基础上加上先验概率,估计的会更准确,P(μ|α)表示μ的先验概率,也可以理解为抛硬币时,正面概率为μ的概率是多少,具体概率大小依赖于参数。
在PRML中提到后验概率 ~ 似然函数*先验概率,也就是
p(μ|X)p(μ|α)p(X|μ)=xip(μ|α)μk(1μ)Nk
参数估计变为MAP极大后验估计.对于二项分布,它的概率分布为  p(X|μ)pk(1p)Nk

我们不禁想,如果先验概率 p(μ|α) 和似然函数的形式一样,也是  p(μ|α)=μa(1μ)b ,那么后验概率的形式也是是这个形式: p(μ|X)μa+k(1μ)b+Nk ,看起来非常简洁,简洁就是美:)。
这就是共轭先验,不对其概念做很准确的描述,直白一点,就是先验和似然有相同的分布,从而后验也有相同的分布。

补充一句,prml所言,共轭先验,是分布的分布,概率的概率,如下:
假设我们有一个骰子,其有六面,分别为{1,2,3,4,5,6}。现在我们做了10000次投掷的实验,得到的实验结果是六面分别出现了{2000,2000,2000,2000,1000,1000}次,如果用每一面出现的次数与试验总数的比值估计这个面出现的概率,则我们得到六面出现的概率,分别为{0.2,0.2,0.2,0.2,0.1,0.1}。现在,我们还不满足,我们想要做10000次试验,每次试验中我们都投掷骰子10000次。我们想知道,出现这样的情况使得我们认为,骰子六面出现概率为{0.2,0.2,0.2,0.2,0.1,0.1}的概率是多少(说不定下次试验统计得到的概率为{0.1, 0.1, 0.2, 0.2, 0.2, 0.2}这样了)。这样我们就在思考骰子六面出现概率分布这样的分布之上的分布。而这样一个分布就是Dirichlet分布 From : http://www.xperseverance.net/blogs/2012/03/510/

二项分布的共轭先验就是beta 分布。形式是 Beta(μ|a,b)=Γ(a+b)Γ(a)Γ(b)μa1(1μ)b1
采用MAP极大后验计算后μ=(k+a )/(N + a + b),加上了平滑因子 a b,如果 a=5, b=5,k=1, N=1,对应的μ=0.45,更接近我们理解上的u=0.5
所以beta分布式二项分布的共轭先验分布

LDA中提到的 狄利克雷分布,其实就是就是 多项分布的共轭先验分布。
多项分布和二项分布类似,只是参数有多个, P(X|μ)=μn11μn22μn33....μnkk 其共轭先验分布狄利克雷分布 P(μ|α)μα111μα212μα311....μαk1k
### 极大后验估计(MAP)的代码示例 极大后验估计(Maximum A Posteriori, MAP)是一种基于贝叶斯理论的参数估计方法。相比于最大估计(MLE),MAP 考虑了先验分布的影响,从而使得估计更加稳健。下面是一个简单的 Python 实现示例: #### 使用正态分布作为函数和先验分布的例子 假设我们要估计一个随机变量 \( \mu \),其观测数据服从正态分布 \( N(\mu, \sigma^2) \),其中 \( \sigma^2 \) 已知。同时,\( \mu \) 的先验分布也假定为正态分布。 ```python import numpy as np from scipy.stats import norm def map_estimate(data, prior_mean, prior_std, known_sigma): """ 计算极大后验估计 (MAP)。 参数: data (list): 观测数据列表。 prior_mean (float): 先验均值 μ_prior。 prior_std (float): 先验标准差 σ_prior。 known_sigma (float): 已知的标准差 σ。 返回: float: MAP 估计的结果。 """ n = len(data) sample_sum = sum(data) # 后验分布中的μ_MAP计算公式 posterior_precision = n / (known_sigma ** 2) + 1 / (prior_std ** 2) posterior_mean_numerator = (sample_sum / (known_sigma ** 2)) + (prior_mean / (prior_std ** 2)) mu_map = posterior_mean_numerator / posterior_precision return mu_map # 示例数据 data = [1.5, 2.1, 1.8, 2.4, 1.9] # 观测到的数据 prior_mean = 2.0 # 先验均值 prior_std = 0.5 # 先验标准差 known_sigma = 0.3 # 已知的标准差 # 执行 MAP 估计 mu_map = map_estimate(data, prior_mean, prior_std, known_sigma) print(f"MAP 估计得到的 μ 值: {mu_map:.4f}") ``` 在这个例子中,我们通过结合观测数据和先验信息来推导出后验分布的最大值位置。具体来说,利用了正态分布的共轭性质简化了公式的推导过程[^5]。 --- #### 更复杂的案例:多元高斯分布下的 MAP 估计 对于更复杂的情况,比如涉及多个维度或者非线性关系时,可以采用数值优化的方法求解 MAP 估计。以下是一个使用 `scipy.optimize` 库进行优化的实例: ```python from scipy.optimize import minimize def log_posterior(params, data, sigma_known, prior_mu, prior_sigma): """ 定义负对数后验概率用于最大化。 参数: params (array-like): 当前要优化的参数向量。 data (list or array-like): 观察数据。 sigma_known (float): 数据噪声的标准差。 prior_mu (float): 先验分布的均值。 prior_sigma (float): 先验分布的标准差。 返回: float: 负对数后验概率。 """ mu = params[0] likelihood_term = -np.sum((data - mu)**2) / (2 * sigma_known**2) # 项 prior_term = -(mu - prior_mu)**2 / (2 * prior_sigma**2) # 先验项 return -(likelihood_term + prior_term) # 取反以便最小化目标函数 # 初始化参数并运行优化器 initial_guess = [1.0] # 初始猜测值 result = minimize( fun=log_posterior, x0=initial_guess, args=(data, known_sigma, prior_mean, prior_std), method="BFGS" ) if result.success: print(f"优化成功! MAP 估计得到的 μ 值: {result.x[0]:.4f}") else: print("优化失败:", result.message) ``` 此部分展示了如何定义负对数后验概率并通过梯度下降或其他优化技术找到最优解[^6]。 --- #### 关于 MAP 和 MLE 的对比 需要注意的是,在某些情况下,当先验分布趋于平坦(即方差趋近无穷大)时,MAP 会退化成 MLE 方法。因此,选择合适的先验分布至关重要[^7]。 ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值