小样本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