![]() |
对模型运行预算优化方案并输出结果。
meridian.analysis.optimizer.BudgetOptimizer(
meridian: meridian.model.model.Meridian
)
根据可以自定义预算、数据和限制条件的各种方案,找到可最大限度提升效果的最佳预算分配方案。结果可通过图表或 HTML 摘要输出页面的形式查看。
方法
optimize
optimize(
use_posterior: bool = True,
selected_times: (tuple[str | None, str | None] | None) = None,
fixed_budget: bool = True,
budget: (float | None) = None,
pct_of_spend: (Sequence[float] | None) = None,
spend_constraint_lower: (_SpendConstraint | None) = None,
spend_constraint_upper: (_SpendConstraint | None) = None,
target_roi: (float | None) = None,
target_mroi: (float | None) = None,
gtol: float = 0.0001,
use_optimal_frequency: bool = True,
use_kpi: bool = False,
confidence_level: float = c.DEFAULT_CONFIDENCE_LEVEL,
batch_size: int = c.DEFAULT_BATCH_SIZE
) -> meridian.analysis.optimizer.OptimizationResults
找到可最大限度提升效果的最佳预算分配方案。
效果通常是收入,但如果 KPI 不是收入,并且“每个 KPI 的收入”数据不可用,则 Meridian 会将效果定义为 KPI 本身。
实参 | |
---|---|
use_posterior
|
布尔值。如果为 True ,则系统会根据模型的后验分布优化预算。否则,系统会使用先验分布。
|
selected_times
|
一个元组,包含优化运行时段的开始和结束时间维度坐标。所选时间值应与基础模型中的 Meridian 时间维度坐标一致。默认情况下,系统会使用所有时间段。开始时间组件或结束时间组件可以是 None ,分别表示第一个时间坐标或最后一个时间坐标。 |
fixed_budget
|
布尔值,用于指示是固定预算优化还是灵活预算优化。默认为 True 。如果为 False ,则必须指定 target_roi 或 target_mroi 。
|
budget
|
数字,用于指示固定预算方案的总预算。默认为历史预算。 |
pct_of_spend
|
大小为 n_total_channels 的数字列表,其中包含所有媒体和 RF 渠道的支出分配百分比。顺序必须与 InputData.media 一致,值介于 0 到 1 之间,总和为 1。默认情况下,系统会使用历史分配。预算和分配会结合使用,以确定未优化的媒体级支出,该支出用于计算未优化的效果指标(例如投资回报率),并在支出限制下构建可行的媒体级支出范围。
|
spend_constraint_lower
|
大小为 n_total_channels 的数字列表或浮点数(所有渠道均采用相同的限制条件),用于指示媒体级支出的下限。媒体级支出的下限为 (1 -
spend_constraint_lower) * budget * allocation) 。此值必须介于 0 到 1 之间。对于固定预算,默认为 0.3 ;对于灵活预算,默认为 1 。
|
spend_constraint_upper
|
大小为 n_total_channels 的数字列表或浮点数(所有渠道均采用相同的限制条件),用于指示媒体级支出的上限。媒体级支出的上限为 (1 +
spend_constraint_upper) * budget * allocation) 。对于固定预算,默认为 0.3 ;对于灵活预算,默认为 1 。
|
target_roi
|
浮点数,用于指示目标投资回报率限制。仅用于灵活预算方案。当总支出的投资回报率达到 target_roi 时,预算会受到限制。
|
target_mroi
|
浮点数,用于指示目标边际投资回报率限制。仅用于灵活预算方案。当总支出的边际投资回报率达到 target_mroi 时,预算会受到限制。
|
gtol
|
浮点数,用于指示网格设置中所用预算的可接受相对误差。预算将按 10*n 四舍五入,其中 n 是最小的整数,使得 (budget - rounded_budget) 小于或等于 (budget * gtol) 。gtol 必须小于 1。
|
use_optimal_frequency
|
如果为 True ,则使用经过训练的 Meridian 模型计算出的 optimal_frequency 进行优化。如果为 False ,则使用历史频率。
|
use_kpi
|
如果为 True ,则对 KPI 进行优化。默认值为收入。
|
confidence_level
|
用于计算置信区间的阈值。 |
batch_size
|
每个批次中每条链的最大抽样次数。计算会分批次运行,以避免内存耗尽。如果发生内存错误,请尝试减少 batch_size 。一般而言,batch_size 值越大,计算速度越快。
|
返回结果 | |
---|---|
一个 OptimizationResults 对象,其中包含优化后的预算分配数据集以及用于推导这些数据集的一些中间值。
|