View source on GitHub
|
Defines a processor for reach and frequency optimization inference on a Meridian model.
This module provides the ReachFrequencyOptimizationProcessor, which optimizes
the average frequency for reach and frequency (R&F) media channels in a trained
Meridian model to maximize ROI.
The processor takes a trained model and a ReachFrequencyOptimizationSpec
object. The spec defines the constraints for the optimization, such as the
minimum and maximum average frequency to consider for each channel.
Key Features:
- Optimizes average frequency for all R&F channels simultaneously.
- Allows setting minimum and maximum frequency constraints.
- Generates detailed results, including the optimal average frequency for each channel, the expected outcomes at this optimal frequency, and response curves showing KPI/Revenue as a function of spend.
- Outputs results in a structured protobuf format
(
ReachFrequencyOptimization).
Key Classes:
ReachFrequencyOptimizationSpec: Dataclass to specify optimization parameters and constraints.ReachFrequencyOptimizationProcessor: The main processor class to execute the R&F optimization.
Example Usage:
from schema.processors import reach_frequency_optimization_processor
from schema.processors import common
from schema.processors import model_processor
import datetime
# Assuming 'mmm' is a trained Meridian model object with R&F channels
trained_model = model_processor.TrainedModel(mmm)
spec = reach_frequency_optimization_processor.ReachFrequencyOptimizationSpec(
optimization_name="rf_optimize_q1",
start_date=datetime.date(2023, 1, 1),
end_date=datetime.date(2023, 4, 1),
min_frequency=1.0,
max_frequency=10.0, # Optional, defaults to model's max frequency
kpi_type=common.KpiType.REVENUE,
)
processor = (
reach_frequency_optimization_processor.ReachFrequencyOptimizationProcessor(
trained_model
)
)
# result is a rf_pb.ReachFrequencyOptimization proto
result = processor.execute([spec])
print(f"R&F Optimization results for {spec.optimization_name}:")
# Access results from the proto, e.g.:
# result.results[0].optimized_channel_frequencies
# result.results[0].optimized_marketing_analysis
# result.results[0].frequency_outcome_grid
Classes
class ReachFrequencyOptimizationProcessor: A Processor for marketing reach and frequency optimization.
class ReachFrequencyOptimizationSpec: Spec dataclass for marketing reach and frequency optimization processor.
View source on GitHub