「運用型広告が難しいのは人によって意思決定の結果が異なるから」という仮説

松本 健太郎

 

リスティングを代表とする運用型広告のスペシャリストと呼ばれる人たちと、「運用型広告って何か難しそう」と感じている私のような素人の差はいったい何でしょうか。

経験の差、知識の差、色々とあると思うのですが、ずばり意思決定の差であり、その積み重ねとしての成果の差だと感じています。

やはりスペシャリストは結果を残されていますし、そのために業界の知識や、人間の心理を学び、様々な場数を踏んでおられます。

では、私のような素人がスペシャリストには届かなくても平均点以上の意思決定を下す良い方法がないものでしょうか?

 

何を一番難しいと感じているのか?

魔法の箱に予算だけ入力すれば後は機械が自動的に動いてくれる…わけもなく、出稿後は日次、週次、月次でレポートを確認して、様々な調整を行うのが運用型広告(プログラマティック広告)という認識を所長は持っています。

なぜレポートを見るかと言えば現状を確認するからであり、なぜ現状を知る必要があるかと言えば、例えば予算を消化しているか、CVが獲得できているか、CPAが悪化していないか等の確認項目があるからではないでしょうか。

所長はそうした数字の海を漕ぐ自信がありません。

「コックピット経営」と言えばカッコ良いのですが、数字なんてどうとでも作れるので指標が増えるほど矛盾が増えると考えています

 

それに、例えば「CPAが悪くなったら対応する」という方針を立てたとして何円を上回れば対応するのかをキメで考える必要がありますし、1日だけ上回ったとして「偶然?誤差?」と考えることが多くて死にそうです。

一方でプロフェッショナルは過去の経験や知見に基づいて「これは偶然じゃない」「これはまだ誤差の範囲」と見抜いていくのでしょう。

つまり、意思決定の差とは、こうしたイベントが発生した場合のマーケターの受け止め方の差に現れるのではないか?と考えています。

 

同じ数字でも受け止め方が違う
同じ数字でも受け止め方が違う

 

経験と知識で圧倒的な差が開いているスペシャリストとの違いは、確率論で考えれば、発生するイベントの回数が多いほど結果の差として現れます。

指標だらけのデジタルマーケティングはプロと素人で自然と差が開くようになっているのではないでしょうか。

 

もしイベントが起きた場合に、合わせて「これは○○が起きているんですよ!」と言ってくれればすごく便利なんだけどな…と感じるのであります。

 
002
 

 

CPA悪化≒構造変化を逐次確率比検定で検出する

イベントの判断基準がマーケティングサイエンスによって客観化されれば、スペシャリストの七掛け、平均点以上の意思決定を下せるのではないかと思うのです。

私が知りたいのは「イベントが起きた時の対応」であり、言い換えると発生したイベントに対して機械的に検出し分類する作業は自動化して欲しいと考えています。

 

ここでは比較的需要が高そうな「CPAがどれくらい悪化すれば対応する必要があるか?」という課題設定を設けます。

「CPA悪化」≒「CPAの推移の構造変化」と置き換えると、時点tiから構造変化が起きたと仮定して、それをいかに早く検出できるか?が課題です。

以前に逐次確率比検定を紹介しましたが、構造変化点の検出に向いていると思うので、これを用いて検証します。詳細な以下のコンテンツをご覧ください。

 

昨日と違う今日はいつ始まった?逐次確率比検定でマメ研が急成長を始めた日を分析する
http://www.mm-lab.jp/statistical/to_analyze_the_growth_in_the_sequential_probability_ratio_test/

 

イメージとしては、以下の図のようなフローを考えます。

 

逐次確率比検定のザックリとした流れ
逐次確率比検定のザックリとした流れ

 

逐次確率比検定の良い点として、少量から始められ、かつ手元にあるデータ量だけで判断しないという点があります。

したがって、4日目に起きた構造変化も検出できるでしょう。また、どちらとも言えない場合は判断を先送りすることもできる(構造変化が起きていないという帰無仮説(H0)の採択とはまた違う)ので、こうした柔軟性はマーケティング向けではないでしょうか。

 

どのようにして模範期間を作るか?

模範期間の範囲外の可能性がある時点から検出するので、言い換えると模範期間を作らなければいけません。

運用開始時点から新たな時点データが加わるたびに検定を行えば良いのかもしれませんが、範囲内が続けば「構造変化が起きていない」という帰無仮説(H0)を採択することになるのであまり良い方法とは言えません。

そこで「変化が起きているかもしれない≒今までと傾向が異なる」時点を検出し、運用開始時点からその時点-1の期間を模範期間とすることにしましょう。

 

今までと傾向が異なるとは、考えられるのは①安定運用⇒突然の変化、②CPA落ち続ける⇒ついに横ばい、この2種類だと思います。

 

安定運用⇒突然の変化(赤枠部分)
安定運用⇒突然の変化(赤枠部分)

 
CPA落ち続ける⇒ついに横ばい(赤枠の部分)
CPA落ち続ける⇒ついに横ばい(赤枠の部分)

 

前者の場合、安定運用期間は「誤差含む一定の上下範囲」に収まっているから安定運用なのであって、恐らくCPAは正規分布に従うと考えています。

したがって新たな時点データが加わるたびに、正規分布に従うかシャピロ・ウィルク検定を行うことを提案します。

Rを使って分析してみましょう。

 

