Learning
VOL. VI · NO. 26 · Mathematics · 01 JAN 1970

层次模型:用数据分层处理不同群体

数学 · 01 JAN 1970 · 9 min read · 2,149 words
· · ·

产品经理的数学课 · 第26讲

层次模型:用数据分层处理不同群体

不同用户群体的行为可能不同。层次模型让你同时分析所有群体的数据,同时允许群体之间的差异——这就是「部分池化」的智慧。


前言

你的产品有 3 个渠道:自然搜索、付费广告、社交媒体。

每个渠道的转化率不同:

  • 自然搜索:8%
  • 付费广告:12%
  • 社交媒体:6%

问题:如何准确估计每个渠道的转化率?

如果数据量相同:直接用每个渠道的数据计算。

如果数据量差异大(自然搜索 10,000 次,社交媒体 100 次):

  • 自然搜索:8%(置信区间 7.5%-8.5%,很窄)
  • 社交媒体:6%(置信区间 2%-14%,很宽)

层次模型:用所有渠道的数据「借力」,让数据少的渠道估计更准确。


核心概念

完全不池化 vs 完全池化

完全不池化(No Pooling):每个渠道独立估计

  • 优点:每个渠道有自己的参数
  • 缺点:数据少的渠道估计不准确

完全池化(Complete Pooling):所有渠道用同一个参数

  • 优点:数据多,估计稳定
  • 缺点:忽略渠道之间的差异

部分池化(Partial Pooling)

层次模型:介于不池化和完全池化之间

  • 每个渠道有自己的参数
  • 但这些参数来自同一个分布(超先验)
  • 数据少的渠道会「收缩」向总体均值

数学表示: $$ \theta_j \sim N(\mu, \tau^2) \text{(超先验)} $$ $$ y_j \sim \text{Binomial}(n_j, \theta_j) \text{(似然)} $$

其中:

  • θⱼ 是第 j 个渠道的转化率
  • μ 是总体均值
  • τ² 是渠道间方差

贝叶斯分层模型

三层结构

  1. 数据层:yⱼ ~ Binomial(nⱼ, θⱼ)
  2. 参数层:θⱼ ~ N(μ, τ²)
  3. 超参数层:μ ~ N(0, 10²), τ ~ Half-Normal(0, 5)

MCMC 采样:同时估计 θⱼ、μ、τ。

收缩效应(Shrinkage)

数据少的渠道:向总体均值收缩

  • 社交媒体(100 次):6% → 收缩到约 8%
  • 置信区间变窄

数据多的渠道:几乎不收缩

  • 自然搜索(10,000 次):8% → 保持 8%
  • 置信区间不变

预测新数据

层次模型可以预测新渠道的转化率

  1. 从超先验中采样 μ 和 τ
  2. 生成新渠道的 θ*
  3. 计算预测分布

行动:即使没有数据,也能预测新渠道的表现。


产品经理的应用

应用场景一:多渠道转化率估计

你的产品有 5 个渠道,数据量差异大:

渠道访问量转化量转化率
自然搜索10,0008008.0%
付费广告5,00060012.0%
社交媒体10066.0%
邮件营销5005010.0%
直接访问2,0001809.0%

层次模型结果

渠道原始转化率层次模型估计收缩量
自然搜索8.0%8.1%+0.1%
付费广告12.0%11.8%-0.2%
社交媒体6.0%8.5%+2.5%
邮件营销10.0%9.8%-0.2%
直接访问9.0%9.1%+0.1%

行动:社交媒体的真实转化率可能不是 6%,而是约 8.5%。

应用场景二:用户分群的转化率

你的产品有 3 个用户群体:新用户、活跃用户、沉默用户。

层次模型:估计每个群体的转化率,同时考虑群体间的相似性。

输出

  • 新用户转化率:5%(置信区间 4%-6%)
  • 活跃用户转化率:15%(置信区间 14%-16%)
  • 沉默用户转化率:3%(置信区间 2%-5%)

行动:针对不同群体设计不同的转化策略。

应用场景三:跨地区销售预测

你的产品在 10 个城市销售,数据量差异大。

层次模型

  • 估计每个城市的销售弹性
  • 用大城市的数据「借力」小城市
  • 预测新城市的销售

输出

  • 北京(数据多):价格弹性 -1.2(置信区间 -1.3 到 -1.1)
  • 拉萨(数据少):价格弹性 -1.0(收缩到 -1.2 附近)

