調整とは、テスト結果やその他のドメイン知識に基づいて、チャネル固有の事前分布を設定するプロセスです。
メリディアンのデフォルトの事前分布は、適度に情報量が多く、データにはノイズが含まれることがあります。介入群の事前分布を調整すると、厳密なテストや専門的な予測など、実際のビジネス知識に基づいてモデルを「ガイド」できるため、多くの場合役に立ちます。
調整済みの事前分布は、「ガードレール」のようなものだと考えてください。ガードレールの強度を抑えたり、ガードレール自体を撤去(無情報事前分布の形式)したりしたいと思うかもしれませんが、これにはリスクがあり、モデルの結果の質の低下につながる可能性があります。詳しくは、フラットな事前分布と正則化をご覧ください。
たとえば、事前分布の強さが十分でない場合、費用が少ないチャネルで大きな収益が生み出されているとモデルで推定されることがあります。事前分布を調整すると、モデルの推定値を現実的な範囲に誘導できます。
事前仮説を策定する
事前分布の調整は正確な計算ではなく、データとドメイン知識および主観的な判断を組み合わせたものです。
指標を選択したら、調整に進むことができます。調整を行う際は、次の点を考慮してください。
インクリメンタリティ テストを使用する
インクリメンタリティ テストは、直感を形成するための最も強力な基盤と言えるかもしれませんが、テスト結果を事前分布に変換することは、正確な公式ではありません。
テストに基づいて事前分布を設定する
テスト結果を事前分布に変換する単一の公式はありません。ベイズ推定における事前知識はより広範に定義されており、定式化された計算である必要はありません。1 つのテスト結果を厳密に適用するのではなく、複数のテスト結果やその他のドメイン知識などのさまざまな証拠と、それらの不確実性を組み合わせて、1 つの事前分布を作成できます。
さらに、テストと MMM ではエスティマンドと測定目標、つまり、ROI の定義が異なることがよくあります。テストは、期間、地域、キャンペーン設定など、テストの特定の条件に関連しています。テストから関連性の高い情報を得ることができますが、テスト結果を MMM の事前分布に変換する場合、テストの標準誤差を超える不確実性が生じることにご留意ください。
このワークフローを効率化するために、メリディアンには CalibrationBuilder が用意されています。これは、インクリメンタリティ テストを調整済みの ROI 事前分布に自動的に変換するもので、Meridian GeoX と直接統合されています。過去のテストから事前分布を調整し、費用、リピート間隔、期間の違いを考慮する方法について詳しくは、過去のテストを基にカスタムの ROI 事前分布を設定するをご覧ください。
関連性に関する考慮事項
過去のテストを使用する場合は、その関連性を慎重に検討する必要があります。テスト結果を事前分布の計算に使用する前に、以下の点について考えてみてください。
- リピート間隔: テストは、MMM データの対象期間前、期間中、または期間後に実施しましたか?異なる期間の結果は、直接適用できない場合があります。
- 期間: テストは、マーケティングの長期的な効果を把握するのに十分な期間実施しましたか?短期間のテストでは、期間が十分でない可能性があります。
- メディアの粒度: テストでは、MMM と同じ粒度でメディアを測定しましたか?たとえば、キャンペーン単位のテストを使用して、チャネル単位の MMM を調整します。
- 人口の違い: テストのターゲットには、MMM で考慮されるのと同じ人口を設定しましたか?
- 複雑さ: テストに複数のチャネルが含まれている場合、個々のチャネルのパフォーマンスに関する明確な分析情報を得るのが難しいことがあります。
- エスティマンドの違い: MMM の反事実的条件法は費用ゼロですが、一部のテストでは、費用の削減など、異なるベースラインに対する ROI が定義される場合があります(ゼロ以外の反事実的条件法)。限界リフトを測定するテストでは、MMM の費用ゼロの反事実的条件法とのエスティマンドの不一致が生じます。
Meridian GeoX を使用した自動調整
メリディアンの事前調整手法とMeridian GeoX テスト フレームワークは、これらの考慮事項に対処するのに役立ちます。
- 調整手法(
CalibrationBuilder): 最新性(古いテストに不確実性を追加する調整による)と期間(Adstock 減衰キャリーオーバーに基づいて点推定値をスケーリングし、不確実性を高める調整による)を自動的に考慮します。また、テストとモデル化された MMM チャネル間の費用規模とメディアの粒度の違いを考慮して、費用調整を適用します。また、オプションのユーザー調整引数を使用して、複雑さを調整することもできます。詳しくは、過去のテストを基にカスタムの ROI 事前分布を設定するをご覧ください。 - Meridian GeoX のテスト設計: 地域単位で層化サンプリングを採用することで、地理的な代表性(母集団の違い)をサポートし、介入群と対照群が MMM でモデル化されたより広範な地理的母集団を代表するようにします。
ドメイン知識と直感を使用する
可能な場合は、できるだけドメイン知識を使って事前分布を計算してください。事前分布の設定とは、各マーケティング チャネルのパフォーマンスの妥当な値の範囲を直感的に定義することです。このプロセスでは、ドメイン知識、過去の結果、業種別ベンチマーク、特にインクリメンタリティ テストなど、さまざまなソースから得られた情報を組み合わせて判断を下すことが必要になります。
インクリメンタリティ テストは、直感を形成するための最も強力な基盤と言えるかもしれませんが、テスト結果を事前分布に変換することは、正確な公式ではありません。テストにも制限があり、テストによって異なる結果がもたらされることがあります。ROI 事前分布は、入手可能なすべての情報を統合したものである必要があります。
チャネルのパフォーマンスに関する直感が弱い場合は、弱い事前分布(標準偏差が大きいもの)を設定しても問題ありません。ただし、直感が強い場合は、事前分布を通じて組み込むことでモデルが強化され、データ内のノイズの影響を受けにくくなります。
実際には、ほとんどの場合、なんらかの直感を持っています。たとえば、ほとんどのチャネルで、因果 ROI が 50 になる確率はかなり低いと思われるでしょう。長年にわたって多くのテストを実施してきた企業で、特定のチャネルの ROI が 6 を超えたことがない場合は、6 より大きい ROI 値に非常に低い確率を割り当てることで、事前分布にこの事実を反映させる必要があります。手持ちの情報をすべて使って、事前分布を計算してください。
事前分布の設定内容にかかわらず、プロットしてパーセンタイルを確認することをおすすめします。確率が自分の予想と一致しているかどうかを確認してください。たとえば、事前確率分布の 80% が ROI 1.0 を上回っている場合、そのチャネルの収益性に対する事前分布の信頼度を反映しているでしょうか。
信頼度を使って事前分布の標準偏差を設定する
事前仮説の信頼度を使って、事前分布の標準偏差を計算します。類似した ROI ポイントの推定値が得られた複数のテストや、過去の MMM の結果などに基づき、チャネルの効果について強い確信がある場合、事前分布の標準偏差を小さく設定して、強い信頼度を示すことができます。逆に、テスト結果が MMM にどの程度つながるか懐疑的な場合は、より大きな標準偏差を使って、その不確実性を反映できます。なお、事前分布は厳密な制約ではなく、出発点にすぎません。データが事前分布と矛盾する強力な証拠を示している場合、モデルはそれに応じて調整され、事前分布の標準偏差によって、初期の仮説とデータの証拠に与えられる重みが決まります。
コードの例
次の例は、メリディアンでカスタム ROI 事前分布を設定する方法を示しています。
例: テストに基づいて ROI 事前分布を調整する
テスト結果に基づいて ROI 事前分布を調整する方法については、過去のテストを基にカスタムの ROI 事前分布を設定するをご覧ください。
例: 対数正規 ROI 事前分布を定義する
対数正規分布は、ROI 事前分布によく使用される分布です。メリディアンには、事前分布に関する知識に基づいて対数正規分布を構築するためのヘルパー関数が 2 つあります。
prior_distribution.lognormal_dist_from_mean_std: 指定された平均値と標準偏差から対数正規分布を構築します。prior_distribution.lognormal_dist_from_range: 指定された確率質量(95% など)が特定の下限と上限の範囲内に収まる対数正規分布を構築します。
平均値と標準偏差から LogNormal 分布を構築する場合:
import numpy as np
from meridian.model import prior_distribution
mean = [1.0, 3.0] # Point estimate
std = [0.3, 2.0] # Standard deviation
# Define the LogNormal distribution
lognormal_dist = prior_distribution.lognormal_dist_from_mean_std(mean, std)
# Define the PriorDistribution object
prior = prior_distribution.PriorDistribution(roi_m=lognormal_dist)
範囲から LogNormal 分布を構築する場合:
import numpy as np
from meridian.model import prior_distribution
low = [0.1, 0.5] # Range lower bound
high = [2.0, 10.0] # Range upper bound
mass_percent = 0.95 # Probability mass
# Define the LogNormal distribution
lognormal_dist = prior_distribution.lognormal_dist_from_range(
low, high, mass_percent=mass_percent
)
# Define the PriorDistribution object
prior = prior_distribution.PriorDistribution(roi_m=lognormal_dist)
カスタム事前分布、特に ROI 事前分布をプロットして可視化することを強くおすすめします。これにより、カスタム事前分布が事前分布の期待値と一致しているかどうかを再確認できます。
from matplotlib import pyplot as plt
from meridian.model import prior_distribution
import numpy as np
# Define the LogNormal distribution
lognormal_dist = prior_distribution.lognormal_dist_from_mean_std(2.0, 0.5)
# Plot a histogram of samples from the LogNormal distribution
plt.hist(lognormal_dist.sample(1000))
事前分布をプロットして直感と一致していることを確認する
カスタム事前分布、特に ROI 事前分布をプロットして可視化することをおすすめします。これにより、分析に進む前に、カスタム事前分布が期待値と一致しているかどうかを再確認できます。
介入群の事前分布の調整に関するその他の考慮事項
このセクションでは、介入群の事前分布の調整に関するその他の考慮事項について説明します。
ROI の調整期間を考慮する
事前分布情報が特定の期間にのみ関連する場合は、ModelSpec で roi_calibration_period 引数を使用することを検討してください。ただし、可能な限り、モデリングの全期間に事前分布を設定することをおすすめします。この事前分布を設定するには、テストやドメイン知識など、利用可能なすべての情報を使用する必要があります。詳しくは、費用対効果の調整期間の設定をご確認ください。
事前分布と事後分布の変化を把握する
事前分布と事後分布間の分布の変化を比較することで、モデルがデータから学習しているかどうか、または調整した事前分布から強く影響を受けているかどうかを判断できます。
詳しくは、メリディアンのモデリング後の品質チェックで事前分布と事後分布の変化をご確認ください。