Szenarien für die Budgetoptimierung

In diesem Dokument werden Szenarien mit festen und flexiblen Budgets beschrieben. Außerdem finden Sie Beispielcode, der Ihnen helfen kann, die beste Strategie für die Budgetoptimierung zu finden.

Festes Budget: ROI oder inkrementellen KPI maximieren

In diesem Szenario können Sie für ein bestimmtes Budget die optimale Verteilung auf Channels und Taktiken ermitteln, um den Return on Investment (ROI) zu maximieren. Wenn kpi_type nicht umsatzbezogen ist und revenue_per_kpi unbekannt ist, wird im Szenario mit festem Budget die optimale Zuweisung ermittelt, um den inkrementellen KPI zu maximieren.

Dieses Szenario entspricht den Standardeinstellungen und wird ausgeführt, wenn Sie die Methode optimize() aus der Klasse BudgetOptimizer ohne zusätzliche Argumente aufrufen. Sie können das Szenario mit festem Budget auch anpassen, indem Sie das Zeitfenster für die Optimierung ändern, ein spezifisches Budget eingeben und die bereits optimierten Zuweisungen sowie die Unter- und Obergrenze für Media-Ausgaben angeben.

Beispielcode

Das folgende Codebeispiel zeigt ein benutzerdefiniertes Szenario mit festem Budget:

budget_optimizer = optimizer.BudgetOptimizer(meridian)

pct_of_spend = {
    'Channel0': 0.2,
    'Channel1': 0.2,
    'Channel2': 0.2,
    'Channel3': 0.1,
    'Channel4': 0.2,
    'Channel5': 0.1,
}
spend_constraint = {
    'Channel0': 0.3,
    'Channel1': 0.2,
    'Channel2': 0.3,
    'Channel3': 0.3,
    'Channel4': 0.3,
    'Channel5': 0.2,
}

build_channel_args = meridian.input_data.get_paid_channels_argument_builder()

optimization_results = budget_optimizer.optimize(
      selected_times=('2023-01-16', '2024-01-15'),
      budget=70_000_000,
      pct_of_spend=build_channel_args(**pct_of_spend),
      spend_constraint_lower=build_channel_args(**spend_constraint),
      spend_constraint_upper=build_channel_args(**spend_constraint),
)

