介入群の事前分布のタイプを選択する方法

介入群変数の各タイプ(有料、オーガニック、メディア以外)には、さまざまな事前分布タイプのオプションがあります。ROI と mROI の事前分布は、有料メディアでのみ使用できます。貢献度と係数の事前分布は、任意のタイプの介入群で使用できます。事前分布のタイプを選択する際は、次の点を考慮してください。

ROI 事前分布は、テスト結果などの事前知識を反映させやすいことが多いため、デフォルトになっています。これは通常、十分な情報に基づく事前分布の最も直感的なオプションです。

mROI 事前分布は、最適な予算配分を過去の予算配分に合わせて抑制し、推奨予算調整を正則化したい場合に使用できます。これは、すべてのチャネルで共通の平均値をもつ mROI 事前分布を設定し、標準偏差を調整することで実現できます。事前分布の強度が高いほど(標準偏差が小さいほど)、最適な配分は過去の配分に近づきます。なお、最適化費用の制約を使用して推奨予算調整を制限することも可能です。その場合、ほとんどのケースで mROI 事前分布を使用する必要がなくなります。詳しくは、サブセクション「有料メディアの ROI と mROI の事前分布の比較」をご覧ください。

有料メディアでは、貢献度事前分布は ROI 事前分布と非常によく似ています。唯一の違いは、ROI 事前分布の分母はチャネルの費用であるのに対し、貢献度事前分布の分母は合計観測結果である点です。つまり、有料メディアでは、貢献度事前分布は ROI 事前分布に変換でき、ROI 事前分布は貢献度事前分布に変換できます。

係数事前分布は、線形回帰モデルの比較的オーソドックスなパラメータ化です。MMM では、係数の解釈がやや抽象的であるため、十分な情報に基づく事前分布を設定することが困難です。ROI は、チャネルのさまざまな地域や期間におけるメディア施策の配分、チャネルの Adstock や収益逓減のパラメータの推定値、チャネルのメディア単価によって異なるため、同じ係数値でも、有料メディア チャネルによって ROI 値が大きく異なる可能性があります。

オーガニック メディア

貢献度事前分布は、情報に基づく事前分布を設定するにあたって最も直感的な数量値であるため、デフォルトのオプションとなっています。一部のチャネルに期待される貢献度が、他のチャネルよりも大きい場合があります。そのため、ビジネスやマーケティングの戦術に合わせて、事前分布をカスタマイズすることを検討してください。ベータ分布は 0~1 の区間に制限されるため、多くの場合に有用です。

係数事前分布は、線形回帰モデルの比較的オーソドックスなパラメータ化です。MMM では、係数の解釈がやや抽象的であるため、十分な情報に基づく事前分布を設定することが困難です。貢献度は、チャネルのさまざまな地域や期間におけるメディア施策の配分、チャネルのアドストックと収益逓減のパラメータの推定値によって異なるため、同じ係数値でも、オーガニック メディア チャネルによって貢献度が大きく異なる可能性があります。

メディア以外の介入群

貢献度事前分布は、情報に基づく事前分布を設定するにあたって最も直感的な数量値であるため、デフォルトのオプションとなっています。事前分布は常にカスタマイズすることをおすすめします。各変数の指定されたベースライン値によっては、貢献度が正または負になる場合や、貢献度の符号が不明な場合もあります。たとえば、特定のベースライン値に価格を設定した場合に、収益にプラスとマイナスのどちらの影響があるのか明確でないかもしれません。あるいは、あるベースライン価格ではプラスの効果をもたらし、別のベースライン価格ではマイナスの効果をもたらすことが事前に予想されているかもしれません。

係数事前分布は、線形回帰モデルの比較的オーソドックスなパラメータ化です。MMM では、係数の解釈がやや抽象的であるため、十分な情報に基づく事前分布を設定することが困難です。貢献度は、さまざまな地域や期間における介入群の価値の配分や、介入群のベースライン値によって異なるため、同じ係数値でも、メディア以外の介入群チャネルによって貢献度が大きく異なる可能性があります。

考慮事項

メディア以外の介入群の貢献度事前分布をカスタマイズする

貢献度事前分布のデフォルトは切断正規分布であり、正の値と負の値の両方が許可されます。切断正規分布に介入群固有のパラメータを設定して、確率質量を正または負の値にシフトできます。たとえば、次のコード スニペットでは、最初の介入群には左右対称に切断された分布 Normal(0, 0.1)、2 番目の介入群には正側のみの分布 HalfNormal(0, 0.2)、3 番目の介入群には負側のみの分布 HalfNormal(0, 0.1) を割り当てています。

PriorDistribution(
    contribution_n=tfp.distributions.TruncatedNormal(
        loc=[0, 0, 0],
        scale=[0.1, 0.2, 0.1],
        low=[-1, 0, -1],
        high=[1, 1, 0],
    )
)

または、拡張されたベータ分布を使用して、一部の介入群には正の分布を指定し、他の介入群には負の分布を指定することもできます。たとえば、次のコード スニペットでは、最初の介入群に事前分布 Beta(1, 49)、2 番目の介入群に負の事前分布 Beta(1, 99) を割り当てています。

PriorDistribution(
    contribution_n=tfp.distributions.TransformedDistribution(
        tfp.distributions.Beta([1, 1], [49, 99]),
        tfp.bijectors.Scale([1, -1]),
    )
)

