paper2skills Playbook

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 可量化,大促前做预算优化模拟
业务痛点
多渠道预算分配靠感觉网红带货效果不知道怎么量化渠道之间互相抢功劳数据打架整体营销 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 卡片。