用 Python 进行贝叶斯模型建模(3)

本系列:

第3节:分层模型

贝叶斯模型的一个核心优势就是简单灵活,可以实现一个分层模型。这一节将实现和比较整体合并模型和局部融合模型。

模型合并

让我们采取一种不同的方式来对我的 hangout 聊天回复时间进行建模。我的直觉告诉我回复的快慢与聊天的对象有关。我很可能回复女朋友比回复一个疏远的朋友更快。这样,我可以对每个对话独立建模,对每个对话i估计参数 μαi。

一个必须考虑的问题是,有些对话相比其他的含有的消息很少。这样,和含有大量消息的对话相比,我们对含有较少消息的对话的回复时间的估计,就具有较大的不确定度。下图表明了每个对话在样本容量上的差异。

对于每个对话i中的每条消息j,模型可以表示为:

y_{ji} \sim NegBinomial(\mu_i, \alpha_i)
\mu_i = Uniform(0, 100)
\alpha_i = Uniform(0, 100)

 

上图显示了3例对话的观测数据分布(左)和后验预测分布(右)。可以看出,不同对话的后验预测分布大不相同。这可能准确反映出对话的特点,也可能是样本容量太小造成的误差。

如果我们把后验预测分布联合起来,我们希望得到的分布和观测数据分布近似,让我们来进行后验预测检验。

是的,后验预测分布和观测数据的分布近似。但是,我关心的是数据较少的对话,对它们的估计也可能具有较大的方差。一个减小这种风险的方法是分享对话信息,但仍对每个对话单独估计 μi,我们称之为局部融合。

局部融合

就像整体合并模型,局部融合模型对每个对话i都有独自的参数估计。但是,这些参数通过融合参数联系在一起。这反映出,我的不同对话间的response_time有相似之处,就是我本性上倾向于回复快或慢。

y_{ji} \sim NegBinomial(\mu_i, \alpha_i)

接着上面的例子,估计负二项分布的参数 μ和 αi。相比于使用均匀分布作为先验分布,我使用带两个参数(μ,σ)的伽马分布,从而当能够预测 μ 和 σ 的值时,可以引入更多的先验信息到模型中。

首先,我们来看看伽马分布,下面你可以看到,它非常灵活。

局部融合模型可以表示为:

y_{ji} \sim NegBinomial(\mu_i, \alpha_i)
\mu_i = Gamma(\mu_\mu, \sigma_\mu)
\alpha_i = Gamma(\mu_\alpha, \sigma_\alpha)
\mu_\mu = Uniform(0, 60)
\sigma_\mu = Uniform(0, 50)
\mu_\alpha = Uniform(0, 10)
\sigma_\alpha = Uniform(0, 50)

代码:

对 μ 和 α 的估计有多条曲线,每个对话i对应一条。整体合并和局部融合模型的不同之处在于,局部融合模型的参数(μ和 α)拥有一个被所有对话共享的融合参数。这带来两个好处:

  1. 信息在对话间共享,所以对于含有有限样本容量的对话来说,在估计过程中从别的对话处“借”信息来减小估计的方差。
  2. 我们对每个对话单独做了估计,也对所有对话整体做了估计。

我们快速看一下后验预测分布

收缩效果:合并模型 vs 分层模型

如讨论的那样,局部融合模型中 μ 和 α 享有一个融合参数,通过对话间信息共享,它使得参数的估计收缩得更紧密,尤其是对含有少量数据的对话。

下图显示了这种收缩效果,可以看出通过融合参数,参数μ 和 α 是怎样聚集在一起。

对后验分布提问

我们开始利用贝叶斯统计最好的方面之一——后验分布。不像频率论方法,我们得到完整的后验分布而不是点估计。本质上,我们是得到许多可信的参数值,这使得我们可以按照比较自然直观的方式提问。

What are the chances I’ll respond to my friend in less than 10 seconds?

为了估计这个概率,我们可以看看 Timothy 和 Andrew 的回复时间的后验预测分布,检查有多少样本是小于 10 秒的。当我第一次听到这个方法时,我以为我理解错了,因为它太简单了。

我发现这个方法非常直观而且灵活。上图左边根据大于 10 秒或小于 10 秒把后验预测的样本分为两部分,通过计算小于 10 的样本比例来计算概率。右边的图对回复时间小于每个 0 到 60 间的值的概率进行了计算。所以,看起来,Timothy 和 Andrew 分别有 38% 和 8% 的可能性在 10 秒内得到回复。

我的朋友们两两之间比较如何呢?

打赏支持我翻译更多好文章,谢谢!

打赏译者

打赏支持我翻译更多好文章,谢谢!

任选一种支付方式

1 5 收藏 评论

关于作者:JLee

Keep Learning , Keep Coding 个人主页 · 我的文章 · 14 ·   

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部