ノットを設定する

移動先:

knots 引数の仕組み

Meridian では、時間効果をモデリングするために時変切片のアプローチを使用します(スプライン(数学)、WikipediaNg、Wang、Dai。2021 年)。このアプローチでは、各期間( \(T\))の時間効果( \(\mu = [\mu_1, \dots, \mu_T]\) )をモデル化します(週レベルの 3 年間の MMM の期間は \(52 \times 3\) )。 \(T\) の時間効果は、次の関係性を使用して、多数のパラメータ( \(T\)よりは少ない可能性があります)によってモデル化されます。

\[\mu = W \ast b\]

詳細は次のとおりです。

  • \(\mu\) は \(1 \times T\) となり、各時間効果 \(t=1, \dots ,T\)を表します。 \(W\) は \(T \times K\) (決定的重み行列)です。

  • \(b\) (Meridian では knot_values と呼ばれます)は \(K \times 1\)( \(K \leq T\))です。

ベイズ事後分布の推論は \(b\)で行われ、重み行列 \(W\)に即し、\(\mu\) を用いて変換されます。ノットの数( \(K\))は、ユーザー入力によって決まります。重み行列 \(W\) は、期間と 2 つの隣接するノット間の L1 距離によって決まります。

L1 距離によって重み行列がどのように決定されるかを明確にするために、期間\(9\)について考えてみます。この期間では、2 つの隣接するノットが \(6\) と \(11\)にあるとします。期間 \(9\) とノット \(11\) の L1 距離は \(2\)です。期間 \(9\) とノット \(6\) の L1 距離は \(3\)です。そのため、 \(6\)のノットの重み付けは \(0.4 = 1 - \frac{3}{2+3} \) 、 \(11\) のノットの重み付けは\(0.6 = 1 - \frac{2}{2+3} \)となります。この 2 つの隣接するノットの加重平均値によって、 \(\mu_9\)の値が決まります。

knots < n_times の場合は、ある程度の次元削減が発生します。期間 n_times は、n_times 未満のパラメータでモデル化されます。重み付け関数によって、期間の組み合わせが決まります。

モデルにおける時間効果のノット数を選択する

ModelSpecknots の設定方法を決める際は、2 つの極値について考えると効果的です。ノットは 1 から期間数(n_times)までのどの値にもなる可能性があるためです。knots = n_times の場合は、次元削減は行われず、各期間に独自のパラメータが割り当てられます。地域レベルのモデルでは、期間ごとに複数の地域、つまり複数の観測値があるため、期間と同じ数のノットがある場合でも識別可能です。knots = 1 の場合、すべての期間が単一のパラメータで測定されます。これは、時間に影響がないことを意味します。この効果の欠如は、全期間共通の切片になります。

1 < knots < n_times の場合、この 2 つの極値の中間になります。有効値の空間内のさまざまな値を試すことができます。この 2 つの極値の中間について考える際は、バイアスと分散のトレードオフが参考になります。

推奨の方法は次のとおりです。

  • 地域レベルのモデルは、最初はデフォルト(knots = n_times)にします。過学習が極端な場合や、メディア効果の推定が現実的ではない場合は、ノットの数を減らすことをおすすめします。時間点あたりの地域の数が少なくなるほど、ノット数を減らす必要性が高まります。

  • 全国レベルのモデルでは、始めはデフォルトの 1 ノットとし、そこからノット数を増やしていきます。過学習が極端になるか、メディア効果の予測が現実的ではない状態になるまで、増やしていきます。

  • ノットの数が同程度であれば、knots = 10knots = 11 など、同様の結果が返される可能性があるため、試す値を分散させるとよいでしょう。

ノット選択アルゴリズムの開発に役立つ情報については、Wiley オンライン ライブラリの変分目的関数によるスパースガウス過程でのノット選択をご覧ください。

バイアスと分散のトレードオフ

ノット数の設定は、バイアスと分散のトレードオフであると考えると有効な場合があります。knots = n_times の場合、各期間に独自のパラメータが割り当てられるため、特定の期間の効果は、その期間のデータのみを使用して推定されます。ただし、knots = n_times は、特定の期間で利用できるデータポイントが少ないため、分散が大きくなります。

