テクノロジー

時系列クラスタリングで比較する2群をそろえた話 〜 営業活動の効果検証事例

こんにちは。Yahoo!広告に関わる分析を行っているアナリストの植下です。

Yahoo!広告の営業部門は、日々広告主の課題解決のために活動しているなかで、アップデートされた機能の導入提案も行っています。
機能自体は広告効果の向上につながることを確認してリリースされていますが、営業部門による導入提案の活動が自社広告売上へどの程度貢献していたかを明らかにし、提案の優先度付けや振り返りを行う必要がありました。
ここにおいて、差分の差分法によって機能導入された群(介入群)と非導入群(対照群)を比較することで、効果検証ができますが、適切な対照群をどう用意するかが課題でした。
※ここでの機能とは、広告効果を高める表示設定やターゲティングの設定などを指します。

この記事では、時系列クラスタリングという手法を用いて、比較する介入群と対照群がなるべく等質になるようそろえて効果検証を行った事例を紹介します。

時系列クラスタリングとは

まず今回の事例において重要なステップである、時系列クラスタリングという手法について、簡単ではありますが紹介します。
時系列クラスタリングとは、時系列データを類似する推移ごとにいくつかのグループに分類する手法のことです。分類結果に正解があるわけではないため、教師なし学習に位置付けられます。
時系列クラスタリングは、例えば、消費動向推移が類似する国の分類であったり、売上動向が類似する店舗の分類などで活用されます。
今回は広告主のアカウントを類似する売上推移ごとに分類し、差分の差分法の前提条件である平行トレンドを仮定するためにこの手法を用いました。
※アカウントとは、広告主が広告を管理する一単位のことです。

機能の導入提案活動を評価したい

それではここから事例の内容に入っていきたいと思います。
今回は、検索広告とディスプレイ広告運用型の機能導入に関する話題ですが、プロダクト機能の効果検証ではなく営業活動の効果検証のため、個々の機能に関する詳細は割愛します。
営業メンバーは営業支援の部門から展開される推奨提案リストを確認して機能の導入提案に取り組んでいます。
しかしながら、営業メンバーは広告主の課題把握や社内調整など業務内容は多岐にわたります。より効率的に営業活動を行っていくために、目標達成に繋がり辛い活動は優先順位を低くしていきたいという事情があります。

そこで、導入提案の活動が意義ある活動と示すために、売上効果を明らかにするのが今回の分析の目的です。

分析の大枠

分析の大まかな流れは以下の通りです。

  1. リスト内のアカウントについて、業種データと介入前売上(リスト展開前6カ月)の売上を集計
  2. 時系列クラスタリングの前に、売上データを最小値0、最大値1に正規化する
  3. 正規化したデータを用いて、業種ごとに時系列クラスタリングを実施し、同業種内で介入前売上の傾向が類似するアカウントごとに分類
  4. 時系列クラスタリングで分類したクラスタ内で、介入群と対照群に分け、介入前後30日間ずつの売上を集計
  5. クラスタごとに、対照群アカウントの介入前後における売上変化率を算出し、その中央値を用いて差分の差分法で介入効果を推計

介入群と対照群を等質にそろえたい

差分の差分法の前提条件である平行トレンドを仮定するために、時系列クラスタリングを用いたと先に述べました。
平行トレンド仮定とは、介入群において仮に介入しなかった場合、そのトレンド(今回の場合売上の変化)は対照群のそれと平行になるというものです。
この前提が備わっていないと、いざ介入効果を推計したとしても、その推計値には介入とは関係ない別の影響が含まれてしまうことになります。
例えば、たまたま介入群の広告主だけ広告予算を極端に増やしていた場合、単純に比較すると介入効果に広告予算を増やした影響が含まれ、効果を過剰に見積もってしまうことになります。

筆者作成の社内資料より抜粋。比較する2群が等質でない場合の影響イメージ