行动:即使拉萨数据少,也能基于总体趋势给出合理估计。


常见误区

误区一:层次模型总是比简单模型好

「用层次模型总比不用好」

数据量大且群体差异大时:层次模型可能过度收缩,掩盖真实差异。

数据量小时:层次模型很有帮助(借力)。

需要检查收缩效应:τ² 太小意味着群体差异小,可能不需要分层。

误区二:层次结构总是三层

「层次模型必须是三层的」

层次可以更多层

  • 用户 → 渠道 → 地区 → 国家
  • 每层都有自己的参数和超参数

但层数越多,模型越复杂,需要更多数据和计算。

误区三:忽略先验的影响

「层次模型自动处理了先验」

超先验的选择会影响结果

  • τ 的先验太宽:群体差异可能被高估
  • τ 的先验太窄:群体差异可能被低估

需要敏感性分析

误区四:层次模型解释困难

「层次模型太复杂,无法解释」

层次模型的输出仍然是每个群体的参数

  • 每个渠道的转化率
  • 每个用户群体的流失率

解释起来和简单模型一样直观


PM/BA 应用

场景层次模型工具决策价值
多渠道分析部分池化准确估计转化率
用户分群分层贝叶斯识别群体差异
跨地区预测借力估计预测新市场
产品版本对比多版本模型评估版本差异
时间序列动态层次模型捕捉趋势变化

课后测验

题目 1

什么是层次模型的「部分池化」?

A. 所有群体用同一个参数
B. 每个群体独立估计参数
C. 数据少的群体向总体均值收缩
D. 忽略群体间的差异

查看答案与解析

答案:C(数据少的群体向总体均值收缩)

部分池化 = 层次模型的核心:

  • 不池化:每个群体独立(数据少时不准确)
  • 完全池化:所有群体用同一个(忽略差异)
  • 部分池化:数据少的群体「借力」数据多的群体(平衡)

收缩量取决于:

  • 数据量(数据越少,收缩越多)
  • 群体间方差(方差越小,收缩越多)

题目 2

你的层次模型显示渠道间方差 τ² 很小(接近 0)。这意味着什么?

A. 层次模型无效
B. 渠道之间差异很小,可能不需要分层
C. 数据量太少
D. 先验选择错误

查看答案与解析

答案:B(渠道之间差异很小,可能不需要分层)

τ² 表示群体间的方差:

  • τ² 大:群体差异大,需要分层
  • τ² 小:群体差异小,可能不需要分层

行动

  • 如果 τ² 接近 0,可以考虑简化模型(完全池化)
  • 但即使 τ² 小,层次模型仍然有效(只是收缩量小)

题目 3

你的社交媒体渠道只有 100 次访问,6 次转化(6%)。层次模型估计为 8.5%。以下哪种解释最准确?

A. 层次模型是错的
B. 层次模型用其他渠道的数据「借力」,让估计更准确
C. 社交媒体的真实转化率就是 8.5%
D. 需要更多数据才能信任层次模型

查看答案与解析

答案:B(层次模型用其他渠道的数据「借力」,让估计更准确)

为什么从 6% 调整到 8.5%?

  • 社交媒体只有 100 次访问,估计不准确(置信区间 2%-14%)
  • 其他渠道的平均转化率约 9%
  • 层次模型让社交媒体的估计向总体均值「收缩」

结果:更准确的估计(8.5% 比 6% 更接近真实值)。

行动:不要只看原始数据,要用层次模型「借力」。


本课要点

  1. 不池化:每个群体独立估计(数据少时不准确)
  2. 完全池化:所有群体用同一个(忽略差异)
  3. 部分池化:数据少的群体向总体均值收缩(平衡)
  4. 收缩效应:数据越少,收缩越多
  5. 层次模型:同时估计群体参数和总体参数

延伸阅读

  • Gelman & Hill, 《Data Analysis Using Regression and Multilevel/Hierarchical Models》 — 层次模型教材
  • Kruschke, 《Doing Bayesian Data Analysis》 — 贝叶斯数据分析入门
  • McElreath, 《Statistical Rethinking》 — 贝叶斯统计的现代方法

下一步

下一课:时间序列分析:从历史数据预测未来 — 用时间序列模型预测用户行为和业务指标。


工具提示:用 PyMC 实现简单的层次模型——从 Beta-Binomial 层次模型开始,理解部分池化的工作原理。