knots < n_times の場合、各ノットは近い期間のデータを使用して推定され、近い期間ほど重み付けが高くなります。最も近い 2 つのノットによって特定の期間の推論が決まるため、特定の期間の効果は、その期間のデータと近い期間のデータによって推定されます。ノットの数が減るにつれて、近い時間点が特定の時間点の推論に与える影響は大きくなり、近い時間点ほど重み付けが高くなります。これにより、特定の期間の効果の推定に使用される時間点が増えるため、分散が減少します。ただし、データは特定の期間のものではないため、バイアスが強くなります。

要約すると、ノットの数を増やすと時間効果の推定値のバイアスが弱くなり、ノットの数を減らすと時間効果の推定値の分散が減少します。アナリストとして、バイアスと分散のトレードオフを考慮し、適切なバランスを見きわめることが大事です。時間がメディアと KPI の間の重要な交絡因子であるなら、時間効果の推定におけるバイアスと分散のトレードオフは、メディアの因果効果の推定におけるバイアスと分散のトレードオフと言い換えることができます。

また、時間領域ごとにバイアスと分散のトレードオフを変えることもできます。その場合は、knots をノットの位置を指定するリストに設定します。ノットの位置は、推定値のバイアスを弱くしたい領域(ホリデー シーズンなど)では高密度にして、推定値の分散を低くしたい領域(ホリデー シーズン以外など)では低密度にします。

ノット数を減らすことが推奨されるケース

ノット数を設定する際は、期間がメディア施策にどのように影響するかについても考慮することをおすすめします。コントロール変数は、メディア施策と KPI の両方に影響する交絡変数である必要があります。コントロール変数について詳しくは、コントロール変数の選択をご覧ください。

時間についても同様の考え方が当てはまります。期間によってメディア施策が左右されない場合は、時間は実際には交絡変数とならないため、モデル化で時間のノット数を増やして自由度を過剰に高める必要はありません。広告主様は、メディア施策のプランニングにおいて期間を考慮する必要があるかどうかを判断する必要があります。たとえば、旅行ブランドのメディア プランニングは期間によって左右される可能性が高くなります。スナック菓子ブランドでは、どの期間も比較的一貫したメディア プランニングとなるでしょう。また、時間そのものが実際に重視すべき交絡変数なのか、それとも時間は(多くの場合、より低い自由度で)直接モデル化できる他の変数の代替なのかを考えます(例: 実際にメディア施策を促進させた交絡変数は時間だったのか、あるいは全国の COVID 感染者数だったのか)。自社のメディア プランニング戦略を把握しており、こうした事項に関する情報をお持ちの広告主様に適切に判断していただく必要があります。

knots < n_times とする必要があるケース

knots < n_times の設定が必要な状況もあります。たとえば、期間ごとに観測値が複数あるわけではなく、期間ごとに独自のパラメータを取得できるだけの自由度もない、国内レベルのモデルなどです。ある程度の次元削減が必要になります。

また、国内レベルのメディアまたは国内レベルのコントロール変数を含める必要があるケースも考えられます。定義上、国内レベルの変数は時間とともに変化しますが、地域によって変化することはありません。このような変数は時間と完全な共線関係にあるため、期間ごとのパラメータを含むモデルの場合は冗長になります。knotsn_times に近づけると、技術的には識別可能なモデルになる可能性があります。ただし、その場合でも弱く識別可能なだけで、問題が生じる可能性があります。国内モデルでの時間効果の推定に関する懸念事項を考慮すると、国内モデルでは、地域モデルよりも高品質の コントロールを確保することが重要になります。高品質のコントロールについて詳しくは、コントロール変数の選択をご覧ください。

時間効果のモデル化のその他のアプローチ: バイナリ指標と周期関数

Meridian では、バイナリ指標または周期関数をコントロール変数として作成および入力することで、時間効果をモデル化できます。両者は、それぞれ特定のケースでメリットがあります。

バイナリ指標

バイナリ指標は、条件が満たされた場合は 1、満たされない場合は 0 の値を取ります。たとえば、値 1 を 12 月のすべての期間とし、値 0 をそれ以外の期間とするなどです。Meridian では、バイナリ指標をコントロール変数として使用して、一連の期間で一貫性があり、必要に応じて地域差のある時間効果をモデル化できます。ノットとバイナリ指標は一緒に使用できますが、時間効果のモデル化に使用されるパラメータの総数に注意してください。

