「AI技術を生かすためのスキル」を咀嚼する

この記事の趣旨

AI技術を生かすためのスキルを読みました。データ分析をビジネスの意思決定にどうつなげられるか?という点について、納得・共感できる点がよくまとめられている本です。ただ、構成や数式が若干わかりにくかったので、自分なりに咀嚼して残しておこうと思います。咀嚼したため、元の本の意図とは離れている部分もあります。気になる方は是非当書をお買い求めください。

KPI-アクション-モデル-最適化-フレームワーク

ビジネスの課題をデータ分析で解くために必要な要素があります。大きく分けてKPI-アクション-モデル-最適化の4つの部分に分かれます。 以下の模式図でフレームワークを示します。

KPI

特に当書で特別な意味はなく、一般的な定義で良いです。これを最大化するために意思決定を行います。

アクション

アクションとは、意思決定によって何かを制御することを指します。例えば、コンビニの来店客数を増やしたいという目的がある場合には、「店員の人数」・「入荷する商品の配分」・「営業時間」はすべて意思決定により制御できるはず*1ですので、それらを制御することはアクションです。対して、「店の前の人通りの人数」・「近くに住んでいる人数」は意思決定により制御できるとは考えられないので、これらを制御することはアクションとは呼ばないこととします。
KPIを最大化するようなアクションを知ることが目的です。

モデル

モデルとは、アクションがKPIにどのような影響を及ぼすか表現するものです。モデルは、ある1つの「真のモデル」が存在するわけではないので、捉え方によって様々なモデルが存在します。例えば、「店内のお菓子の種類が多いと来店客数も多い」「店内のお菓子の種類を xとすると来店客数 y y=10xとなる」「店内のお菓子の種類を xとすると来店客数 yは平均 10x、分散 \sigma正規分布に従う」はそれぞれモデルです。しかし、次の重要な考慮点があります。

因果と相関

因果関係を知りたいというのが当然の欲求です。しかし、ありもののデータで集計してわかるのは相関までであり、それは因果とは異なります。因果を得るためにはA/Bテストを行ったり、ありもののデータに対してどうしても因果が知りたいのであれば、かなり気を付けながら因果推論用の分析をする必要があります。因果と相関を意識しながら書くと文章が長くなってしまうので、この記事では相関を因果とみなして記述します。ご容赦ください。因果推論に関してはこちらのプログこちらの教科書こちらの動画がおすすめです。Couseraの講座もわかりやすかったのでぜひ受講してみてください!

最適化

最適化とは、制約の下でKPIを最大化するようにアクションを決めることです。例えば、「店内のお菓子の種類が多いと来店客数も多い」というモデルが与えられたなら、アクションの「入荷する商品の配分」をすべてお菓子に割り振るべきでしょう。しかし、「ある程度はお弁当をそろえる必要がある」などの制約があるでしょうから、これらの制約を満たしつつできるだけお菓子の入荷種類を増やすことが現実的なシナリオでしょう。

具体例

離反予防

あるサービスの離反が多いことがビジネス上の問題であるとします。それを分析で何とかしたいとしましょう。

KPI

離反率をKPIとするのが直感的ですが、そうすると利益につながらないような顧客のみを引き留めてしまう可能性があります。よって、顧客全体のCLV合計からアクションにかかる費用を引いたものをKPIとします。
 \displaystyle
\sum_{i}(CLV_i - C_i)
CLV_ii番目の顧客のCLV、C_ii番目の顧客にかけるアクションのコストです。 回収できるくらい価値のある顧客にはコストをかけて離反防止をしますが、回収できそうにない顧客は離反することを許容します。

アクション

解約を抑止できるクーポンを顧客に配るかどうかを決められるとします。クーポンは一種類だとします。

モデル

繰り返しになりますが、モデルは現実の近似ですので、様々な考え方ができます。ここでは一例を紹介します。
ある顧客が離反するなら1、離反しないなら0となる確率変数をYとします。ある顧客にクーポンを配ったら1、配らなかったら0となる確率変数をXとします。このとき、顧客が離反しないときのCLVをv_iとすると、
 \displaystyle
CTV_i = v_i * P_i(Y=1) + 0 * P_i(Y=0)
となります。それぞれの顧客ごとにクーポンを配信するときの個別KPI*2は、
 \displaystyle
C_i | (X=1) = C_i
 \displaystyle
C_i | (X=0) = 0
に注意して、
 \displaystyle
CTV_i - C_i | (X_i=1)
 \displaystyle
                               = CTV_i | (X_i=1) - C_i | (X_i=1)
 \displaystyle
                               =v_i * P_i(Y=1|X=1) - C_i
クーポンを配信しないときの個別KPIは、
 \displaystyle
CTV_i - C_i | (X_i=0)
 \displaystyle
                               = CTV_i | (X_i=0) - C_i | (X_i=0)
 \displaystyle
                               =v_i * P_i(Y=1|X=0)
となります。

最適化

X_iをKPIを最大化するように決定します。どのようにX_iを決定すればいいかというと、クーポンを配信したときの個別KPIがクーポンを配信しなかったときの個別KPIを上回ればいいので、
 \displaystyle
CTV_i - C_i | (X_i=1) > CTV_i - C_i | (X_i=0)
 \displaystyle
⇔v * P_i(Y=1|X=1) - C_i > v_i * P_i(Y=1|X=0)
 \displaystyle
⇔ P_i(Y=1|X=1) > P_i(Y=1|X=0) - C_i / v_i
となるような iに対して X_i=1とすれば良いです。この式から顧客ごとに次の3つを推定する必要があることがわかります*3

  • クーポンを配布したときの離反確率  P_i(Y=1|X=1)
  • クーポンを配布しないときの離反確率  P_i(Y=1|X=0)
  • 離反しない場合のCLV  v_i

離反確率は回帰問題として機械学習の手法を利用することが考えられます。CLVの推定はいろいろあるようです。

結言

一通りの流れを書いてみました。おそらく大体の問題はこのフレームワークで考えていけるんじゃないかと思ってます。今回は簡単な例だったので順に考えていきましたが、実際はそれぞれの要素を行きつ戻りつしながら考えていくのだと思います。特にモデルと最適化の境目は明確につけられていないと自分でも思います。
ただ、分析をする以上何かしらの目的はあるべきであると考えていて、それはKPIの向上に帰結するはずだと思っています。どのKPIを上げるか、上げるためにどんなアクションがあるか、アクションはKPIにどのような影響を及ぼすか、最適なアクションは何か、今後も考えていきたいです。

*1:厳密に言えば「店員の人数」は病欠などで完全に制御できるとは言えないが、一旦できると考える。

*2:顧客ごとのKPIくらいの意味です

*3:あえて明示的に述べると、予測自体に意味はなくて、最適化に必要だから予測するのですね。どの程度の予測精度が意味があるのかもこの式から考えられます。