Wichtige Parameter

  • selected_times: Tupel mit den Dimensionen für Start- und Endzeit für die Dauer der Optimierung. Sie sollten mit den Zeitdimensionen von Meridian übereinstimmen. Standardmäßig werden alle Zeiträume verwendet.

    Beispiel

    So ändern Sie den Zeitraum:

    budget_optimizer = optimizer.BudgetOptimizer(meridian)
    opt = budget_optimizer.optimize(selected_times=('2023-01-16','2024-01-15')) # date range from week 100 to 200
    
  • budget: Das Gesamtbudget für das Szenario mit festem Budget. Standardmäßig ist das bisherige Budget festgelegt.

    Beispiel

    So ändern Sie das Budget auf 70_000_000:

    budget_optimizer = optimizer.BudgetOptimizer(meridian)
    opt = budget_optimizer.optimize(budget=70_000_000)
    
  • pct_of_spend: Numerische Liste mit n_paid_channels Elementen, die die prozentuale Aufteilung der Ausgaben für Channels enthält. Die Reihenfolge muss (InputData.media + InputData.reach) entsprechen. Die Werte müssen zwischen 0 und 1 liegen, wobei ihre Summe 1 ergibt. Standardmäßig wird die bisherige Zuweisung verwendet. Budget und Zuweisung werden gemeinsam verwendet, um die nicht optimierten Ausgaben auf Media-Ebene zu ermitteln. Damit werden die nicht optimierten Leistungsmesswerte (z. B. ROI) berechnet und der realistische Bereich der Ausgaben auf Media-Ebene mit den Ausgabenbeschränkungen festgelegt.

    Beispiel

    So legen Sie die Zuweisung fest:

    budget_optimizer = optimizer.BudgetOptimizer(meridian)
    opt = budget_optimizer.optimize(
        pct_of_spend=build_channel_args(
            Channel0=0.2,
            Channel1=0.2,
            Channel2=0.2,
            Channel4=0.1,
            Channel5=0.2,
            Channel6=0.1,
        ), # non-optimized allocation is 20% to Channel0, 20% to Channel1 etc
    )
    
  • spend_constraint_lower: Numerische Liste, deren Länge n_paid_channels entspricht, um Ausgabenbeschränkungen für die einzelnen Channels zu verwenden, oder ein einzelner Gleitkommawert (float), der für alle Media-Channels als Ausgabenbeschränkung verwendet wird. Wenn als channel-indexiertes Array angegeben, muss die Reihenfolge mit (InputData.media + InputData.reach) übereinstimmen. Die Untergrenze für Ausgaben auf Media-Ebene, die so berechnet wird: ((1 - spend_constraint_lower) * budget * allocation). Der eingegebene Wert muss zwischen 0 und 1 liegen. Der Standardwert ist 0,3 (70 % der Media-Ausgaben) für ein festes Budget und 1 (0 % der Media-Ausgaben) für ein flexibles Budget.

    Beispiel

    So ändern Sie die Untergrenze für Ausgaben:

    budget_optimizer = optimizer.BudgetOptimizer(meridian)
    build_channel_args = build_channel_args.with_default_value(0.3)
    opt = budget_optimizer.optimize(
        spend_constraint_lower=build_channel_args(
            Channel1=0.2,
            Channel5=0.2,
        ), # change the lower bound to 70%, 80%, 70%, 70%, 70% and 80% of media spends
    )
    
  • spend_constraint_upper: Numerische Liste, deren Länge n_paid_channels entspricht, um Ausgabenbeschränkungen für die einzelnen Channels zu verwenden, oder ein einzelner Gleitkommawert (float), der für alle Media-Channels als Ausgabenbeschränkung verwendet wird. Wenn als channel-indexiertes Array angegeben, muss die Reihenfolge mit (InputData.media + InputData.reach) übereinstimmen. Die Obergrenze für Ausgaben auf Media-Ebene, die so berechnet wird: (1 + spend_constraint_upper) * budget * allocation). Der Standardwert ist 0,3 (130 % der Media-Ausgaben) für ein festes Budget und 1 (200 % der Media-Ausgaben) für ein flexibles Budget.

    Beispiel

    So ändern Sie die Obergrenze für Ausgaben:

    budget_optimizer = optimizer.BudgetOptimizer(meridian)
    build_channel_args = build_channel_args.with_default_value(0.3)
    opt = budget_optimizer.optimize(
        spend_constraint_upper=build_channel_args(
            Channel1=0.2,
            Channel5=0.2,
        ), # change the upper bound to 130%, 120%, 130%, 130%, 130% and 120% of media spends
    )
    

Flexibles Budget: Minimaler Ziel-ROI

In diesem Szenario für ein flexibles Budget geben Sie einen bestimmten minimalen Ziel-ROI ein. Mit dieser Option können Sie ermitteln, wie hoch das Budget maximal sein kann, das Sie ohne Budgetbeschränkung ausgeben können, bis der ROI auf der gesamten Marketingebene den Wert X erreicht. Meridian liefert eine Empfehlung für das Maximalbudget sowie eine optimale Budgetverteilung auf die Media-Channels, um diesen Ziel-ROI zu erreichen. Die Einschränkung für den Ziel-ROI wird auf Ebene des Gesamt-ROI für das Marketing und nicht auf Channelebene angewendet.

Beispielcode

Das folgende Codebeispiel zeigt ein benutzerdefiniertes Szenario mit flexiblem Budget mit einem minimalen Ziel-ROI:

budget_optimizer = optimizer.BudgetOptimizer(meridian)
optimization_results = budget_optimizer.optimize(
      selected_times=('2023-01-16','2024-01-15'),
      fixed_budget=False,
      spend_constraint_lower=0.5,
      spend_constraint_upper=0.5,
      target_roi=1,
)

