paper2skills Playbook

共形预测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