# CPAのデータはダミー
cpa=c(674, 650, 633, 611, 594, 580, 541, 541, 517, 523, 521, 493, 444, 510)
shapiro.test(cpa)

Shapiro-Wilk normality test
data:  cpa
W = 0.96324, p-value = 0.7759

 

上記14時点分のデータが正規分布に従うという帰無仮説(H0)のもとでのp値が0.7759なので、有意水準5%水準で帰無仮説(H0)は棄却されませんでした。

したがって、この14時点分のデータは正規分布に従わないとは言えない、つまり正規分布に従うと言えます。

シャピロ・ウィルク検定を繰り返し行い、帰無仮説(H0)が棄却された時点のデータを「あれ?何か今までと違うようだ」と検出すれば、以降に逐次確率比検定を行えばこの変化を構造変化と言ってしまって良いか判断できるのではないでしょうか。

 

後者の場合、CPAが「誤差含む一定の範囲」に収まって低下しているなら、恐らくそのデータで直線回帰モデルを作成し、そのモデルの残差±2σ個分の範囲に収まって低下していると考えています。

したがって新たな時点データが加わるたびにその時点1つ前までのデータで回帰分析を行い、新たな時点データが±2σに収まるか確認することを提案します。

Rを使って分析してみましょう。

 

# CPAのデータはダミー
cpa$cpa=c(674, 650, 633, 611, 594, 580, 541, 541, 517, 523, 521, 493, 444)
time=c(1,2,3,4,5,6,7,8,9,10,11,12,13)
# 予測
lm_out<-lm(cpa$cpa~time)
coeff<-coefficients(lm_out)

#予測誤差が予測期間の誤差の標準偏差2個分に含まれるか否か
cpa$cpa2=c(674, 650, 633, 611, 594, 580, 541, 541, 517, 523, 521, 493, 444,510)
time2=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
cpa$pred<-coeff[1]+coeff[2]*time2
cpa$res<-cpa$cpa2-cpa$pred
dat<-abs(cpa$res)<(sd(resid(lm_out)))*2
dat
[1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE

 

14時点目が傾向から外れたので「あれ?何か今までと違うようだ」と気付き、以降に逐次確率比検定を行えばこの変化を構造変化と言ってしまって良いか判断できるのではないでしょうか。

 

例題

さて、こうして「今までと傾向が異なる」時点を明らかにできたことで、次にその時点の連続性から構造変化点かを問う逐次確率比検定を用いてみましょう。

 
006
 

このデータですが、皆さんはどの時点からCPAが悪化していると思いますか?

ちなみに、全ての時点のデータが表示された状態でどの時点が変化点か問うていますが、実際の運用では20時点目であれば21時点目以降の推移は分かりません。その前提で見て頂ければ幸いです。

 

このデータの推移は①安定運用⇒突然の変化だと思われるので、1時点目を起点にシャピロ・ウィルク検定を繰り返し行っていきましょう。

すると、36時点目のピコーンと飛び跳ねている値が正規分布に従わないことが分かるので、この時点までの推移を模範期間として、36時点目以降から逐次確率比検定を行っていきましょう。

計算式は先ほど紹介したコンテンツに記載しているので、それに準拠して進めます。

範囲外だった場合のP(Zi│H0)=θ0の確率を0.1、P(Zi│H1)=θ1の確率を0.9だとすると、範囲内だった場合はその逆の確率になります。すなわち範囲外だったならλ×0.9/0.1で、範囲内だったならλ×0.1/0.9になるわけです。

このとき、αを0.05、βを0.05とするなら、C1は(b/(1-a))=0.0526、C2は((1-b)/a)=19となるので、計算を繰り返すと45時点目が構造変化点になります。

 
007
 

ちなみに「本当は構造変化が起きているんだけど検定結果では構造変化が起きていないと見な」してしまう第二種過誤(ぼんやり者の誤り)を防ぐには、βを小さくするしかありません。

一方で「本当は構造変化が起きていないんだけど検定結果では構造変化が起きていると見な」してしまう第一種過誤(うっかり者の誤り)はそんなに過敏にならなくて良いので、αを少し大きくしておきましょう。

そこでαを0.1、βを0.01とするなら、C1は(b/(1-a))=0.0111、C2は((1-b)/a)=9.9となるので…37時点目が構造変化点になります。

 
008
 

このあたりのチューニングは必要ですが、最初は気にせずやってしまっても良いのかなと思います。外れても良いから変化は早く知らせて欲しい!などのニーズは後から出てくる話でしょうし。

 

まとめ

「この時点から構造変化点だぜ!」と伝えてくれると多少は運用が楽になるのではないか?と考え、ちょっと開発してみました。

もちろん、スペシャリストであればさらに違う目線で運用できるのでしょうし、恐らくそうした発想や思考回路を人工知能と称してマネすることは今後100年先も無理だと思います。

ただ、どのような考え方で結論を出すのかフローを可視化して、今回のような意思決定の支援をサポートし、平均点以上を出すことは可能だと思いますし、そういうことを考えて当社ではマーケティングロボット戦略を立てております(と所長は思っています)。

 

ロックオンが掲げる「マーケティングロボット戦略」について
http://www.lockon.co.jp/ir/individual/strategy/

 

今後も、最大値の7掛け、かつ中央値以上の成果を出せるマーケティングサイエンスの研究に勤しんでまいりたいと思います。