🐈

エンジニア向け Marketing Mix Modeling(MMM)入門 ~基本とPython実装~

に公開

マーケティング部門が「本当に売上に貢献している広告はどれか?」と悩むことがあります。複数の広告チャネル(テレビCMやWeb広告など)に費用を投下したとき、それぞれがどれだけ売上に影響したのかをデータから分析できたら便利ですよね。そうした課題を解決する手法として注目されているのが Marketing Mix Modeling(マーケティング・ミックス・モデリング、略してMMM) です。 (MMM(マーケティング・ミックス・モデリング)とは?特徴、手順や事例などを解説 | 株式会社サイカ) (MMM(マーケティングミックスモデリング)とは?データ収集を効率化するには? - 運用型広告 Unyoo.jp)
本記事では、マーケティング未経験のエンジニアの方にもわかるように、MMMの基本概念とシンプルな実装例、そして実務で使えるオープンソースの高度なMMMツールについてやさしく解説します。

MMMとは?どんな課題を解決できるのか

Marketing Mix Modeling(MMM) とは、テレビやオンライン広告、販促施策など様々なマーケティング施策が売上などの成果に与える影響を統計的に定量化する分析手法です。過去の広告出稿量と売上の時系列データから、それぞれの施策の貢献度合いを推定します。MMMの主な目的は、複数チャネルのマーケティング活動が事業成果をどのように牽引しているかを理解することにあります。これにより、施策ごとの投資対効果(ROI)を明らかにし、マーケティング予算の最適配分(どのチャネルにどれだけ予算を振り分ければよいか)の判断材料とすることができます (MMM(マーケティングミックスモデリング)とは?データ収集を効率化するには? - 運用型広告 Unyoo.jp)。

昨今MMMが改めて注目されている背景には、ユーザートラッキングに頼らずプライバシーに配慮した形でオンライン・オフライン含めた統合的な効果測定ができる点があります。たとえばクッキーに依存しない計測手法として、デジタル広告だけでなくテレビCMや屋外広告(OOH)なども含めて包括的にマーケティング施策の効果を分析できることが評価されています (MMM(マーケティング・ミックス・モデリング)とは?特徴、手順や事例などを解説 | 株式会社サイカ)。このようにMMMは、データドリブンにマーケティングの意思決定を支援できる強力な手法なのです。

Pythonで試すシンプルなMMM実装(線形回帰)

MMMの考え方を掴むため、まずはシンプルな実装例をPythonで試してみましょう。ここでは架空のデータを使って、売上高を複数の広告費用から予測する線形回帰モデルを構築してみます。線形回帰は最も基本的なMMMモデルの一つで、各チャネルの広告費と売上の関係を直線(係数)で表します。

まず、週ごとの売上と広告費のデータを用意します。例えば以下のように、52週分の架空データとして「TV広告費」「オンライン広告費」と「売上」を含むpandas.DataFrameを作成します。

import pandas as pd
import numpy as np

# データ作成(例):Week, TV広告費, オンライン広告費, 売上
np.random.seed(0)
weeks = np.arange(1, 53)
tv_spend = np.random.uniform(50, 150, size=52)      # TV広告費(仮の値)
online_spend = np.random.uniform(20, 100, size=52)  # オンライン広告費(仮の値)

# 売上 = 基本売上 + 0.5*TV広告費 + 0.8*オンライン広告費 + ノイズ
base_sales = 100  
sales = base_sales + 0.5 * tv_spend + 0.8 * online_spend + np.random.normal(0, 10, size=52)

# DataFrameにまとめる
df = pd.DataFrame({
    "Week": weeks,
    "TV_Spend": tv_spend,
    "Online_Spend": online_spend,
    "Sales": sales
})
print(df.head(5))  # 先頭5行を表示

上記では、売上高を「基礎売上(広告ゼロでも出る売上)+ TV広告の効果 + オンライン広告の効果 + ノイズ」としてシミュレートしました。TV広告の効果係数を0.5、オンライン広告の効果係数を0.8と仮定しています(つまり、TV広告費1増やすと売上が0.5増加、オンライン広告費1増やすと売上が0.8増加するモデルです)。print(df.head(5))でデータの一部を表示すると、以下のような内容になっています。

   Week   TV_Spend  Online_Spend   Sales
