はじめに
本記事では、PyMC-Marketingを使ったMMMモデルの実装手順を、データ準備からROAS算出・予算最適化まで10ステップで解説します。
前記事「PyMC-Marketing完全入門」でライブラリの全体像を理解した前提で、ここではコードを中心とした実践的な内容に集中します。各ステップにPythonコード、期待される出力、解釈ガイド、よくある落とし穴を付けていますので、自分の環境で実行しながら進められます。
使用するデータ
PyMC-Marketing公式のサンプルデータ(mmm_example.csv)を使用します。追加のデータ準備は不要です。
- 179行(約3.4年分の週次データ)
- 2つのマーケティングチャネル(x1, x2)
- 目的変数: y(売上に相当)
各ステップの所要時間
| ステップ | 内容 | 所要時間(CPU) |
|---|---|---|
| Step 0 | 環境構築 | 5-10分 |
| Step 1 | データ読み込みとバリデーション | 5分 |
| Step 2 | モデル定義 | 5分 |
| Step 3 | 事前予測チェック | 2-3分 |
| Step 4 | MCMC推論 | 3-10分 |
| Step 5 | 収束診断 | 5分 |
| Step 6 | チャネル貢献度 | 3分 |
| Step 7 | ROAS算出 | 3分 |
| Step 8 | 予算最適化 | 3分 |
| Step 9 | モデル保存 | 1分 |
| 合計 | 約35-50分 |
Step 0: 環境構築
インストール
# pip(最もシンプル)
pip install pymc-marketing
# conda-forge(依存関係の解決が確実)
conda install -c conda-forge pymc-marketing
# Docker(環境分離したい場合)
docker pull pymclabs/pymc-marketing:latest
# GPU加速(オプション: NumPyro/BlackJAXバックエンド使用時)
pip install "jax[cuda12]"
# Rust製高速サンプラー(オプション: CPU環境での高速化に推奨)
pip install nutpie
動作確認コード
import pymc_marketing
import pymc as pm
import arviz as az
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
print(f"PyMC-Marketing: {pymc_marketing.__version__}")
print(f"PyMC: {pm.__version__}")
print(f"ArviZ: {az.__version__}")
# GPU確認(NumPyroバックエンド使用時)
try:
import jax
print(f"JAX: {jax.__version__}, devices: {jax.devices()}")
except ImportError:
print("JAX未インストール(GPU不使用)")
# Nutpie確認
try:
import nutpie
print(f"Nutpie: {nutpie.__version__}")
except ImportError:
print("Nutpie未インストール(NUTSバックエンドを使用)")
期待される出力
PyMC-Marketing: 0.18.2
PyMC: 5.x.x
ArviZ: 0.x.x
JAX未インストール(GPU不使用)
Nutpie未インストール(NUTSバックエンドを使用)
解釈ガイド
PyMC-Marketingのバージョンが0.18.x以上であることを確認してください。0.17以前ではAPIが一部異なります。JAXやNutpieはオプションで、初回はNUTSバックエンド(追加インストール不要)で十分です。
システム要件
| 項目 | 要件 |
|---|---|
| Python | 3.11以上 |
| メモリ | 8GB以上(大規模データは16GB推奨) |
| GPU | オプション(NumPyro/BlackJAX使用時。CUDA 11.8+) |
| ディスク | 2GB以上(ライブラリ + モデル保存用) |
よくあるトラブル
| エラー | 原因 | 対処 |
|---|---|---|
ModuleNotFoundError: pymc | pip環境の不整合 | conda create -n pymc python=3.12 で新規環境作成 |
theano 関連のエラー | 古いTheanoとの競合 | pip uninstall theano-pymc でTheanoを削除 |
jax + CUDA エラー | JAXとCUDAバージョン不整合 | pip install "jax[cuda12]" で明示的に指定 |
nutpie インストール失敗 | Rustビルド環境不足 | pip install nutpie --no-build-isolation |