共形预测ROI区间估计 - 小样本下的可信转化贡献量化
Skill-Conformal-ROI-Prediction · 01-因果推断
causalexperimentforecasting广告与投放WF-B 广告优化WF-G Listing内容优化
年化 ROI5-15 万/月
实现难度⭐⭐☆☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色增长负责人 / CMO · 数据分析师 · 广告优化师
适用平台Amazon · TikTok Shop · Meta Ads · DTC 独立站
什么情况下用广告预算花了,但不确定哪个渠道真的带来新客;做了大促,不知道销量增长是促销效果还是季节规律
成功是什么样的能区分「真实增量」和「自然购买」,砍掉虚假归因渠道后同等预算 ROI 提升 20-40%
业务痛点
1. 解决的问题
rDRP(robust Direct ROI Prediction)在标准 DRP (Direct ROI Prediction, AAAI 2023) 基础上,用共形预测 + MC Dropout 做 ROI 区间估计,再通过启发式校准将区间信息融回点估计。
2. 核心算法逻辑
rDRP(robust Direct ROI Prediction)在标准 DRP (Direct ROI Prediction, AAAI 2023) 基础上,用共形预测 + MC Dropout 做 ROI 区间估计,再通过启发式校准将区间信息融回点估计。
3. 业务应用场景
业务问题:桑基图显示 "Google Ads → 首页 → 搜索 → PDP → 支付" 这条路径贡献了 35% 的转化。但这是一个点估计——如果实际只有 25% 怎么办?砍掉 Google Ads 预算会不会是致命错误?需要为桑基图的每个节点/边标注置信区间。
数据要求: - 训练集:历史 2-4 周的 RCT 数据(渠道-页面路径-转化标签),用于训练 DRP 模型 - 校准集:1-2 天新鲜 RCT 数据(与当前部署期分布一致),用于共形分数校准 - 特征:用户特征(设备、国家、来源渠道)+ 页面行为序列(停留时长、点击路径)
业务价值: - 避免误砍高效渠道:区间宽度作为"不确定性预警",宽区间渠道先收集更多数据再决策 - 精准加投:区间下界仍高的渠道(如 Google Ads)才是真正可信的高 ROI 路径 - 月广告预算 30 万时,避免一次错误决策潜在损失 5-10 万
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- 当前痛点:桑基图中各渠道 ROI 是点估计,置信区间未知
- 错误决策风险:基于不可信点估计砍错渠道,潜在损失 20-30% 预算效率(6-9 万/月)
7. 代码模板
代码块数量:3 · 路径:未检测到
"""
rDRP (Robust Direct ROI Prediction) - 共形预测驱动的ROI区间估计
论文: arXiv:2407.01065 (ICDE 2024)
场景: 母婴出海桑基图可信度标注 + 小样本新市场ROI区间估计
依赖: numpy, pandas, scikit-learn, torch (可选,用MLP), scipy
"""
import numpy as np
import pandas as pd
from sklearn.neural_network import MLPRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from scipy.optimize import brentq
import warnings
warnings.filterwarnings('ignore')
# ==================== DRP 点估计模型(简化版) ====================
class DRPModel:
"""
Direct ROI Prediction 模型(简化版,使用 sklearn MLP 模拟)
核心:凸损失函数保证损失收敛时 ROI 排序无偏
注:生产环境建议用 PyTorch 实现带 Dropout 的深度网络
"""
def __init__(self, hidden_layers=(64, 32), random_state=42):
self.scaler = StandardScaler()
self.model = MLPRegressor(
hidden_layer_sizes=hidden_layers,
activation='relu',
max_iter=500,
random_state=random_state,
early_stopping=True,
validation_fraction=0.1
)
self.is_fitted = False
def fit(self, X, roi_labels):
"""
训练 DRP 模型
Args:
X: 特征矩阵 (n_samples, n_features)
roi_labels: ROI 标签 (n_samples,),来自 RCT 数据
roi = (y_revenue_treated - y_revenue_control) /
(y_cost_treated - y_cost_control)
"""
X_scaled = self.scaler.fit_transform(X)
self.model.fit(X_scaled, roi_labels)
self.is_fitted = True
return self
def predict(self, X):
"""点估计:预测 ROI 分数"""
if not self.is_fitted:
raise ValueError("模型未训练,请先调用 fit()")
X_scaled = self.scaler.transform(X)
8. 论文来源
- 2407.01065