Google Meridianとは?できること・使い方・Robynとの違い
「MMMを試してみたいが、専門ベンダーに数百万円を払う前に、まず中身を確かめたい」——そう考えたことはないでしょうか。
2025年1月、GoogleがMMM(マーケティングミックスモデリング)のライブラリ「Meridian」をオープンソースで正式公開しました。ライセンス費用はかからず、モデルの中身もコードとして全部見えます。MMMが「専門ベンダーに頼むしかないもの」ではなくなった、という意味では小さくない変化です。
そこでこの記事では、Meridianで何ができるのか、必要なデータの条件、インストールから分析までの流れ、Meta RobynやLightweightMMMとの違いを、順を追って解説します。
想定しているのは、自社でMMMを試したい分析・データ担当の方と、外部に依頼する前に「何を使って、どこまでできるのか」を把握しておきたい責任者の方です。実際にMeridianを使ってMMM分析を提供している立場から、公式ドキュメントのどこに何が書かれているかを整理し、判断に必要なところまで噛み砕いて書きました。
Google Meridianとは|Googleが公開したオープンソースのMMMライブラリ
Google Meridianとは、Googleが公開しているオープンソースのMMMライブラリです。Pythonで動き、ライセンス費用はかかりません。媒体別のROI推定、予算配分の最適化、リーチ・フリークエンシーを考慮した動画広告の評価などができます。
MMMは、広告や販促の効果を「その施策がなかった場合との差」で測る分析手法です。これまで日本では、専門のリサーチ会社や代理店に依頼する以外の選択肢がほとんどありませんでした。Meridianが変えたのは、その前提です。モデルの構造も推定の方法もコードとして公開されており、誰でも読めて、動かせて、必要なら書き換えられます。
LightweightMMMの後継という位置づけ
Googleは以前からLightweightMMMというMMMライブラリを公開していました。公式ドキュメントは、Meridianを「GoogleのMMM手法の公式な進化形であり、LightweightMMMの更新版」と明記しています。どちらも2017年以降のGoogleのベイズMMM研究にもとづくもので、系譜としては地続きです。
ただし中身はかなり変わりました。ベイズ推定に使うライブラリがNumPyroからTensorFlow Probabilityに変わり、モデル構造も、LightweightMMMの3種類(Adstock / Hill-Adstock / Carryover)からHill-Adstock系に一本化され、変換の適用順を設定で選ぶ形になっています。加えて、リーチ・フリークエンシーへの対応、実験によるキャリブレーションの自動化、入力データの自動スケーリング、地域をまたいだ階層的なコントロール変数などが追加されました。
LightweightMMMはすでにサポートを終了しており、公式にMeridianへの移行が推奨されています。これから始めるなら、選択肢はMeridianです。
公開の経緯と現在の状況
Meridianの最初のバージョン(1.0.0)がPyPIで公開されたのは2025年1月27日です。ソースコードはGitHubで公開され、PyPIから google-meridian という名前で配布されています。日本語のドキュメントも公式サイトに用意されています。
誤解されやすい点を1つだけ書いておくと、これは「Google広告の成果を良く見せるためのツール」ではありません。MMMは媒体をまたいで同じ基準で比較するための手法で、Meridianのモデルにも特定の媒体を優遇する仕組みは入っていません。とはいえ、事前分布の置き方など設定の判断が結果に影響することは事実なので、この点は注意点の章であらためて扱います。
Meridianでできること
Meridianでできることは、大きく4つです。媒体別のROIを推定すること、リーチ・フリークエンシーを使って動画広告を評価すること、予算配分の最適化をシミュレーションすること、そして実験の結果をモデルに組み込むキャリブレーションです。
媒体別のROIを推定する
検索広告、SNS、動画、TVCM、OOH、販促——それぞれが売上などのKPIをどれだけ動かしたかを、共通の基準で推定します。公式ドキュメントはこれを「マーケティングの真の因果的影響を推定する」と表現しています。管理画面のROASのように媒体ごとに定義が違う数字ではなく、同じモデルの中で比較できる形で出てくるのが要点です。
リーチ・フリークエンシーを考慮して動画の効果を測る
Meridianは、インプレッション数だけでなくリーチ(期間内のユニークな接触人数)とフリークエンシー(1人あたりの平均接触回数)を入力として扱えます。
インプレッションだけで見ると、「同じ10人に10回ずつ届いた」と「100人に1回ずつ届いた」が同じ数字になってしまいます。リーチとフリークエンシーを分けて入れると、「接触人数を広げるべきか、接触回数を増やすべきか」を分けて考えられます。動画広告の設計では、ここが実際の打ち手の分かれ目になります。
予算配分の最適化をシミュレーションする
推定した反応曲線をもとに、予算を組み替えたときのKPIを試算できます。総額を変えずに配分だけ替えるシナリオ、総額を増やすシナリオなど、判断したい形に合わせて比較できます。MeridianにはBudgetOptimizerという専用のクラスが用意されており、最適化の結果はレポートとして書き出せます。
インクリメンタリティテストの結果を事前情報として組み込む
地域を分けて実施する実験(ジオリフト、インクリメンタリティテスト)でROIを測っている場合、その推定値を事前分布としてモデルに与えられます。「実験でこの媒体のROIはこの範囲だと分かっている」という知見を、MMMの推定に反映させる形です。
LightweightMMMでは手作業だったこのキャリブレーションが、Meridianでは仕組みとして用意されました。実験とMMMは対立する手法ではなく、実験の精度をMMMの広さに持ち込めるのが本来の使い方です。
Meridianの特徴|他ライブラリとの技術的な違い
技術的な特徴は3つです。ベイズ統計で推定するため結果が「幅」で出ること、地域単位のデータを階層モデルで扱って情報量を増やせること、そして事前分布として外部の知見を組み込めることです。
ベイズ統計にもとづく推定(TensorFlow Probability)
Meridianは、TensorFlow Probabilityを使ってベイズ推定を行います。MCMC(ハミルトニアン・モンテカルロ系のサンプラー)でパラメータの事後分布を求めるため、結果は1つの数値ではなく分布として出てきます。「この媒体のROIは1.2〜2.8の範囲」と、確からしさごと受け取れるということです。
意思決定の場面では、この幅があるかどうかで話が変わります。推定値が2.0でも、幅が1.8〜2.2なのか0.3〜5.0なのかで、その数字にどれだけ乗ってよいかが違うからです。
地域単位(geo-level)でサンプルサイズを増やす設計
MMMの根本的な制約は、データの行数が少ないことです。全国の週次データを3年分集めても156行しかありません。そこでMeridianは、地域×週のデータを階層ベイズモデルで扱う設計を標準にしています。地域ごとに別々のモデルを作るのではなく、地域間で情報を共有しながら、地域差も捉えます。
公式ドキュメントは、地域単位のデータを使うほうが「統計的な情報量が多く」、媒体効果の推定が改善すると説明しています。地域別の示唆が得られるという副次的な利点もあります。なお、観測が極端に少ない地域は、モデルに入れる前に除外することが推奨されています。
事前分布(prior)の設定
ベイズ推定なので、各パラメータに事前分布を置きます。Meridianでは媒体のROIに対する事前分布が既定で LogNormal(0.2, 0.9)、全チャネル一律で設定されており、これをチャネルごとに変えられます。有料メディア、リーチ・フリークエンシーのチャネル、オーガニックメディア、非メディア施策(価格や販促)で、それぞれ別の指定が可能です。
事前分布以外にも、結果に効く設定がいくつもあります。アドストックの減衰関数(geometric か binomial)、飽和(Hill関数)をアドストックの前に掛けるか後に掛けるか、時間変動する切片を表すノット(knots)の数と位置——ノットは自動選択(AKS)に任せることもできますが、手で指定することも、両方を組み合わせることもできます。
Meridianに必要なデータ
必要なのは、KPI、媒体ごとの費用と露出量、そしてコントロール変数です。粒度は週次が推奨されており、期間の目安は地域単位のモデルで2年(104週)以上、全国単位のモデルで3年以上とされています。
必須の項目と粒度
| 区分 | 内容 | 補足 |
|---|---|---|
| KPI | 売上、コンバージョン、アプリインストールなど | 売上以外のKPIなら、1件あたりの収益も入れておくとROIが解釈しやすくなる |
| メディアデータ | 媒体×地域×期間の露出量(インプレッション、クリックなど) | 合計できる量であること。CTRのような率は不可 |
| メディア費用 | メディアデータと同じ粒度の費用 | 媒体・期間の切り方を揃える |
| コントロール変数 | KPIと媒体投下の両方に効く交絡要因(競合の動き、指名検索の量、祝日など) | 季節性は自動調整の仕組みもある |
| 任意 | 地域人口、リーチ・フリークエンシー、オーガニック施策(メルマガ・SNS投稿など)、非メディア施策(価格・販促・パッケージ変更) | 用意できる範囲で入れる |
粒度は週次がベストプラクティスとされています。日次でも扱えますが実行時間が伸び、月次は収束が悪くなって推定の幅が広がりやすくなります。
見落とされやすいのが、欠損値が許容されないという点です。出稿していない期間の媒体データはゼロで埋め、KPIやコントロール変数は補間して埋める必要があります。実務でいちばん時間を使うのは、モデルの設定ではなくこの整形作業です。
リーチ・フリークエンシーを使う場合の追加要件
リーチ・フリークエンシーを使う場合、媒体×地域×期間の粒度で、リーチ(ユニークな接触人数)とフリークエンシー(総インプレッション÷リーチ)の両方が必要になります。単一の露出指標の代わりに使う形なので、両方が揃わない媒体では使えません。
なお、リーチ・フリークエンシーのチャネルは「合計できる量であること」という要件の対象外になります。リーチは期間をまたいで単純に足せない指標なので、そこは仕様として例外扱いされています。
データが足りないときにどうするか
期間が足りないときにまず検討するのは、地域で分けられないかです。全国単位なら3年必要なところ、地域単位なら2年が目安になります。地域数が増えれば、その分だけモデルに使える情報量が増えます。
媒体の粒度が細かすぎる場合は、統合するのも手です。似た性質の媒体をまとめれば、1媒体あたりの変動が大きくなり、効果を分離しやすくなります。ただし、統合してしまえばその中の内訳は分かりません。何を捨てるかの判断になります。
そして、どうやっても条件を満たさないなら、無理にモデルを作らないほうが良い結果になります。出稿量が動いていない媒体や、常に同じ比率で一緒に増減する媒体同士は、どんなツールを使っても効果を分離できません。これはMeridianの制約ではなく、MMMという手法そのものの制約です。
Meridianの使い方|インストールから分析までの流れ
流れは、環境構築 → データの読み込み → モデルの設定 → 事前分布と事後分布のサンプリング → 収束の確認 → レポート出力と予算最適化、の順です。すべてPythonから実行します。
ここではコードを最小限にとどめ、全体の流れが追える粒度で示します。実際に動かす場合は、公式のデモノートブックが最短です。
環境構築(PyPI・推奨環境)
PyPIから google-meridian をインストールします。Linux環境でNVIDIAのGPUを使う場合は、CUDA向けの追加指定を付けます。
# CPU(macOSなど)
python3 -m pip install --upgrade google-meridian
# Linux + NVIDIA GPU(CUDAツールチェーンが必要)
python3 -m pip install --upgrade 'google-meridian[and-cuda]'Pythonは3.11以降が必要です。公式はGPUでの実行を推奨しており、動作確認された構成としてV100やT4(メモリ16GB)が挙げられています。CPUでも動きますが、学習にかかる時間が大きく変わります。なお、macOSには公式のGPU対応がありません。
データの読み込み
用意したデータフレームを、KPI・メディア・コントロール変数といった役割ごとに指定して InputData を組み立てます。ここで列の対応づけを間違えると、以降すべてがずれるので、いちばん慎重にやる工程です。
from meridian.data import data_frame_input_data_builder as builder
input_data = (
builder.DataFrameInputDataBuilder(df)
.with_kpi(...) # 売上・CVなどの目的変数
.with_revenue_per_kpi(...) # KPI 1件あたりの収益(売上以外のKPIのとき)
.with_media(...) # 媒体ごとの露出量と費用
.with_controls(...) # コントロール変数
.build()
)モデルの設定と学習
ModelSpec で事前分布やアドストック・飽和の設定を決め、モデルを組み立ててからサンプリングします。事前分布のサンプリングを先に行うのは、設定した事前分布が意図した範囲になっているかを確認するためです。
from meridian.model import model, spec, prior_distribution
model_spec = spec.ModelSpec(prior=prior_distribution.PriorDistribution(...))
mmm = model.Meridian(input_data=input_data, model_spec=model_spec)
mmm.sample_prior(500)
mmm.sample_posterior(n_chains=10, n_adapt=2000, n_burnin=500, n_keep=1000)n_chains や n_keep といった引数は、MCMCを何本・何回走らせるかの指定です。上の値は公式デモの設定で、大きくするほど推定は安定しますが、そのぶん時間がかかります。
結果の可視化
学習が終わったら、まず収束を確認します。r-hat(各チェーンがきちんと同じ分布に収束したかを見る指標)や、実績と予測の当てはまりを確認したうえで、結果のレポートを出力します。
from meridian.analysis import summarizer, optimizer
# 収束と当てはまりの診断(r-hat、実績 vs 予測)
# → 問題があればモデル設定に戻る
summarizer.Summarizer(mmm).output_model_results_summary(...) # HTMLレポート
optimizer.BudgetOptimizer(mmm).optimize() # 予算配分の最適化Summarizer は結果をまとめたHTMLレポートを出力します。学習済みのモデルは保存でき、後から読み込み直して最適化のシナリオだけ変えることもできます。
MeridianとRobyn・LightweightMMMの違い
現在も開発が続いている選択肢は、GoogleのMeridianとMetaのRobynの2つです(LightweightMMMは終了)。最大の違いは推定の考え方で、Meridianはベイズ、Robynはリッジ回帰と進化的アルゴリズムによる探索です。
| 項目 | Google Meridian | Meta Robyn | LightweightMMM |
|---|---|---|---|
| 提供元 | Meta | ||
| 言語 | Python | R(Python版はベータ) | Python |
| 推定の考え方 | ベイズ(TensorFlow Probability・MCMC) | リッジ回帰+Nevergradによる探索 | ベイズ(NumPyro) |
| 結果の出方 | 事後分布=幅で出る | 点推定(幅はブートストラップで出す) | 事後分布 |
| リーチ・フリークエンシー | 対応 | 非対応 | 非対応 |
| 実験によるキャリブレーション | 仕組みとして用意 | 対応 | 手作業 |
| サポート状況 | 現行 | 現行 | 終了(Meridianへの移行を推奨) |
どちらが優れているという話ではありません。判断軸になるのは3つです。結果を「幅」で受け取りたいか(ベイズかどうか)、社内にPythonとRのどちらの資産があるか、そして動画のリーチ・フリークエンシーを扱いたいか。認知施策への投資が大きく、動画の設計を判断したい場合は、リーチ・フリークエンシーに対応しているMeridianが選びやすくなります。
Meridianを使うときの注意点
注意点は3つです。学習に時間とマシンリソースがかかること、事前分布の置き方で結果が動くこと、そしてデータが条件を満たさなければ精度が出ないことです。オープンソースであることは、これらを解決してくれません。
計算時間とマシンリソース
MCMCでサンプリングするため、学習には時間がかかります。公式ドキュメントも、Meridianの学習はLightweightMMMより時間がかかると明記しています(そのぶん精度の向上が期待できる、という説明とセットです)。地域単位のモデルは特に重くなります。
実務上の要点は、「1回回して終わり」ではないことです。設定を変えて何度も回し、結果を見比べながら詰めていく前提で時間を見積もる必要があります。GPUが推奨されているのは、この試行回数を確保するためでもあります。
事前分布の設定が結果を大きく左右する
既定のROI事前分布は全チャネル一律の LogNormal(0.2, 0.9) です。実態と大きく違えば、結果はその設定に引っ張られます。「オープンソースだから誰が回しても同じ結果が出る」わけではありません。
これは欠陥ではなく、ベイズ推定の性質です。少ないデータから推定するために外部の知見を使う仕組みなので、その知見が妥当かどうかが結果を左右します。だからこそ、出てきた数値を実際の施策の中身と照らして確認する工程が要ります。
データが少ない場合の限界
公式の目安(地域単位で2年、全国単位で3年)は、「これだけあれば必ず出る」ではなく「これを下回ると厳しい」という下限として読むべきものです。期間を満たしていても、出稿量が動いていなければ効果は読み取れません。
繰り返しになりますが、これはツールの性能の話ではありません。MMMは変動から効果を推定する手法なので、変動がなければ何も推定できません。Meridianを使えば解決する、という種類の問題ではないということです。
よくある質問(FAQ)
Q01Meridianは無料で使えますか?
ライブラリ自体はオープンソースで公開されており、ライセンス費用はかかりません。ただし「無料で使える」ことと「無料で分析できる」ことは別です。学習にはGPUを推奨する環境が必要で、それ以上に、データを整えて同じ粒度に揃える作業、モデルの設定、結果が妥当かを判断する工程に人の時間がかかります。費用の中身はほぼこの人の時間です。
Q02Googleのライブラリなので、Google広告に有利な結果が出ませんか?
モデルの構造も推定の方法もコードとして公開されており、特定の媒体を優遇する仕組みは入っていません。ただし、媒体ごとの事前分布をどう置くか、指名検索の量をコントロール変数に入れるかといった設定の判断は結果に影響します。中立性はツールが自動的に保証するものではなく、設定と検証で担保するものだと考えるのが実務的です。
Q03Pythonが書けないと使えませんか?
自社で分析を回す場合はPythonの実行環境と、コードを読み書きできる人が必要です。分析を外部に委託する場合は不要で、その場合に用意するのはデータだけになります。Meridianはツールとして導入するものではなく、分析の中で使われるライブラリです。
Q04データは何年分あればいいですか?
公式ドキュメントの目安は、地域単位(geo-level)のモデルなら週次で2年(104週)以上、全国単位のモデルなら3年以上です。月次データの場合も3年以上が推奨されています。これは「これだけあれば必ず良い結果が出る」という水準ではなく、「これを下回ると厳しい」という下限として読むのが実際に近いです。
Q05LightweightMMMで作ったモデルはそのまま使えますか?
使えません。LightweightMMMはサポートを終了しており、公式にMeridianへの移行が推奨されています。ベイズ推定に使うライブラリ(NumPyroとTensorFlow Probability)もモデル構造も異なるため、移行は設定の書き換えではなくモデルの作り直しになります。
Q06Meridianを入れれば、社内でMMMを回せるようになりますか?
ライブラリを動かすだけなら可能です。ただし継続的に回すには、毎回データを同じ形に整える仕組みと、出てきた数値が実際の施策と矛盾していないかを判断できる人が必要になります。MMMで時間がかかるのはモデルの学習ではなく、この前後の工程です。
Google Meridianは、MMMを「試せるもの」に変えた|まとめ
Google Meridianは、Googleが公開しているオープンソースのMMMライブラリです。媒体別のROI推定、リーチ・フリークエンシーを使った動画広告の評価、予算配分の最適化、実験結果によるキャリブレーションができ、ライセンス費用はかかりません。LightweightMMMの後継にあたり、そちらはすでにサポートを終了しています。
MMMがこれまで「専門ベンダーに数百万円を払って依頼するもの」だったことを考えると、これは大きな変化です。少なくとも、中身が見えないまま判断する必要はなくなりました。
一方で、Meridianが解決したのはツールの部分だけです。データを同じ粒度に揃える作業、事前分布をどう置くかの判断、出てきた数値が実態と合っているかの検証——費用の大半を占めていたこれらの工程は、そのまま残っています。Meridianは「MMMを試せるもの」に変えましたが、「誰でも回せるもの」にしたわけではありません。この線引きを踏まえたうえで、自社でやるか、委託するかを決めるのが現実的です。
いずれにしても出発点は同じで、いま手元にあるデータが条件を満たしているかどうかです。まずはそこを確かめるところから始めてください。
この記事のポイント
- Google Meridianは、Googleが公開しているオープンソースのMMMライブラリ。Pythonで動き、ライセンス費用はかからない。LightweightMMMの後継にあたり、そちらはサポートを終了している。
- できることは、媒体別ROIの推定、リーチ・フリークエンシーを使った動画広告の評価、予算配分の最適化、実験結果を事前情報として組み込むキャリブレーションの4つ。
- 必要なデータは、KPI・媒体ごとの費用と露出量・コントロール変数。粒度は週次が推奨で、期間の目安は地域単位で2年、全国単位で3年。欠損は許容されない。
- 推定はベイズ(TensorFlow Probability)で、結果は1つの数値ではなく幅で出る。事前分布の置き方が結果を左右するため、「誰が回しても同じ」にはならない。
- Robynとの最大の違いは推定の考え方。Meridianはベイズ、Robynはリッジ回帰+進化的アルゴリズムによる探索で、Robynの結果は点推定になる。