分层贝叶斯模型 (?)

机器算法验证 贝叶斯 二项分布 多层次分析
2022-03-27 08:06:39

请为我对统计术语的屠杀表示歉意:) 我在这里发现了一些与广告和点击率有关的问题。但是他们都没有对我理解我的等级状况有很大帮助。

有一个相关的问题是相同层次贝叶斯模型的这些等效表示吗?,但我不确定他们是否真的有类似的问题。分层贝叶斯二项式模型的另一个问题先验详细介绍了超先验,但我无法将他们的解决方案映射到我的问题

我有几个新产品的在线广告。我让广告运行了几天。那时,已经有足够多的人点击了广告,看看哪个广告获得了最多的点击。在踢掉除了点击次数最多的那个之外的所有内容之后,我让它再运行几天,看看有多少人在点击广告后实际购买了。那时我知道首先投放广告是否是个好主意。

我的统计数据非常嘈杂,因为我没有很多数据,因为我每天只卖几件商品。因此,很难估计有多少人在看到广告后购买了东西。每 150 次点击中只有大约 1 次会促成购买。

一般来说,我需要通过某种方式将每个广告组的统计数据与所有广告的全局统计数据进行平滑处理,从而尽快知道我是否在每个广告上都在亏损。

  • 如果我等到每个广告都看到足够多的购买量,我就会破产,因为它花费的时间太长:测试 10 个广告我需要多花 10 倍的钱,这样每个广告的统计数据才能足够可靠。到那时我可能已经赔钱了。
  • 如果我对所有广告进行平均购买,我将无法剔除那些效果不佳的广告。

我可以使用全球购买率(perclick)anduseitasapriorforN$ 子分布?这意味着我拥有的每个广告的数据越多,该广告的统计数据就越独立。如果还没有人点击广告,我认为全球平均水平是合适的。

我会为此选择哪个发行版?

如果我在 A 上点击了 20 次,在 B 上点击了 4 次,我该如何建模?到目前为止,我发现二项式或泊松分布在这里可能有意义:

  • purchase_rate ~ poisson(?)
  • (purchase_rate | group A) ~ poisson(仅估计A组的购买率?)

但是接下来我该怎么做才能实际计算purchase_rate | group A. 如何将两个发行版连接在一起以对 A 组(或任何其他组)有意义。

我必须先拟合模型吗?我有可以用来“训练”模型的数据:

  • 广告 A:352 次点击,5 次购买
  • 广告 B:15 次点击,0 次购买
  • 广告 C:3519 次点击,130 次购买

我正在寻找一种方法来估计任何一个组的概率。如果一个组只有几个数据点,我基本上想回退到全球平均水平。我对贝叶斯统计有所了解,并阅读了很多人的 PDF 文档,这些人描述了他们如何使用贝叶斯推理和共轭先验等进行建模。我认为有一种方法可以正确地做到这一点,但我无法弄清楚如何正确地建模它。

对于帮助我以贝叶斯方式提出问题的提示,我会非常高兴。这将有助于在网上找到我可以用来实际实现的示例。

更新:

非常感谢您的回复。我开始越来越了解我的问题。谢谢!让我问几个问题,看看我现在是否更好地理解了这个问题:

所以我假设转换是作为 Beta 分布分布的,而 Beta 分布有两个参数,ab.

12 12参数是超参数,所以它们是先验的参数?那么最后我将转化次数和点击次数设置为我的Beta分布的参数吗?

在某些时候我想比较不同的广告,所以我会计算P(conversion|ad=X)=P(ad=X|conversion)P(conversion)P(ad=X). 我如何计算该公式的每个部分?

  • 我认为P(ad=X|conversion)称为似然性,或 Beta 分布的“模式”。所以那是α1α+β2, 和αβ是我分布的参数。但具体αβ以下是仅针对广告的分布参数X, 对?在这种情况下,仅仅是该广告所看到的点击次数和转化次数吗?或者是所有广告都看到了多少点击/转化?

  • 然后我乘以先验,即 P(conversion),在我的情况下,这只是 Jeffreys 先验,它没有提供信息。之前的数据会不会和我获得更多数据一样?

  • 我除以P(ad),这是边际可能性,所以我计算了这个广告被点击的频率?

在使用 Jeffreys 之前,我假设我从零开始并且对我的数据一无所知。该先验被称为“非信息性”。当我继续了解我的数据时,我是否会更新先前的数据?

