データ解析

チャーン分析とは?実際に用いられる手法とPythonでの実装方法

こんにちは!

都内の消費財メーカーでデジタルマーケターとして働くウマたんです!

サービスをグロースさせるためには、当たり前ですがそのサービスが保有する会員数・契約者数を増やすことが大事。そして、契約増加数は(新規契約数ー解約数)で表現することができます。

サービスローンチ直後は新規契約数をとにかく増やすことに注力するべきですが、ある程度安定した市場になってくると解約数をいかに減らすかが喫緊の問題になってきます。

例えば、日本の3大キャリアは新規契約数を取ることに躍起になり、解約数を減らす手段がなかなかワークしていないのが現状です。

既存の顧客のロイヤリティを高めいかに解約数を減らすかが非常に重要になってきているのです。

そんな解約数を減らすために有用なのが「チャーン分析」と呼ばれる手法。この記事ではそんなチャーン分析について見ていきたいと思います。

ウマたん
ウマたん
チャーン分析はもし上手くいけば大きなビジネスインパクトを与えることができるんだ!

チャーン分析とは

チャーン分析のチャーンとは、英語で「かき混ぜる・激しく動く」などの意味。そこからビジネスの世界でチャーンと言うと解約という意味を表します。

すなわちチャーン分析とは解約する顧客を予測するという分析手法。

チャーン分析により正確に解約顧客を予測することが出来れば、効率よく解約顧客を減らすことができる可能性が高くなります。

やみくもに解約数を減らそうとするのではなく、このままだと解約してしまいそうな人に対して適切な施策を打つことが可能になるのです。

チャーン分析に用いられる手法

チャーン分析においては予測するだけではなく、どの変数が解約に影響しているかを解釈する必要も出てきます。

分析手法には、精度に重きを置く手法と結果の解釈に重きを置く手法がありますのでそれぞれについて見ていきたいと思います。

ロジスティック回帰分析

ロジスティック回帰分析は、線形重回帰分析の応用であり、目的変数に2項分布を想定した分析手法です。

重回帰分析の仲間なので説明変数がどのくらい目的変数に寄与しているかも理解しやすく、今後の施策に活かしやすくなっています。

また、結果は0,1で表現されるのではなく%で表現されるため、解約する確率が80%以上と予測された人に施策を打つなどと閾値を決めてアクションを取ることができるのが特徴です。

こちらは、結果の解釈に重きを置く手法。予測精度だけ見ると、これから紹介する機械学習手法の方が高いことが多いです。

ロジスティック回帰分析に関してもっと詳しく知りたい方はこちらをご覧ください!

ロジスティック回帰 一般化線形モデルの一つである、ロジスティック回帰について説明します。 ロジスティック回帰は多変量解析という分野以外に機械学習と...

ランダムフォレスト

ランダムフォレストは、簡単な実装でかつ高速でそこそこ高い精度をたたき出せる便利な手法。

ざっくり言うと、

決定木をたくさん集めて合体させた手法

です。

決定木に関してはこちらをご覧ください。詳しくまとめています。

決定木 こんにちは!デジタルマーケターのウマたんです。 有名な機械学習手法の一つに決定木があります!非常に良く使われる王道な手法で...

決定木は単体だとそれほど強い手法ではありません。

しかし、その決定木をバギングと呼ばれる集団学習法を用いてたくさん集めてくると最強のランダムフォレストが出来上がるんです。

集団学習法は,決して精度が高いとはいえない弱いモデルをたくさん構築し,これらの予測結果を統合することで高い精度を出す方法論です。

ランダムフォレストでは変数重要度を算出することが可能でどの変数が寄与しているかは把握することが可能です。

ランダムフォレストに関してもっと詳しく知りたい方はこちらをご覧ください!

ランダムフォレストこんにちは! 今回は、汎化能力の非常に高い最強手法ランダムフォレストについてみていきましょう! 今でこそディープラーニングや...

XGBoost

XGBoostもランダムフォレストと同じく決定木を基にした手法です。

ランダムフォレストはアンサンブル学習であるバギングを決定木と組み合わせていますが、XGBoostではアンサンブル学習であるブースティングを決定木と組み合わせています。