有料メディアの ROI と mROI の事前分布の比較

有料メディア チャネルでは、mROI 事前分布は ROI 事前分布の代替となります。チャネルの mROI は、1 通貨単位の追加費用に見込まれる収益と定義されます。追加費用は、リーチを拡大することによって地域と期間に配分され、平均フリークエンシーは一定に保たれます。

ROI 事前分布と mROI 事前分布のどちらを選ぶかは、重要な意味を持ちます。特に、チャネル間で事前分布を均等に揃えることを目指す場合はなおさらです。ROI にも mROI にも事前分布があります。ROI 事前分布が指定されていれば mROI 事前分布が導出され、mROI 事前分布が指定されていれば ROI 事前分布が導出されます。導出された事前分布はパラメトリック ファミリーに属さず、通常は他のモデル パラメータと無関係ではありません。導出された事前分布の正確な分布は、さまざまな地域と期間で実施されるチャネルのメディア施策の配分に左右されます。重要なのは、すべてのチャネルで共通の ROI(mROI)事前分布が使われた場合でも、導出される mROI(ROI)事前分布はチャネルごとに異なるという点です。

Hill 関数の形状が凹形の場合(たとえば、傾斜パラメータが 1 の場合(デフォルトの前提条件))、リーチとフリークエンシー(R&F)のデータがないチャネルでは、全体的な ROI が mROI よりも常に高くなります。ROI 事前分布を使用すると、導出される mROI 事前分布は R&F 以外のチャネルに対して真に小さい値になります。逆に mROI 事前分布を使用すると、導出される ROI 事前分布は R&F 以外のチャネルに対して真に大きい値になります。

リーチとフリークエンシーのチャネルの場合、リーチによる mROI は ROI と等しくなります。これは、リーチによる mROI に mROI 事前分布が適用されるためです(通貨単位あたりの次回の支出によって、平均フリークエンシーが変わることなくリーチが拡大します)。メリディアン モデルの仕様において、メディア効果はリーチに対して線形です。したがって、ROI と mROI のどちらの事前分布のパラメータ化を選んでも、リーチとフリークエンシー チャネルの事前分布には影響しません。ただし、リーチとフリークエンシー チャネルの事後分布の推定には、ROI と mROI のどちらの事前分布のパラメータ化を選ぶかが影響します。その理由は次のとおりです。

  • 他のチャネルの事前分布の選択が、リーチとフリークエンシー チャネルのモデルの適合性と事後分布の結果に影響する。
  • ROI と mROI のデフォルトの事前分布が異なる。

特定のモデルで導出される事前分布を調べたい場合は、sample_prior を呼び出した後に、use_posterior=False 引数を指定して Analyzer クラスの roi メソッドか marginal_roi メソッドを呼び出すことで事前分布を取得できます。

ROI 事前分布を選択する利点:

  • すべてのチャネルで共通の ROI 事前分布を使用すると、事前分布の ROI を均等にすることができます。事前分布の強度が増す(標準偏差が減少する)につれて、ROI 事後分布が共通の値に向かって収束していきます。
  • チャネル固有の ROI 事前分布を使用すると、テスト結果などの事前知識を組み込めます。
  • ROI 事前分布では、mROI 事前分布ほどには最適化予算をうまく調整できませんが、最適化費用の制約を使うことで、特定のチャネルに提案される予算の調整額を制限できます。

mROI 事前分布を選択する利点:

  • すべてのチャネルで共通の mROI を使用すると、事前分布の mROI を均等にすることができます。事前分布の強度が増すにつれて、事後分布の mROI 値が共通の値に向かって収束していきます。
  • 事前分布の mROI が均等だと、一般的に最適化予算の調整幅が小さくなります。その理由は次のとおりです。
    • すべてのチャネルで同じ mROI 事前分布が使われると、事前の最適な予算配分が過去の予算配分と一致する。
    • 事前分布の強度が増すにつれて、事後分布の最適な予算配分が共通の値に向かって収束していく。
    • リーチとフリークエンシーのデータがあるチャネルで、強力な mROI 事前分布を使用しているにもかかわらず、そのチャネルの過去のフリークエンシーではなく最適なフリークエンシーも使用した場合は、最適化の費用が大幅に増える可能性があります。過去のフリークエンシーでの mROI には mROI 事前分布が適用されます。この mROI は常に、最適なフリークエンシーでの mROI よりも低くなります。予算の最適化はデフォルトでは最適なフリークエンシーで実施されますが、その最適化メソッドに含まれるブール値引数 use_optimal_freq を使用すれば、最適なフリークエンシーと過去のフリークエンシーのどちらで最適化を実施するかを指定できます。

留意すべきポイント: mROI は期間によって異なるため、最適化の期間が mROI 事前分布の期間と一致しない場合は、mROI 事前分布によって最適化予算の調整が意図したとおりに正規化されない可能性があります。最適化の期間は、BudgetOptimizer.optimize()selected_time 引数を使用して調整できます。mROI 事前分布の期間は、ModelSpecroi_calibration_period 引数と rf_roi_calibration_period 引数を使用して調整できます。デフォルトでは、どちらの期間もモデリングの全期間に設定されます。