随着点击和转化的出现,我读到我必须“更新”我的分布。这是否意味着我的分布参数发生了变化,或者先前的变化?当我获得对广告 X 的点击时,我是否会更新多个分布?不止一个之前?

2个回答

正如您的直觉,解决您的问题的一种非常通用的方法是构建一个分层(多级)贝叶斯模型。该模型由三个部分组成,如下图所示。

模型

广告转化率的分层贝叶斯模型

  1. 在总体级别,我们对广告总体中的转化概率进行建模,您的特定测试广告集是从其中抽样的。正如 Neil 之前指出的那样,可以修复总体参数并将它们用作第二级的先验。或者,我们可以先验人口参数本身,这提供了额外的优势,我们现在可以根据数据表达我们对人口参数的不确定性。让我们按照这条路线并放置一个先验N(μμ0,η0)关于人口平均数μGa(λa0,b0)关于总体精度(即逆方差)。可以使用以下方法获得扩散先验μ0=0,η0=0.1,a0=1,b0=1,这确保我们的后验推论将由数据主导。

  2. 在单个广告级别,我们可以对转化概率进行建模πj给定广告的j作为 logit 正态分布。因此,对于每个广告j, logit 转换概率ρj:=logit(πj)被建模为N(ρjμ,λ).

  3. 最后,在观察数据的层面上,我们对转化次数进行建模kj对于广告j作为Bin(kjσ(ρj),nj), 在哪里σ(ρj)使用 sigmoid 变换将 logit 率转换回概率,其中nj是广告的点击次数j.

数据

例如,让我们以您在原始问题中发布的数据为例,

广告 A:352 次点击,5 次购买

广告 B:15 次点击,0 次购买

广告 C:3519 次点击,130 次购买

我们翻译成:n1=352,k1=5,n2=15,k2=0,

推理

反转这个模型意味着获得我们模型参数的后验分布。在这里,我使用变分贝叶斯方法进行模型反演,它在计算上比 MCMC 等随机采样方案更有效。我在下面绘制了结果。

数据和结果后验

该图显示了三个面板。(a) 您提供的示例数据的简单可视化。灰色条表示点击次数,黑色条表示转化次数。(b) 总体平均转化率的后验分布。随着我们观察到更多的数据,这将变得越来越精确。(c) 广告特定后验转化率的中心 95% 后验概率区间(或可信区间)。

最后一个面板说明了贝叶斯分层建模方法的两个关键特征。首先,后验的精度反映了基础数据点的数量。比如我们对于广告C有比较多的数据点;因此,它的后验比其他广告的后验要精确得多。

其次,特定于广告的推论是由关于人口的知识提供的。换句话说,特定于广告的后验基于整个组的数据,这种效应被称为人口收缩例如,广告 A 的后验模式(黑色圆圈)远高于其经验转化率(蓝色)。这是因为所有其他广告都具有更高的后验模式,因此我们可以通过通过组均值告知我们的广告特定估计来获得更好的地面实况估计。我们拥有的关于特定广告的数据越少,它的后验受其他广告数据的影响就越大。

您在原始问题中描述的所有想法都在上述模型中自然实现,说明了完全贝叶斯设置的实用性。

你需要估计一个概率p给定每个广告点击的“转化”(购买)。(听起来您假设每次点击的转化概率相同,这是合理的。)

这样做的贝叶斯方法是估计一个分布p, 这是 Beta 并且具有形状参数a等于转换次数加上a, 和b等于未带来转化的点击次数加上b.

ab代表你的先验。采用(12,12)对于杰弗里斯的先验。为了“回落”到全球平均水平,有多种设置方式a,b根据所有的数据。

得到估计p使用参数超出您的估算器a,b,您可以选择最大似然值,即 Beta 分布的模式。


回答您的编辑:

转换不是 Beta 分布的,而是概率分布的 Bernoullip. 请比较我的设置方式ab在第 2 段中,您写的是什么。请注意,您有一个p对于每个广告,因此相信p对于每个广告,每个信念都有自己的ab.

贝叶斯更新是

P(px)P(p)P(xp)

在哪里x是观察(转换或不转换)和p为适当的广告选择。此公式已用于更新ab, 这样可以在发生转换的情况下将 1 添加到a, 否则你加 1b——这是更新信念p.

Jeffreys 的先验与无信息的先验不同,但我相信除非你有充分的理由使用它,否则它会更好。如果您想就此展开讨论,请随时提出另一个问题。