0     1  104.88     99.07         236.35
1     2  121.52     28.16         167.93
2     3  110.28     36.71         199.39
3     4  104.49     32.90         197.53
4     5   92.37     72.25         215.77
...(中略)...

各行が週次データを表し、例えばWeek1ではTV広告費104.88、オンライン広告費99.07に対して売上236.35という具合です。それではこのデータを使って、売上を広告費から予測する線形回帰モデルを学習してみましょう。

from sklearn.linear_model import LinearRegression

# "Sales"を目的変数、"TV_Spend"と"Online_Spend"を説明変数としてモデル学習
X = df[["TV_Spend", "Online_Spend"]]
y = df["Sales"]
model = LinearRegression()
model.fit(X, y)

# 学習したモデルの係数を表示
print("Intercept:", model.intercept_)
print("Coefficients:", model.coef_)

学習したモデルの**切片 (Intercept)および各説明変数の回帰係数 (Coefficient)**を表示しています。実行結果の一例は以下の通りです。

Intercept: 109.0   (切片)  
Coefficients: [0.48 0.74]   (TV広告費の係数≈0.48、オンライン広告費の係数≈0.74)

この結果から、モデルは切片が約109(広告費0でも平均109の売上がある基礎効果)、TV広告費の係数がおよそ0.48、オンライン広告費の係数がおよそ0.74と推定したことが分かります。概ね設定した真の値(0.5と0.8)に近い係数が学習できていますね。つまり、この単純なモデルではTV広告費1単位あたり約0.48の売上増効果、オンライン広告費1単位あたり約0.74の売上増効果があると推定されたことになります。

このように線形回帰を用いることで、過去データから各広告チャネルの効果をざっくりと推定できます。以上がMMMのごく簡単な実装例ですが、実務でMMMを適用する際には考慮すべき重要なポイントがいくつかあります。次に、その代表例である**「広告効果の飽和」と「広告効果の残存」**について解説します。

広告効果の「飽和」と「残存」とは?

実際のマーケティング効果を分析する上で、単純な線形モデルでは表現しきれない現象があります。特に重要なのが 広告効果の飽和広告効果の残存 です。どちらもMMMモデルを構築する際に取り入れるべき重要な前提なので、順番に見ていきましょう。

(〖MMM活用術 vol.3〗 モデリングの勘所1 - データ変換|Rio) 広告効果の飽和 とは、広告への投資に対する成果が頭打ちになる現象です。最初は広告費を増やすほど売上が伸びていきますが、ある程度以上たくさん広告を打っても追加の売上効果がだんだん小さくなり、ついには飽和してしまいます (MMMの重要性とビジネスへの影響 第2回(応答曲線とアドストック))。上の図は典型的な広告の応答曲線をイメージしたものです。横軸を広告費、縦軸を売上のような成果指標とした場合、グラフはS字型に立ち上がって右側で緩やかに伸びが止まっています。「広告費を2倍にしたからといって売上も2倍になるとは限らない」のが現実であり (How Google LightweightMMM Works - Recast)、線形ではなくこのような漸増的な曲線で広告の効果を捉える必要があるわけです。

一方、広告効果の残存(残存効果、ラグ効果とも呼ばれます)とは、ある期間の広告施策の効果が時間をおいて徐々に薄れていく現象を指します (MMMの重要性とビジネスへの影響 第2回(応答曲線とアドストック))。例えば「今週出稿した広告の効果が翌週以降も一部持続する」ようなケースです。広告を打った直後に売上への寄与がピークになり、その後週を追うごとに少しずつ効果が減衰していくイメージです (MMMの重要性とビジネスへの影響 第2回(応答曲線とアドストック))。この遅延効果をモデルに組み込むことで、より現実に即した分析が可能になります。広告効果の残存を定式化したものはアドストック (Adstock) とも呼ばれ、広告の効果が毎週一定割合で減衰しながら積み重なっていく様子を表現します (Pythonによるマーケティングミックスモデリング(MMM:Marketing Mix Modeling)超入門 その1線形回帰モデルでMMMを作ろう! – セールスアナリティクス) (〖MMM活用術 vol.3〗 モデリングの勘所1 - データ変換|Rio)。

