SuperAPI AI 工具集

bayesian-bandits

通用与其它

查看项目

更新于 10-15 17:30

技能介绍

用途:在多个变体(广告、落地页、推荐、定价档位)之间自适应分配流量,边学习边利用,减少劣质变体曝光,实现无需预设停止规则的“常开”优化。

主要能力:提供 BernoulliBandit、ThompsonSampler 类,以及 EpsilonGreedy、UCB1 基线用于对比;支持离散上下文的 ContextualThompson,以及连续上下文的 logistic Thompson(Laplace 近似);包含模拟脚本计算累积遗憾,并可用 MLflow 记录参数、指标、标签与图表。

核心算法:Bernoulli 臂的 Thompson 采样用 Beta 先验,每轮从各臂 Beta 后验采样并选最大者,观测后更新 alpha/beta,更新精确且为 O(1),无需 MCMC 或超参数。

使用方式:项目含 src/bandit.py、baselines.py、simulate.py、contextual.py 与 notebooks/demo.py;运行演示命令为 marimo edit --sandbox demo.py。生产环境可批量更新,累积每批成功/失败后一次性更新后验,仍保持精确,仅收敛变慢。

适用场景:可实时或按批更新分配、劣质变体成本高、需要持续收敛到最优臂、最优变体依赖用户特征(分群、设备、地域)时。

限制:需要因果推断或预注册样本量时应改用贝叶斯 A/B 测试;奖励延迟数天/数周、臂数超过约 50 且奖励稀疏、奖励分布随时间变化(非平稳)时效果受限,后者需滑窗或折扣 Thompson 采样(资料未覆盖)。常见陷阱包括误用于因果推断、忽略延迟反馈、臂过多奖励稀疏、非平稳奖励、忽略先验信息、在不同臂配置间直接比较遗憾。