Wichtige Parameter

  • fixed_budget: Boolescher Wert, der angibt, ob es sich um eine Optimierung mit festem oder flexiblem Budget handelt. Die Standardeinstellung ist True, was einem festen Budget entspricht. Ist False festgelegt, müssen Sie auch target_roi oder target_mroi angeben.

  • target_roi: Gleitkommazahl für die Einschränkung für den Ziel-ROI. Wird nur für Szenarien mit flexiblem Budget verwendet. Das Budget ist auf den Wert beschränkt, bei dem der ROI der Media-Gesamtausgaben target_roi erreicht.

    Beispiel

    So wechseln Sie zum Szenario mit flexiblem Budget und legen den Ziel-ROI auf 1 fest:

    budget_optimizer = optimizer.BudgetOptimizer(meridian)
    opt = budget_optimizer.optimize(fixed_budget=False, target_roi=1)
    
  • selected_times: Tupel mit den Dimensionen für Start- und Endzeit für die Dauer der Optimierung. Sie sollten mit den Zeitdimensionen von Meridian übereinstimmen. Standardmäßig werden alle Zeiträume verwendet.

  • pct_of_spend: Numerische Liste mit n_paid_channels Elementen, die die prozentuale Aufteilung der Media-Ausgaben enthält. Die Reihenfolge muss (InputData.media + InputData.reach) entsprechen. Die Werte müssen zwischen 0 und 1 liegen, wobei ihre Summe 1 ergibt. Standardmäßig wird die bisherige Zuweisung verwendet. Budget und Zuweisung werden gemeinsam verwendet, um die nicht optimierten Ausgaben auf Media-Ebene zu ermitteln. Damit werden die nicht optimierten Leistungsmesswerte (z. B. ROI) berechnet und der realistische Bereich der Ausgaben auf Media-Ebene mit den Ausgabenbeschränkungen festgelegt.

  • spend_constraint_lower: Numerische Liste, deren Länge n_paid_channels entspricht, um Ausgabenbeschränkungen für die einzelnen Channels zu verwenden, oder ein einzelner Gleitkommawert (float), der für alle Media-Channels als Ausgabenbeschränkung verwendet wird. Wenn als channel-indexiertes Array angegeben, muss die Reihenfolge mit (InputData.media + InputData.reach) übereinstimmen. Die Untergrenze für Ausgaben auf Media-Ebene, die so berechnet wird: ((1 - spend_constraint_lower) * budget * allocation). Der eingegebene Wert muss zwischen 0 und 1 liegen. Der Standardwert ist 0,3 (70 % der Media-Ausgaben) für ein festes Budget und 1 (0 % der Media-Ausgaben) für ein flexibles Budget.

  • spend_constraint_upper: Numerische Liste, deren Länge n_paid_channels entspricht, um Ausgabenbeschränkungen für die einzelnen Channels zu verwenden, oder ein einzelner Gleitkommawert (float), der für alle Media-Channels als Ausgabenbeschränkung verwendet wird. Wenn als channel-indexiertes Array angegeben, muss die Reihenfolge mit (InputData.media + InputData.reach) übereinstimmen. Die Obergrenze für Ausgaben auf Media-Ebene, die so berechnet wird: (1 + spend_constraint_upper) * budget * allocation). Der Standardwert ist 0,3 (130 % der Media-Ausgaben) für ein festes Budget und 1 (200 % der Media-Ausgaben) für ein flexibles Budget.

Flexibles Budget: Ziel-Grenz-ROI

In diesem Szenario mit flexiblem Budget geben Sie einen Zielwert für den Grenz-ROI für zusätzliche Ausgaben ein. Mit dieser Option können Sie ermitteln, wie hoch das Budget maximal sein kann, das Sie ohne Budgetbeschränkung ausgeben können, bis der Grenz-ROI des jeweiligen Media-Channels den Zielwert erreicht. Es ist jedoch möglich, dass der Grenz-ROI einiger Channels aufgrund des realistischen Bereichs der Media-Ausgaben nicht mit dem Ziel-Grenz-ROI übereinstimmt. Der Grenz-ROI wird jedoch effektiv auf den Ziel-Grenz-ROI sinken. Der Ziel-Grenz-ROI wird auf Channelebene und nicht auf Marketingebene insgesamt angewendet.

