Google Meridian入門:オープンソースMMMツールの導入と実践
はじめに
Meridianは、Googleが2024年にオープンソースとして公開したマーケティングミックスモデリング(MMM)フレームワークです。前身のLightweightMMMの後継として開発され、ベイズ推定をベースに地域レベル分析やリーチ&フリークエンシー(R&F)モデリングなど、より高度な機能を備えています。
Meridianの最大の特徴は、Googleの検索クエリデータをモデルに直接統合できる点です。これにより、他のMMMツールでは捉えにくい「検索を通じた間接効果」を精密に測定できます。
MMMの基本概念についてはMMMとは?初心者向け完全ガイドをご覧ください。
Meridianの主要機能
機能一覧
| 機能 | 説明 | メリット |
|---|---|---|
| ベイズ推定 | JAX + NumPyroベースのMCMC | パラメータの不確実性を定量化 |
| 地域レベルモデリング | Geo×時系列のパネルデータ対応 | 地域差を活用した精度向上 |
| R&Fモデリング | リーチ&フリークエンシーの組み込み | imp/GRPより精密な効果測定 |
| Google検索データ統合 | 検索クエリボリュームを変数として統合 | 他チャネルの間接効果を捕捉 |
| 実験較正 | Geo Liftテスト結果による事前分布調整 | モデルの因果的妥当性を向上 |
| 予算最適化 | 組み込みの最適化機能 | 飽和曲線ベースの予算配分 |
LightweightMMMからの進化
| 項目 | LightweightMMM | Meridian |
|---|---|---|
| バックエンド | JAX + NumPyro | JAX + NumPyro(改良版) |
| データ粒度 | 全国集計のみ | 地域×時系列パネル |
| メディア入力 | 費用/imp | 費用/imp + R&F |
| 検索データ | 非対応 | Google検索統合 |
| 較正 | 基本的 | ROIプライオ + Geo Lift |
| ステータス | 非推奨(メンテナンスモード) | アクティブ開発中 |
セットアップ
システム要件
| 要件 | 推奨スペック |
|---|---|
| Python | 3.11以上 |
| RAM | 16GB以上(地域モデルでは32GB推奨) |
| OS | Linux / macOS(Windowsは WSL2 推奨) |
| GPU | 任意(JAXのGPUサポートで高速化可能) |
インストール
# pip でインストール
pip install google-meridian
# GPU版(CUDA環境がある場合)
pip install google-meridian[gpu]
# バージョン確認
python -c "import meridian; print(meridian.__version__)"
基本的な使い方
Step 1: データの準備
Meridianは独自のInputDataクラスでデータを管理します:
import pandas as pd
import numpy as np
from meridian.data import input_data
# 全国集計データの場合
df = pd.read_csv("marketing_data.csv", parse_dates=["date"])
media_data = df[["tv_spend", "digital_spend", "sns_spend"]].values
media_costs = df[["tv_spend", "digital_spend", "sns_spend"]].values
extra_features = df[["temperature", "holiday_flag"]].values
kpi = df["revenue"].values
data = input_data.InputData(
media=media_data,
media_costs=media_costs,
extra_features=extra_features,
kpi=kpi,
time_periods=len(df),
media_names=["TV", "Digital", "SNS"],
extra_features_names=["Temperature", "Holiday"],
)
Step 2: モデルの定義と学習
from meridian.model import spec as model_spec
from meridian.model import model
# モデルスペックの定義
spec = model_spec.ModelSpec(
max_lag=8, # 最大ラグ(週)
hill_before_adstock=False, # アドストック→飽和の順序
knots=None, # 時間トレンドのノット数
)
# モデル構築
mmm = model.Meridian(
input_data=data,
model_spec=spec,
)
# MCMCサンプリング
mmm.sample_posterior(
num_warmup=1000,
num_samples=1000,
num_chains=4,
seed=42,
)
Step 3: 結果の確認
from meridian.analysis import analyzer
# Analyzerで結果を抽出
result = analyzer.Analyzer(mmm)
# チャネル別ROAS
roas = result.compute_media_summary()
print(roas)
# 予測精度
metrics = result.compute_model_fit_metrics()
print(f"R²: {metrics['r_squared']:.4f}")
print(f"MAPE: {metrics['mape']:.2f}%")
地域レベルモデリング
Meridianの最大の差別化ポイントは地域×時系列のパネルデータを直接扱えることです:
# 地域別データの場合(例:10地域 × 104週)
n_geos = 10
n_times = 104
n_media = 3
media_data = np.random.rand(n_geos, n_times, n_media) # 地域×時間×チャネル
kpi = np.random.rand(n_geos, n_times) # 地域×時間
geo_data = input_data.InputData(
media=media_data,
media_costs=media_data,
kpi=kpi,
time_periods=n_times,
geo_names=[f"region_{i}" for i in range(n_geos)],
media_names=["TV", "Digital", "SNS"],
)
地域モデルの利点: 全国集計では「TV出稿量が常に一定」でも、地域別に見ると出稿パターンにばらつきがあるケースが多い。このばらつきを活用することで、TVの効果をより精密に推定できます。
Google検索データの統合
Meridianでは、Googleの検索クエリデータを「需要のプロキシ」として統合できます:
# 検索データを extra_features として統合
# Google Trends API や Search Console からデータを取得
search_data = df["branded_search_volume"].values
data_with_search = input_data.InputData(
media=media_data,
media_costs=media_costs,
extra_features=np.column_stack([extra_features, search_data]),
kpi=kpi,
time_periods=len(df),
media_names=["TV", "Digital", "SNS"],
extra_features_names=["Temperature", "Holiday", "BrandSearch"],
)
Meridianの制約と注意点
| 制約 | 詳細 | 対策 |
|---|---|---|
| エコシステムの成熟度 | PyMC-Marketingに比べてコミュニティが小さい | 公式ドキュメントとGitHub Issuesを活用 |
| Google検索データの取得 | 正確な検索ボリュームにはGoogleとの契約が必要 | Google Trendsで代替可能(精度は低下) |
| Windows非対応 | JAXの制約でWindowsネイティブは非対応 | WSL2 or Docker を使用 |
| 学習コスト | 独自のデータ構造への理解が必要 | InputDataクラスのドキュメントを熟読 |
| リフトテスト較正 | Geo Liftテストのデータが前提 | 較正なしでも動作するが精度は低下 |
PyMC-Marketing vs Meridian:選択基準
| 観点 | PyMC-Marketing | Meridian |
|---|---|---|
| 言語 | Python(PyMC) | Python(JAX) |
| 柔軟性 | 非常に高い(カスタムモデル容易) | 中程度(フレームワーク内) |
| 地域モデル | 自前実装が必要 | 組み込み対応 |
| R&F対応 | なし | あり |
| 検索データ | 手動追加 | ネイティブ統合 |
| コミュニティ | 大きい(PyMCエコシステム) | 成長中 |
| 本番実績 | HelloFresh, Bolt等 | Google社内実績 |
| 推奨ユースケース | 柔軟なカスタマイズが必要な場合 | 地域データ+Google広告中心の場合 |
詳しいツール比較はMMM主要ツール徹底比較をご覧ください。
まとめ
- MeridianはGoogleが開発するオープンソースMMMで、LightweightMMMの後継
- 地域レベルモデリングとR&Fモデリングが最大の差別化ポイント
- Google検索データの統合により、他ツールでは捉えにくい間接効果を測定可能
- Python 3.11+が必要で、Windows環境ではWSL2推奨
- PyMC-Marketingと比較して、Google広告中心かつ地域データが豊富な場合に特に有効
MMMツールの選択に迷った場合は、ツール比較記事も参考にしてください。