バギングは弱い学習器(決定木)が並列で多数決を行うことで効果を発揮するイメージですが、ブースティングは直列でチューニングを行い徐々に改善していくイメージです。

データセットやパラメータにもよりますが、ランダムフォレストよりもXGBoostの方が時間がかかる分精度が高い場合が多いです。

XGBoostでも変数重要度を算出することが可能です。ただ、どの説明変数がどのくらい変化したら目的変数もどのくらい変化するかを算出するのはロジスティック回帰分析に得意とするところでXGBoostやランダムフォレストでは難しいです。

XGBoostに関して詳しくは以下の記事をご覧ください!

XGboostとは?理論とRでの実践方法!こんにちは!デジタルマーケターのウマたんです! Kaggleなどのデータ解析コンペでも頻繁に用いられているXGboost。 ...
ウマたん
ウマたん
XGboostやランダムフォレストも使われることはあるけど、まだまだロジスティック回帰分析はビジネス最前線でよく使われるメジャーな手法なんだ!

チャーン分析で気を付けなければいけないこと

チャーン分析で高い精度を算出するのは適切な変数さえ選べばそれほど難しくはありません。

ただ大事なのは、その結果をどのようにビジネスに落とし込むか。

例えばある変数が解約率にものすごく影響していることが分かったとしても、そのような変数は往々にして「これまでの継続月数」などアンコントローラブルであり、解約に影響しているのは当たり前である変数なことが多いです。

そこで良く行われるのは、解約率によってユーザーをセグメント分けし、それぞれのセグメントに対してABテスト的にある施策を打ってみてその結果を受け今後の施策を使い分けるというモノ。

例えば、解約率20%以下ユーザーに過剰なクーポン施策を行うとチャーンレートが上がってしまうかもしれませんが、80%以上のユーザーに対しては過剰なクーポン施策が有効かもしれません。

ユーザーをセグメントに分けて効果検証を行うことで、ただの予測がアクションに結び付く結果になるのです。

実際にロジスティック回帰分析でチャーン分析をやってみよう!

ここでは簡易的にロジスティック回帰分析を使ってチャーン分析を行ってみます。

PythonでもRでも簡単に実装できますが、今回はPythonを使って実装してみます。

用いるのは、ライブラリsklearnに入っているdiabetesというデータセット。患者の状況と1年後の症状がデータとして入っています。

それぞれの変数については見ていかず予測精度だけ見ていきます。

チャーン分析にふさわしいデータセットが見つからなかったので、今回は疑似的にチャーン変数を作っていきます。1年後の症状は量的変数で入っているので、ここでは平均より高い場合は1、低い場合は0として、ある患者の現在の症状から1年後の0・1症状を予測します。

コードは以下。


アウトプットとしては、テストデータの0/1を予測したリストと、予測精度が算出されます。

array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

予測精度=0.7647058823529411

疑似的にチャーン分析を行うことができました。無理やり0/1変数を作り出したのでそれほど高い予測精度は出ておりません。

ここでは行いませんが、XGBoostやランダムフォレストで実装するともっと良い精度が出るでしょう。

また、回帰モデルの回帰係数を用いれば、それぞれのサンプルのチャーン確率を算出することができます。チャーン確率によってユーザーをセグメント分けすることでビジネスチャンスが見出されるかもしれません。

まとめ

チャーン分析を身に付ければビジネスに大きなインパクトを与えられること間違いなし!

チャーン分析の考え方自体は簡単ですが、どんな変数を持ってくるか・どんな手法を使うか・結果をどうビジネスに落とし込むかはなかなか難しい。

もしさらに様々なデータ解析手法やプログラミングを勉強したい方はこちらの統計のオススメ本とPython・Rの勉強方法をご覧ください!

厳選30冊!統計学を勉強する上でおすすめな本こんにちは!元統計学専攻の大学院生、ウマたん(@statistics1012)とシンエーです。 今ではデジタルマーケティング関連の...
統計解析を行う上で便利なプログラミング言語を比較!統計学を学ぶにあたって必要なプログラミングのスキル。 世の中にはプログラミング言語を使わずとも統計処理を扱えるソフトウェアが存在し...