在某些情况下,我实际上对贝叶斯推理的完整后验并不感兴趣,而只是对最大似然(或适当选择先验的最大后验)感兴趣,并且可能是 Hessian。 PyMC3 具有执行此操作的函数,但 find_MAP 似乎根据模型参数的先验分布以转换形式返回模型参数。有没有一种简单的方法可以从中获取未转换的值? find_hessian
的输出对我来说更不清楚,但它很可能也在转换后的空间中。
最佳答案
可能更简单的解决方案是传递参数 transform=None
,以避免 PyMC3 进行转换然后使用 find_MAP
我给你举了一个简单模型的例子。
data = np.repeat((0, 1), (3, 6))
with pm.Model() as normal_aproximation:
p = pm.Uniform('p', 0, 1, transform=None)
w = pm.Binomial('w', n=len(data), p=p, observed=data.sum())
mean_q = pm.find_MAP()
std_q = ((1/pm.find_hessian(mean_q))**0.5)[0]
print(mean_q['p'], std_q)
您是否考虑过使用ADVI ?
关于python - 使用 PyMC3 计算最大似然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703849/