以上の「飽和」と「残存」の考慮により、MMMモデルは**「広告費をどこまで増やすと効率が落ちるか」「過去の広告投資が現在の売上にどれくらい影響しているか」**を捉えることができます (MMMの重要性とビジネスへの影響 第2回(応答曲線とアドストック))。しかし、先ほどのシンプルな線形モデルではこれらを全く考慮していません。その限界について次で説明します。

シンプルな線形モデルの限界と課題

先ほど構築した線形回帰によるMMMモデルは分かりやすい反面、重要な前提(飽和効果・残存効果)を無視しているため現実の複雑な広告効果を十分に表現できません。 (Pythonによるマーケティングミックスモデリング(MMM:Marketing Mix Modeling)超入門 その1線形回帰モデルでMMMを作ろう! – セールスアナリティクス)
例えば、線形モデルでは広告費と売上の関係を常に直線的(リニア)だと仮定しているため、広告費を増やせば無限に効果が増大するとみなしてしまいます。実際には先述の通り効果は頭打ちになりますから、線形モデルのままでは広告予算を大きく変動させた場合の予測精度に限界があります。

また、線形モデルは各週の売上が同じ週の広告施策だけで決まると仮定しています。しかし現実には広告の効果が徐々に減衰しつつ次週・次々週の売上にも影響を及ぼすことがあります(広告効果の残存) (MMMの重要性とビジネスへの影響 第2回(応答曲線とアドストック))。シンプルなモデルではこうしたタイムラグの効果を捉えられないため、短期的な効果に偏重しすぎてしまうという課題があります。

このように、基本的な線形回帰モデルで構築したMMMには「飽和効果を考慮していない」「残存効果を考慮していない」という重要な欠陥があります (Pythonによるマーケティングミックスモデリング(MMM:Marketing Mix Modeling)超入門 その1線形回帰モデルでMMMを作ろう! – セールスアナリティクス)。その結果、モデルが推定するチャネル別の効果やROIが実態とずれてしまうことがあります。では、どうすればこれらの課題に対処できるのでしょうか?

実務のMMM分析では、上記の飽和・残存効果をモデルに組み込むために様々な工夫がなされています。例えば入力データの変換において、広告費をそのまま使うのではなく非線形な関数(対数変換やHill関数など)で変換して飽和効果を表現したり (〖MMM活用術 vol.3〗 モデリングの勘所1 - データ変換|Rio)、過去の広告変数を指数的に減衰させるアドストック変換を適用して残存効果を表現したりします (〖MMM活用術 vol.3〗 モデリングの勘所1 - データ変換|Rio)。こうした前処理を行った上で回帰モデルを当てはめれば、単純な線形モデルより現実に即したMMM分析が可能になります。

とはいえ、自前で飽和や残存を考慮したモデルを一から実装するのは大変です。そこで活用したいのが、あらかじめこうしたロジックを取り入れた オープンソースのMMMツール です。次に、代表的なオープンソースMMMライブラリを2つ紹介します。

オープンソースで進化したMMMツールの紹介

前述の高度なMMMモデルを実装するにあたっては、近年登場したオープンソースのツールを使うのが有力です。特にGoogle社が公開している2つのツールは、飽和効果や残存効果を組み込んだベイズ統計ベースのMMMモデルを手軽に試せるものとして注目されています。

LightweightMMM – Google製の軽量ベイズMMMライブラリ

LightweightMMM はGoogleが公開した軽量なオープンソースのMMMライブラリです。Python上で利用でき、ベイズ推定によりMMMモデルを構築してチャネル別の効果貢献度(アトリビューション)を算出することができます (GitHub - google/lightweight_mmm: LightweightMMM is a lightweight Bayesian Marketing Mix Modeling (MMM) library that allows users to easily train MMMs and obtain channel attribution information.)。LightweightMMMの特徴は、その名の通り比較的軽量で扱いやすい点と、マーケティング施策の飽和やラグ効果をモデル内部でネイティブに推定できる点です (How Google LightweightMMM Works - Recast)。具体的には、先ほど説明した広告の飽和曲線やアドストック率をパラメータとして同時に推定する仕組みが組み込まれており、ユーザが一から変換を実装しなくてもモデルが自動的にそれらを考慮してくれます。