一貫した効果

バイナリ指標は複数の期間を対象とすることができ、そのすべての期間について、KPI の効果(地域モデルでは 1 人あたりの効果)が一貫していると仮定されます。バイナリ指標では、複数の期間を使用して一貫した効果を推定します。効果が一貫しているとする仮定がほぼ正しい場合、推定の精度が高まり、自由度が効率的に使用されます。

指標は、示された期間以外の期間には影響しません。一方、特定の期間に配置されたノットは、次の隣接するノットまでの期間に影響します。

一連の期間にわたって時間効果が一定であると仮定したモデル化は、一定の枠組みにはめ込むことで推定値を安定させることができる全国モデルに適しています。地域モデルではしばしば、ノットを数多く使用して柔軟性を高めることが優先されます。

地域差

バイナリ指標が地域レベルのモデルのコントロール変数として使用される場合、地域依存の効果があるものとして推定され、効果に地域差があると予想される場合に適しています(例: スーパーボールの効果は、開催都市が他の地域より大きい)。一方、ノットは地域依存でない時間効果を推定します。ノットは、すべての地域で一貫性のある、時間ベースのパターンを示す柔軟なスプライン関数を作成します。これは、地域依存の時間効果が想定されない場合に、より優れたパラメータ効率を発揮します。

バイナリ指標の地域差をオフにする

地域依存の時間効果がない場合にバイナリ指標を使用するには、階層分散 xi_c の事前分布をゼロの点質量に設定します。この場合、バイナリ指標の地域固有の各係数は同一になります。すべてのコントロール変数の地域効果をオフにするには、分散の事前分布を 0 の確定値に設定します。

xi_c = tfp.distributions.Deterministic(0)

特定の 1 つのコントロール変数についてのみ地域効果をオフにするには、その事前分布の scale を 0 に設定します。たとえば、4 つのコントロール変数があり、最初の変数の地域依存の効果をオフにする場合は、次のようになります。

xi_c = tfp.distributions.HalfNormal(scale=[0, 5, 5, 5])

周期関数

別の方法として、フーリエ級数などの周期関数をコントロール変数として追加することもできます。周期関数は、特に全国モデルでノットの優れた代替手段になります。

周期関数は、KPI(地域モデルの場合は 1 人あたりの KPI)に対する時間効果を滑らかで周期的なパターンとしてモデル化します。周期関数は、KPI への時間効果を非常にパラメトリックに仮定したものです。これは、一定の枠組みにはめ込むことで季節性の安定した推定値を得られる全国モデルに適しているでしょう。KPI を滑らかで周期的なパターンとして扱うことが求められない地理モデルではしばしば、ノットを数多く使用して柔軟性を高めることが優先されます。

実践的な推奨事項

地域モデルと全国モデルで推奨事項が異なります。

地域モデル

地域モデルでは、バイナリ指標を使用して地域依存の時間効果をモデル化できます。ノットとバイナリ指標は一緒に使用できますが、時間効果のモデル化に使用されるパラメータの総数に注意してください。

  • 時間効果が地域依存「でない」場合は、ノットを使用します。地域間で一貫した時間パターンをモデル化する場合は、ノットを使用すると、過剰なパラメータ化のリスクを回避しながら柔軟性を確保できます。
  • 時間効果が地域依存「である」場合は、バイナリ指標を使用します。イベントの効果に地域差があると強く仮定される場合は、バイナリ指標をコントロール変数として使用することをおすすめします。

全国モデル

全国モデルでは特に単純さが重要となります。これは、バイナリ指標、周期関数、または適切に配置された少数のノットで実現できます。これらを組み合わせて使用できますが、全国モデルでは単純さが重要となるため、パラメータの総数には特に注意してください。これらの各オプションは、仮定がほぼ正しい場合に、推定値の精度が高まり、自由度が効率的に使用されます。以下は、それぞれのアプローチの前提となる仮説をまとめたものです。

  • 周期関数は、滑らかで周期的なパターンとして KPI に対する時間効果をモデル化します。
  • バイナリ指標は、対象となる期間全体で一貫しているものとして時間効果をモデル化します。
  • ノットは、時間の経過に伴う区分的線形トレンドとして時間効果をモデル化します。