paper2skills Playbook

级联延迟净转化建模 - 扣除退款的真实转化桑基图

Skill-TESLA-NetCVR-Cascade · 13-广告分析

causalexperimentforecastingoptimizationrecommendationpricing广告与投放推荐与搜索定价与利润风控与合规WF-B 广告优化WF-D 选品扫描WF-F 动态定价
年化 ROI100 万
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色广告优化师 / 投放负责人 · CMO · 运营负责人
适用平台Amazon PPC(SP/SB/SD)· TikTok Ads · Meta 广告 · 多平台归因
什么情况下用广告账户几十个系列,不知道哪个在真正赚钱;ROAS 看起来好看但实际利润没有提升;预算有限想集中打高价值用户
成功是什么样的每分广告预算有明确 ROI 追踪,砍掉低效渠道后同等预算 ROAS 提升 30-50%
业务痛点
ROAS 好看但利润没有涨不知道哪个素材真的有效归因窗口期不同数据打架TikTok/Meta/Amazon 广告数据整合不了

1. 解决的问题

传统 CVR(转化率)模型只建模"点击→购买",忽略退款行为,导致

2. 核心算法逻辑

传统 CVR(转化率)模型只建模"点击→购买",忽略退款行为,导致:

3. 业务应用场景

业务痛点: 母婴出海跨境电商(如 TikTok Shop、Shopify + Meta Ads 投放)存在高退款率: - 尿布、奶粉等标品:退款率 3-8%(质量正常) - 婴童玩具、服装:退款率 15-25%(尺码/描述不符) - 广告优化用毛转化 ROAS,会把预算倾斜给"点击率高但退款也高"的素材

业务价值: - 桑基图终点改为"净转化",真实反映 GMV 贡献 - 广告素材排序从 CVR 排序改为 NetCVR 排序,预期减少 20-30% 退款量 - 预算从高退款率品类向高净转化品类重新分配 - 以 1000 万月均 GMV 为例,如退款率从 15% 降至 10%,净 GMV 提升约 59 万

业务问题:主页推荐的商品推荐分 = CTR × CVR,未考虑退款。高转化但高退款的"噱头商品"排名过高。

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • vs TRACE(Skill-TRACE-Delayed-CVR):TRACE 处理单段延迟(点击→购买);TESLA 处理两段级联延迟(+退款),目标是净转化而非毛转化
  • vs ROAS-Budget(Skill-ROAS-Budget-Optimization):ROAS 优化是下游;TESLA 提供更准确的 NetCVR 信号输入给 ROAS 模型
  • vs PVM(Skill-PVM-Attribution-Window):PVM 协调不同触点的归因窗口;TESLA 专注于同一触点的两段延迟去偏

7. 代码模板

代码块数量:10 · 路径:未检测到

"""
TESLA: 级联延迟净转化率预测
论文: arXiv:2601.19965 (WWW 2026, Taobao)

功能:
    1. 模拟跨境电商级联延迟数据(点击→购买→退款)
    2. 两阶段去偏(CVR 延迟去偏 + RFR 延迟去偏)
    3. 共享底层 CVR-RFR 级联模型
    4. 延迟感知排序损失
    5. 评估 NetCVR AUC / PR-AUC / PCOC

依赖: numpy, pandas, scikit-learn, torch
"""

import numpy as np
import pandas as pd
from dataclasses import dataclass
from typing import Tuple, Optional
import warnings
warnings.filterwarnings('ignore')

# ─────────────────────────────────────────────
# 1. 数据模拟:跨境母婴电商级联延迟数据
# ─────────────────────────────────────────────

def simulate_cascade_delay_data(
    n_clicks: int = 10000,
    cvr_base: float = 0.08,
    rfr_base: float = 0.12,
    conv_delay_scale: float = 24.0,   # 小时,指数分布均值
    refund_delay_scale: float = 72.0,  # 小时,指数分布均值
    obs_window_hours: float = 48.0,    # 观测截止窗口
    seed: int = 42
) -> pd.DataFrame:
    """
    模拟点击→购买→退款的级联延迟数据流。

    Returns:
        DataFrame with columns:
            click_id, features (x0~x4), click_time,
            true_cvr, true_rfr,
            y_true (购买标签), z_true (退款标签),
            conv_delay (hours), refund_delay (hours from purchase),
            y_obs (观测窗口内是否看到购买), z_obs (是否看到退款),
            sample_type ('immediate' | 'delayed_pos' | 'fake_neg')
    """
    rng = np.random.RandomState(seed)

    # 特征:用户历史购买次数、品类偏好得分、价格敏感度等
    x = rng.randn(n_clicks, 5)
    x[:, 0] = np.clip(x[:, 0], -3, 3)  # 历史购买频次(标准化)

    # 真实 CVR(与特征相关)
    true_cvr = 1 / (1 + np.exp(-(cvr_base * 5 + x[:, 0] * 0.3 + x[:, 1] * 0.2)))
    true_cvr = np.clip(true_cvr, 0.01, 0.6)

    # 真实 RFR(与 CVR 负相关但有独立维度,高 CVR 用户退款率略低)
    rfr_logit = rfr_base * 3 - x[:, 0] * 0.15 + x[:, 2] * 0.25
    true_rfr = 1 / (1 + np.exp(-rfr_logit))
    true_rfr = np.clip(true_rfr, 0.02, 0.5)

8. 论文来源

  • 2601.19965