Beispielcode

Das folgende Codebeispiel zeigt ein benutzerdefiniertes Szenario mit flexiblem Budget mit einem Ziel-Grenz-ROI:

budget_optimizer = optimizer.BudgetOptimizer(meridian)
optimization_results = budget_optimizer.optimize(
      selected_times=('2023-01-16','2024-01-15'),
      fixed_budget=False,
      spend_constraint_lower=0.5,
      spend_constraint_upper=0.5,
      target_mroi=1,
)

Wichtige Parameter

  • fixed_budget: Boolescher Wert, der angibt, ob es sich um eine Optimierung mit festem oder flexiblem Budget handelt. Die Standardeinstellung ist True, was einem festen Budget entspricht. Ist False festgelegt, müssen Sie entweder target_roi oder target_mroi angeben.

  • target_mroi: Gleitkommazahl für die Einschränkung für den Ziel-Grenz-ROI. Wird nur für Szenarien mit flexiblem Budget verwendet. Das Budget ist auf den Wert beschränkt, bei dem der Grenz-ROI der Media-Gesamtausgaben target_mroi erreicht.

    Beispiel

    So wechseln Sie zum Szenario mit flexiblem Budget und legen den Ziel-Grenz-ROI auf 1 fest:

    budget_optimizer = optimizer.BudgetOptimizer(meridian)
    opt = budget_optimizer.optimize(fixed_budget=False, target_mroi=1)
    
  • selected_times: Tupel mit den Dimensionen für Start- und Endzeit für die Dauer der Optimierung. Sie sollten mit den Zeitdimensionen von Meridian übereinstimmen. Standardmäßig werden alle Zeiträume verwendet.

  • pct_of_spend: Numerische Liste mit n_paid_channels Elementen, die die prozentuale Aufteilung der Media-Ausgaben enthält. Die Reihenfolge muss (InputData.media + InputData.reach) entsprechen. Die Werte müssen zwischen 0 und 1 liegen, wobei ihre Summe 1 ergibt. Standardmäßig wird die bisherige Zuweisung verwendet. Budget und Zuweisung werden gemeinsam verwendet, um die nicht optimierten Ausgaben auf Media-Ebene zu ermitteln. Damit werden die nicht optimierten Leistungsmesswerte (z. B. ROI) berechnet und der realistische Bereich der Ausgaben auf Media-Ebene mit den Ausgabenbeschränkungen festgelegt.

  • spend_constraint_lower: Numerische Liste, deren Länge n_paid_channels entspricht, um Ausgabenbeschränkungen für die einzelnen Channels zu verwenden, oder ein einzelner Gleitkommawert (float), der für alle Media-Channels als Ausgabenbeschränkung verwendet wird. Wenn als channel-indexiertes Array angegeben, muss die Reihenfolge mit (InputData.media + InputData.reach) übereinstimmen. Die Untergrenze für Ausgaben auf Media-Ebene, die so berechnet wird: ((1 - spend_constraint_lower) * budget * allocation). Der eingegebene Wert muss zwischen 0 und 1 liegen. Der Standardwert ist 0,3 (70 % der Media-Ausgaben) für ein festes Budget und 1 (0 % der Media-Ausgaben) für ein flexibles Budget.

  • spend_constraint_upper: Numerische Liste, deren Länge n_paid_channels entspricht, um Ausgabenbeschränkungen für die einzelnen Channels zu verwenden, oder ein einzelner Gleitkommawert (float), der für alle Media-Channels als Ausgabenbeschränkung verwendet wird. Wenn als channel-indexiertes Array angegeben, muss die Reihenfolge mit (InputData.media + InputData.reach) übereinstimmen. Die Obergrenze für Ausgaben auf Media-Ebene, die so berechnet wird: (1 + spend_constraint_upper) * budget * allocation). Der Standardwert ist 0,3 (130 % der Media-Ausgaben) für ein festes Budget und 1 (200 % der Media-Ausgaben) für ein flexibles Budget.