paper2skills Playbook

小样本Beta修正共形预测 - 50个样本也能保证覆盖

Skill-SSBC-Small-Sample-Conformal · 01-因果推断

causalexperimentforecastingrag知识图谱与RAG
年化 ROI5-20 万/月
实现难度⭐⭐☆☆☆
业务优先级⭐⭐⭐⭐
业务视角
适用角色增长负责人 / CMO · 数据分析师 · 广告优化师
适用平台Amazon · TikTok Shop · Meta Ads · DTC 独立站
什么情况下用广告预算花了,但不确定哪个渠道真的带来新客;做了大促,不知道销量增长是促销效果还是季节规律
成功是什么样的能区分「真实增量」和「自然购买」,砍掉虚假归因渠道后同等预算 ROI 提升 20-40%
业务痛点
钱花出去了不知道有没有用各渠道报告都说自己贡献最大怎么向老板证明这笔钱值得花

1. 解决的问题

标准 Split Conformal Prediction 的覆盖保证是"期望意义"的——跨多次校准集随机抽取,平均覆盖率为 `1-α`,但单次校准的覆盖率可能远低于目标值。实验表明:当校准集 n=50 时,目标覆盖率 90% 的标准共形预测,实际违约率高达 ~40%(即 40% 的概率实际覆盖 < 90%)。

2. 核心算法逻辑

标准 Split Conformal Prediction 的覆盖保证是"期望意义"的——跨多次校准集随机抽取,平均覆盖率为 1α,但单次校准的覆盖率可能远低于目标值。实验表明:当校准集 n=50 时,目标覆盖率 90% 的标准共形预测,实际违约率高达 ~40%(即 40% 的概率实际覆盖 < 90%)。

3. 业务应用场景

业务问题:日本市场刚上线,只收集了50条带标签的转化数据做校准。标准共形预测名义 95% 覆盖率,但实际可能只有 82%——基于此做预算决策犹如"碰运气"。SSBC 修正后保证以 95% 概率实际覆盖 ≥ 95%,做预算决策时心里有底。

数据要求: - 小样本校准集(n ≥ 20 即可用,n ≥ 50 效果稳定) - 任意共形分数(绝对残差、预测区间宽度等均可) - 需指定目标覆盖率 `1-α_target` 和置信参数 `1-δ`

预期产出: - 调整后的 `α_adj`(比 `α_target` 更严格的显著性水平) - 基于 `α_adj` 构建的共形预测集/区间 - 可行性判断(n 是否足够达到 (α, δ) 目标)

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • 现状痛点:日本市场校准集仅 50 条数据,标准共形预测 40% 概率实际覆盖 < 90%
  • SSBC 收益:将违约率从 ~40% 降至 ~10%(与目标 δ 对齐),预算决策信心大幅提升
  • 量化价值:避免每月 1-2 次"基于不可信区间"的错误决策,每次预估损失 3-10 万

7. 代码模板

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

"""
SSBC (Small Sample Beta Correction) - 小样本共形预测精确覆盖保证
论文: arXiv:2509.15349 (2025)
场景: 母婴出海新市场小样本校准集下的 PAC 覆盖保证

依赖: numpy, scipy, pandas
"""

import numpy as np
import pandas as pd
from scipy import stats
from scipy.special import betaln
import warnings
warnings.filterwarnings('ignore')


# ==================== SSBC 核心算法 ====================

class SSBC:
    """
    Small Sample Beta Correction (SSBC)
    
    将标准 Split Conformal Prediction 的期望覆盖保证
    升级为 PAC (Probably Approximately Correct) 覆盖保证:
    
        Pr(coverage >= 1-α_target) >= 1-δ
    
    即插即用:不改变模型或共形分数,只调整显著性水平 α_adj。
    """
    
    def __init__(self, alpha_target: float, delta: float, n_cal: int, 
                 m_test: int = None):
        """
        Args:
            alpha_target: 目标名义显著性水平(如 0.05 表示 95% 覆盖率)
            delta: 风险容忍度——以概率 1-delta 保证覆盖(如 0.05)
            n_cal: 校准集大小
            m_test: 测试集大小(None 表示无穷,即 Beta 分布;给定时用 Beta-Binomial)
        """
        self.alpha_target = alpha_target
        self.delta = delta
        self.n_cal = n_cal
        self.m_test = m_test
        self.alpha_adj = None
        self.feasible = False
        self._grid = None
    
    def _coverage_prob(self, alpha_prime: float) -> float:
        """
        计算 Pr(C(α') >= 1-α_target)
        
        使用 Beta(无穷测试集)或 Beta-Binomial(有限测试集)
        """
        n = self.n_cal
        k = int(np.ceil((1 - alpha_prime) * (n + 1)))
        k = max(1, min(k, n))  # 边界约束
        
        a = k        # Beta 参数 a
        b = n + 1 - k  # Beta 参数 b
        

8. 论文来源

  • 2509.15349