LightweightMMMはNumPyro/JAX上に実装されており、Facebook(Meta)のオープンソースMMMであるRobynがRベースなのに対し、Pythonに慣れたエンジニアでも使いやすいよう設計されています (How Google LightweightMMM Works - Recast)。実務ではLightweightMMMを用いて自社のマーケティングデータにフィットさせ、チャネルごとのROI分析や予算配分のシミュレーションを行うケースも増えてきました。Googleによる2017年の先行研究 (How Google LightweightMMM Works - Recast)をベースに開発された経緯があり、オープンソース公開後は業界で広く参考にされています。

Meridian – 2024年公開の新しいMMMプラットフォーム

Meridian はGoogleが2024年に新たに公開したオープンソースのMMMソリューションです (Google Opens Up Meridian Marketing Mix Model, Helping Marketers Measure Across Channels)。LightweightMMMの後継とも位置付けられており、より高度な機能と使いやすさを備えたMMMプラットフォームとして開発されました (Google Meridian MMM: Features and Limitations - Recast)。Meridianは完全にオープンソースで提供されており、最新のマーケティング計測上の課題に対する革新的な解決策を提供することを目指しています (Meridian  |  Google for Developers)。

Meridianの特徴として、プライバシーに配慮した高度な効果測定(クッキーレス時代を見据えた設計)や、リーチ・頻度データや検索クエリボリュームなどリッチなデータの統合、さらには実験(インクリメンタリティ)の結果との統合によるモデル精度向上など、現代のマーケティングに即した拡張が挙げられます (Meridian  |  Google for Developers) (Meridian  |  Google for Developers)。LightweightMMMと同様にベイズモデルとして実装されており、地理的な階層モデリングや時間変動要因の考慮など高度な分析ニーズにも対応しています (Google Meridian MMM: Features and Limitations - Recast)。GoogleはMeridianをグローバルで数百社の企業とテストを重ねており、2025年から誰でも利用できる形で一般公開しました (Google Opens Up Meridian Marketing Mix Model, Helping Marketers Measure Across Channels)。実際、Meridianリリースと同時に世界中の代理店やコンサル企業がパートナープログラムとして参加しており、業界全体でMMM活用を推進する動きが加速しています (Google Opens Up Meridian Marketing Mix Model, Helping Marketers Measure Across Channels)。

このようにMeridianは、従来は専門家や一部の大企業だけが取り組んでいたMMM分析をオープンソースで広く利用可能にしたプラットフォームとも言えます (Google Launches Meridian, Open-Source MMM For The Masses)。今後はLightweightMMMからMeridianへの移行も進み、より多機能で精度の高いMMM解析が可能になるでしょう。

まとめ:オープンソースMMMでマーケ効果を科学しよう

マーケティングミックスモデリング(MMM)は、複雑なマーケティング施策の効果をデータから導き出す強力な手法です。エンジニアの視点から見ると、MMMはデータサイエンスとビジネスが交差する興味深い領域でもあります。シンプルな線形回帰モデルから出発しても、飽和効果や残存効果といったマーケティング特有の現象を考慮することで、モデルは一気に実践的になります。

本記事ではPythonによる基本的な実装例を紹介しましたが、実務でMMMを適用する際には本格的なモデル構築と検証が必要です。幸い、GoogleのLightweightMMMやMeridianに代表されるオープンソースMMMツールを活用することで、最先端のMMM手法を手軽に試すことが可能となっています (Google Launches Meridian, Open-Source MMM For The Masses)。これらのOSSは広告効果の飽和や残存を考慮したモデルを内包しており、データさえ揃えば比較的短期間で高度な分析を行えるでしょう。

エンジニアの皆さんもぜひ一度、手元のマーケティングデータでMMM分析にチャレンジしてみてください。オープンソースの力を借りれば、マーケティングの世界をデータで科学的に捉えることができるはずです。MMMを活用した洞察は、マーケターとの議論やビジネス戦略立案にもきっと役立つことでしょう。これを機に、データ駆動型のマーケティング効果測定に一歩踏み出してみましょう。

参考文献・出典:本記事では以下の資料を参考にしました。

Discussion