Multi-Objective Budget Allocation(多目标预算分配)
Skill-Multi-Objective-Budget-Allocation · 15-营销投放分析
causalforecastingoptimizationrecommendationmulti_agent广告与投放供应链与补货推荐与搜索MAS与智能体工程WF-A 智能补货WF-B 广告优化WF-D 选品扫描
年化 ROI30-50 万元
实现难度⭐⭐⭐☆☆
业务视角
适用角色CMO / 营销负责人 · 广告优化师 · CEO
适用平台Amazon + TikTok + Meta + KOL 四渠道 · Prime Day / Black Friday 预算前置
什么情况下用同时跑 Amazon 广告/TikTok/网红投放/邮件,不知道整体预算怎么分配最高效;网红投放花了大钱但不知道带来多少真实 GMV
成功是什么样的建立全渠道营销归因模型(MMM),每个渠道真实 ROI 可量化,大促前做预算优化模拟
业务痛点
1. 解决的问题
$30 万月预算要同时做三件事——黑五冲销量(短期 ROI)、母婴博主种草(品牌搜索量)、新款吸奶器 S2 预热(新品曝光)
2. 核心算法逻辑
广告预算分配不能只看 ROI——需要同时平衡"短期销售""品牌建设""新品推广"三个目标。多目标优化(Pareto 最优)找到三个目标之间的最佳 tradeoff 曲面。
3. 业务应用场景
业务问题:$30 万月预算要同时做三件事——黑五冲销量(短期 ROI)、母婴博主种草(品牌搜索量)、新款吸奶器 S2 预热(新品曝光)。怎么分?
数据要求:各渠道(FB/Google/TikTok/PR)对三个目标的历史贡献数据
预期产出: - Pareto 前沿可视化:三条曲线展示 trade-off - 推荐分配:FB $12 万(销量+品牌双强)/ TikTok $10 万(新品种草强)/ Google $6 万(收割)/ PR $2 万(品牌) - 权重选择:黑五期 w=(0.6, 0.2, 0.2)
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- ROI 预估:避免单目标短视造成的长期品牌价值损失;年化隐性价值 30-50 万元
- 实施难度:⭐⭐⭐☆☆(3 星)
- 优先级评分:⭐⭐⭐☆☆(3 星)
7. 代码模板
代码块数量:1 · 路径:未检测到
"""Multi-Objective Budget Allocation — Pareto 优化"""
import numpy as np
from scipy.optimize import minimize
def multi_objective_allocate(
budget: float,
channel_contributions: np.ndarray, # (n_channels, n_objectives)
weights: np.ndarray = None,
saturations: np.ndarray = None # 各渠道半饱和点
) -> dict:
"""多目标预算分配"""
n_channels, n_objectives = channel_contributions.shape
weights = weights or np.ones(n_objectives) / n_objectives
saturations = saturations or np.full(n_channels, budget/n_channels*3)
def objective(x):
if np.any(x < 0):
return -np.inf
# 饱和调整
sat_adj = 1 - np.exp(-x / saturations)
contributions = channel_contributions * sat_adj[:, None]
scores = contributions.sum(axis=0)
return -np.dot(weights, scores)
constraints = [{'type': 'eq', 'fun': lambda x: x.sum() - budget}]
x0 = np.ones(n_channels) * budget / n_channels
bounds = [(0, budget) for _ in range(n_channels)]
res = minimize(objective, x0, bounds=bounds, constraints=constraints, method='SLSQP')
return {
'allocation': {f'ch_{i}': round(v) for i, v in enumerate(res.x)},
'scores': (channel_contributions * (1-np.exp(-res.x/saturations))[:,None]).sum(axis=0),
}
if __name__ == '__main__':
# 4渠道 × 3目标 (ROI, Brand, NewProduct)
contrib = np.array([
[0.8, 0.3, 0.1], # FB: ROI强, 品牌中等
[0.9, 0.1, 0.05], # Google: 收割最强
[0.4, 0.6, 0.8], # TikTok: 新品+品牌强
[0.1, 0.8, 0.2], # PR: 品牌强
])
result = multi_objective_allocate(300000, contrib, weights=[0.6, 0.2, 0.2])
print("多目标预算分配:")
for ch, amt in result['allocation'].items():
print(f" {ch}: ${amt:,.0f}")
print(f" 目标得分: ROI={result['scores'][0]:.2f}, "
f"Brand={result['scores'][1]:.2f}, New={result['scores'][2]:.2f}")
print("\n[✓] Multi-Objective Budget 测试通过")
8. 论文来源
未自动抽取;请查看原始 Skill 卡片。