项目背景
为提升首页流量分发效率与个性化推荐转化能力,某电商平台对 App 首页进行结构性改版,新增「猜你喜欢」瀑布流模块,通过算法实时捕捉用户兴趣,实现"千人千面"的商品曝光。
受限于服务端渲染能力与推荐算法算力,本次改版采用城市级灰度发布策略:杭州、成都作为实验组开启新版首页,南京、西安作为对照组维持旧版首页不变。
由于灰度城市与对照城市在用户画像、消费习惯及活跃度上存在天然差异,且同期存在季节性波动与运营活动干扰,简单对比无法识别瀑布流模块的真实贡献。
因此,本项目基于双重差分法(DID),在满足平行趋势假设的前提下,剥离城市固定效应与时间趋势,系统评估「猜你喜欢」瀑布流对用户浏览行为、转化效率及交易成交的净因果效应,为后续全量上线、推荐策略调优及首页流量分配机制优化提供量化决策依据。
分析目标
| 目标 | 指标示例 | 业务含义 |
|---|---|---|
| 验证瀑布流对流量分发效率的影响 | 首页 PV / UV、人均浏览时长、浏览深度 | 是否提升用户注意力 |
| 评估推荐算法对互动行为的提升 | 瀑布流曝光 UV、CTR、人均浏览商品数 | 推荐相关性是否有效 |
| 量化对转化漏斗的拉动作用 | 加购率、下单转化率 | 流量是否更有效变现 |
| 测算对成交规模与结构的影响 | 客单价(AOV)、GMV、人均 GMV | 商业价值是否提升 |
城市级灰度的概念:
| 维度 | 说明 |
|---|---|
| 分组单位 | 城市(或城市群),不是单个用户 |
| 实验组 | 杭州、成都 → 首页是新版(有「猜你喜欢」) |
| 对照组 | 南京、西安 → 首页仍是旧版(无「猜你喜欢」) |
| 判定逻辑 | App 后端 / 前端根据 user.city_id决定渲染哪个首页模板 |
| 上线时间 | 同一天对所有杭州、成都用户生效(有明确 treatment date) |
为什么要用城市级灰度,而不是随机分流ABTest?
|------------------------------------|---------------------------------------------------------------------------------|
| 采用城市级灰度的原因 | 详细说明 |
| 避免同一城市部分人看新版、部分看旧版带来的舆情混淆 | 用户发现身边人的首页不一样,可能会找客服投诉。一个城市统一版本,用户只会觉得:"不同城市的首页本来就可能不一样",而不会觉得:"平台针对我一个人搞差别对待"。 |
| 新版首页依赖本地缓存 / CDN / 推荐模型,按城市批量切流更简单 | 如果新版首页崩了:按城市灰度 → 只回滚一个城市配置,按用户随机 → 要紧急改实验流量,风险不可控。 |
| 想观察 物流 / 品类 / 地域偏好 不同是否会放大或削弱效果 | 不同城市,用户行为完全不同,如果直接全国上线,可能看不到这些差异。如果指标上涨并不知道:是因为高线城市拉起来的? |
| 避免推荐系统冷启动压力集中在全国 | 只给 2~3 个城市 流量:推荐日志可控,模型可以逐步学习,算法同学有时间调参。 |
实验设计
实验组(Treatment):杭州、成都(灰度开启城市)
对照组(Control):南京、西安(未开启,保持旧版首页)
上线时间:2026-03-15
分析窗口:
事前:2026-02-15 ~ 2026-03-14(4 周)
事后:2026-03-15 ~ 2026-04-14(4 周)
**核心目标:**量化瀑布流对用户体验与成交的净影响,排除大盘自然波动。
**评估指标:**CTR(点击率)、人均停留时长(秒)、GMV per user(人均成交金额)
关键假设
平行趋势:上线前,灰度城市与非灰度城市的指标变化趋势一致
无同时干扰:同期无其他针对灰度城市的专项活动
SQL取数
sql
with
user_event as (
select
dt,
user_id,
city_name,
sum(case when event_id='home' then 1 else 0 end) as home_pv,
sum(case when event_id='guess_you_like' then 1 else 0 end) as gyl_click
from ods_user_event
where dt between '2026-02-15' and '2026-04-14'
and event_id in ('home','guess_you_like')
group by dt,user_id,city_name
)
,
user_duration as (
select
dt,
user_id,
city_name,
sum(duration_sec) as duration_sec
from dws_session_summary
where dt between '2026-02-15' and '2026-04-14'
group by dt,user_id,city_name
)
,
user_gmv as (
select
dt,
user_id,
city_name,
sum(pay_amount) as gmv
from dwd_order_info
where dt between '2026-02-15' and '2026-04-14'
and order_status=1
group by dt,user_id,city_name
)
,
user_feature as (
select
case when d.city_name in ('杭州','成都') then '实验组' else '对照组' end as is_treat,
case when d.dt>='2026-03-15' then '后' else '前' end as post,
d.dt,
user_id,
city_name,
duration_sec,
gmv,
home_pv,
gyl_click
from user_duration d
left join user_gmv g on d.dt=g.dt and d.user_id=g.user_id and d.city_name=g.city_name
left join user_event e on d.dt=e.dt and d.user_id=e.user_id and d.city_name=e.city_name
where city_name in ('杭州','成都','南京','西安')
)
select
is_treat,
post,
avg(home_pv) as avg_home_pv,
avg(gyl_click) as avg_gyl_click,
avg(duration_sec) as avg_duration,
avg(gmv) as avg_gmv
from user_feature
提取出的数据:
| 组别 | 时期 | 人均停留 | GMV/人 | CTR |
|---|---|---|---|---|
| 实验组 | 前 | 155 | 48.2 | 0.062 |
| 实验组 | 后 | 173.6 | 49.8 | 0.071 |
| 对照组 | 前 | 152 | 47.5 | 0.061 |
| 对照组 | 后 | 154 | 47.7 | 0.062 |
结果计算
DID = (试点后−试点前)−(对照后−对照前)
Excel计算公式:
| 单元格 | A | B | C | D | E |
|---|---|---|---|---|---|
| 1 | 指标 | 实验Δ | 对照Δ | DID | 提升% |
| 2 | 停留时长 | B2 = Sheet1!C3 - Sheet1!C2 173.6-155=16.6 | C2 = Sheet1!C5 - Sheet1!C4 154-152=2.0 | D2 = B2 - C2 18.6-2.0=16.6 | E2 = D2 / Sheet1!C2 16.6/155 =10.7% |
| 3 | GMV/人 | 49.8-48.2=1.6 | 47.7-47.5=0.2 | 1.4 | 1.4/48.2=2.9% |
| 4 | CTR | 0.071-0.062=0.009 | 0.062-0.061=0.001 | 0.008 | 0.008/0.062=12.9% |
计算结果:
| 指标 | 实验Δ | 对照Δ | DID | 提升% | 业务含义 |
|---|---|---|---|---|---|
| 停留时长 | +18.6 | +2.0 | +16.6秒 | +10.7% | 用户更愿意浏览 |
| GMV/人 | +1.6 | +0.2 | +1.4元 | +2.9% | 带动成交 |
| CTR | +0.009 | +0.001 | +0.008 | +12.9% | 推荐的模块吸引力强 |
业务解释:
"猜你喜欢"瀑布流显著提升了首页流量利用效率
用户停留时长提升 12%,GMV 提升 3.4%
增量主要来自 长尾商品曝光 与 个性化推荐点击