そのため介入群と対照群を等質にそろえて比較する必要がありますが、アカウントは数多く存在します。それぞれ業種や企業規模など属性の違い、広告プロダクトの活用状況の違いやそれによるパフォーマンスの違いなど、異なる要素はさまざまあり、検証したい機能の導入有無以外をすべて同じにそろえることはまず不可能です。

そこで今回時系列クラスタリングを利用しています。
類似する売上傾向をもつアカウントごとに分類することで、比較する介入群と対照群において介入以外の要素は等質であると仮定し前提を整えています。

時系列クラスタリングで似た売上傾向ごとに分類

時系列クラスタリングの利用意図について触れたので、実際に業種ごとに実行して複数のクラスタに分類します。

今回はPythonを使って実行しました。Pythonには時系列クラスタリングの実行に使えるtslearnというライブラリがあり、その中でもTimeSeriesKMeansを使っています。
このTimeSeriesKMeansというモデルは、クラスタリングで代表的なk-means法を用いていて、時系列データ間の距離(類似度)を測って指定したクラスタの数に分類します。
また類似度の求め方も複数あり、主にEuclidean DistanceとDynamic Time Warping: DTWという方法があります。
それぞれの違いは以下のとおりです。

手法名 主な特徴
Euclidean Distance 期間が同じ時系列データについて、
同じ時系列上で類似度を測定
Dynamic Time Warping 時系列データごとに期間の長さが異なる場合も利用可

今回分類したい時系列データ(過去6カ月間の月次売上)は、時系列の長さがすべて同じなのでEuclidean Distanceを採用しました。

どのように分類するかが決まったので、次はいくつに分類するかについてです。
いくつに分類すべきかはエルボー法という手法を使って判断しました。
エルボー法とは、クラスタ数を変えながらクラスタ内の残差平方和(SSE値)を算出し、それを図示してそこから適切なクラスタ数を判断する手法です。SSE値が腕を曲げてヒジのように見える部分を最適なクラスタ数と判断します。
(以下のような場合、クラスタ数は3と判断します。)

エルボー図 縦軸がSSE値、横軸にクラスタ数をとる

まとめると時系列クラスタリングにおける主なステップは以下です。これを業種ごとに繰り返します。

  1. 正規化した時系列データを用いて、エルボー法で最適なクラスタ数を判断
  2. クラスタ数を指定して時系列クラスタリングを実行

効果検証の結果

時系列クラスタリングによる分類によって、ようやく介入群と対照群が等質と仮定でき、差分の差分法によって売上効果を推計するに至ります。

4. 時系列クラスタリングで分類したクラスタ内で、介入群と対照群に分け、介入前後30日間ずつの売上を集計
5. クラスタごとに、対照群アカウントの介入前後における売上変化率を算出し、その中央値を用いて差分の差分法で介入効果を推計

結果について詳細はお伝えできないのですが、今回検索広告とディスプレイ広告における計5つの機能導入による売上効果を検証し、すべての機能でポジティブな売上効果がありました。
また、売上効果推計の副産物として、機能ごとに導入1アカウント当たりの売上期待値と、導入アカウントのうち売上効果があった件数の割合を算出できました。
これらの算出は当初から想定していたわけではありませんが、ここからどの機能が売上効果を得られやすいかなどの示唆につながっています。

Pythonによる時系列クラスタリングは、実行するためのパッケージが備わっていたため、Pythonの経験が浅い私のような人間にとって大変便利だったことに加え、別の効果検証の際にも転用できる可能性を感じました。

おわりに

私の所属するYahoo!広告に関わる分析を行う部署では、本分析のようにビジネス上の意思決定を支援するような分析を日々行っています。
他の分析についても、Yahoo! JAPAN Tech Blogに随時掲載していく予定ですので、楽しみにしていただけると幸いです。

(この記事に関連する採用情報「データアナリスト」もぜひご覧ください)

こちらの記事はいかがでしたか?

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました


植下 雅也
Yahoo!広告 データアナリスト
Yahoo!広告関連の分析の中でも、営業活動まわりの分析を主に担当しています。

関連記事

このページの先頭へ