顧客の解約やキャンセルを分析する4つの方法

SaaSをはじめとするサブスクリプションサービスのような購読型ビジネスでは、顧客の解約やキャンセルが収益に大きな影響を与えるため、その分析や対策は非常に重要なテーマです。

しかし、顧客の解約やキャンセルはあらゆるビジネスにとって重要な課題と言えます。

例えば、従量課金型のサービスの解約、不動産業界における成約辞退、結婚式場における予約のキャンセルなど、購読型でないビジネスにおいても、顧客の解約やキャンセルはビジネスの機会損失につながります。

そこで、こちらの記事では顧客のキャンセルを分析する4つの方法を紹介いたします。

# 1. 相関分析：キャンセルと関連する要因を見つける

「相関」とは、2つの変数のうち、**1つの変数の値が変わると、もう1つの変数の値も一定の規則をもって一緒に変わる関係**です。

例えば、結婚式の会場のキャンセルに関して考えてみます。

もし、**年齢が若いとキャンセル率が高い**という「相関関係」がデータ上で確認できれば、若い層に合わせたサポート施策（プラン相談や費用のアドバイスなど）に取り組むことで、キャンセル率の改善に役立つかもしれません。

![CleanShot 2025-03-01 at 21.08.00@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/bdff96c0-c9e8-4936-97de-18d9914132ae.png)

あるいは、**支払い方法を分割払い**で契約している人のキャンセル率が高いのであれば、分割払い時の手厚いフォローアップや別プランの提案などを行うことで、キャンセル率を下げられるかもしれません。

![CleanShot 2025-03-01 at 21.08.44@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/aed26699-c935-4a1d-ba64-ff2abaa2c7b9.png)

こういった相関関係を調べるときは、バーやラインなどのチャートを使って顧客の変数（属性や行動情報）ごとにキャンセル率を比べることになります。

![image-20250301211535541.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/bfc6e5e3-0d8b-4139-95b3-aa6346cc228d.png)

ただし顧客から取得可能なデータは多く、全てのデータ（変数）を使い、沢山のチャートを作ってキャンセル率を比べるのは手間がかかります。

![image-20250301221514182.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/ce6629a1-f525-47b8-9dda-561d91bb5a0a.png)

そこで、注目している変数（キャンセル率）と、他の変数の相関関係を一度に調べることができれば、どういったセグメントや活動に注力すればいいかのヒントを迅速に得られます。

![image-20250301221607462.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/ac8093fe-16ea-488f-a97e-5eeb9b32fc3f.png)

なお、キャンセルしたかどうかのように、Yes/Noで答えられる変数との相関の強さは「[AUC](https://exploratory.io/note/kanaugust/65-SIx2eeB4Ji?utm_campaign=5-analytics-marketing&utm_medium=blog&utm_source=qiita)」という指標で計算できます。

そのため「AUC」が大きい順に変数を並べ替えられれば、解約と相関が強い変数を一瞬で確認できます。

データの加工、可視化、分析、レポーティングのためのUIツールの[Exploratory](https://exploratory.io/?utm_campaign=4-cancel-analysis&utm_medium=blog&utm_source=qiita)では、「**相関モード**」を利用して、注目している変数（例: キャンセル）と相関関係が強い（AUCが大きい）順に変数をソートしたうえで相関関係を調べられるので、注力すべきセグメントや活動に関するヒントを瞬時に得られます。

![image-20250301221644439.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/3d965098-bd64-4957-bc10-1f4e54b3016f.png)

# 2. 多変量解析（ロジスティック回帰）：複数の要因を同時に分析する

変数ごとにキャンセル率を比較することで、キャンセルとの相関を調べることは可能ですが、注意が必要なことがあります。

それは、**相関関係と因果関係は違う**ということです。

このことを、サメの襲撃件数とアイスクリームの売上を可視化したビジュアルを使って、簡単に説明していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/0e242df6-bbb9-449e-8e6e-9dea4910d59e.png)

上記のチャートからは、例えばアイスクリームの売上が増えると、サメの襲撃件数が増えるような関係を読み取れます。

しかし実際のところ、そのような関係や、その逆の関係があるとは考えづらく、夏が近づくにつれて気温が上がるためアイスクリームを食べる人が増えたり、海に入る人が増えるためサメの襲撃件数が増えていることが想定されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/1d558965-601f-4732-9605-fe55b6671de3.png)

ただし、先程のチャートだけを見ていると、**気温**が上がると**サメによる襲撃回数**と**アイスクリームの売上**が増えるような関係があるにもかかわらず、気温が上がるとアイスクリームの売上が上がるような関係があるため、その結果として、あたかも**アイスクリームの売上**が増えると**サメによる襲撃回数**が増えるような関係を見出してしまうことがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/8dbced3b-bc0e-4936-a981-ec96a2057b46.png)

今回の例は極端なため、常識的に考えて、アイスクリームの売上が増えることでサメの襲撃件数が増えるような関係はないことがわかりますが、変数がビジネスの変数に置き換わったり、扱う変数が増えていくと、こういった関係に気付かず、誤った因果関係を自分の頭の中に描いて、不適切な行動を起こしてしまう（例: サメの襲撃件数を減らすために、アイスクリームの販売をやめてしまう）こともあります。

例えば、先程の結婚式の会場のキャンセルの例を考えてみます。

このサービスでは、「年齢が若くなるほどキャンセル率が高くなる」ことや、「世帯年収が低いほどキャンセル率が高い」ことが分かっていました。

![image-20250301221827650.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/90e53cd4-0ef0-4fa5-95e6-ee2dcddc1d52.png)

しかし、「サメ」と「アイスクリーム」の例のように、「年齢」と「世帯年収」の間に、「年齢が若いほど世帯年収が低い」という相関関係があることは、容易に想像できます。

![image-20250301222159832.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/4c5d3026-37f1-4ef4-80e3-605e102fea3d.png)

すると、キャンセル率のチャートからだけでは「どちらがコンバージョンに影響を与えていそうなのか」、あるいは「両方の変数がキャンセルに影響を与えていそうなのか」を理解できません。

では、どうすれば、キャンセルとの関係を適切に捉えられるかと言うと、**世帯年収**を一定にして**年齢**のみを変化させたとき、**キャンセル率**が変化するのであれば、**年齢**と**キャンセル**の間に関係があることがわかります。

![image-20250301222728107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/fbc09107-8049-4ed9-8d52-6e700d711665.png)


逆に、**年齢**を一定にして**世帯年収**のみを変化させたとき、**キャンセル率**が変化するのであれば、**世帯年収**と**キャンセル**の間に関係があることがわかります。

![image-20250301222734726.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/c38279ad-25c2-4e0e-a7fa-3cd0c611d8e7.png)


こういったことは**統計学習**の予測モデルを作ることで調べることができ、一般的にこうした分析手法を**多変量解析**と呼びます。

また、結婚式のキャンセルを対象に「多変量解析」を実施したいときは、統計学習のアルゴリズムの、「**ロジスティック回帰**」を利用します。

なお、[Exploratory](https://exploratory.io/?utm_campaign=saas-5-analytics&utm_medium=blog&utm_source=qiita)では先程紹介した相関モードから数クリックで、ロジスティック回帰の予測モデルを簡単に作れます。

![image-20250301222851775.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/7fd46d27-064f-4b57-9d14-33d6a62535c9.png)

ロジスティック回帰の予測モデルを作成すると複数のタブが表示されます。各タブの情報は「[アナリティクスの文法](https://exploratory.io/note/kanaugust/86-LnW3lBY9ya)」という仕組みを使って直感的に解釈でき、「**他の変数の値が一定だったときの各変数のキャンセルへの効果**」を調べたうえで、例えば、どの変数が「キャンセルとの相関がより強いのか」や、「キャンセルと関係があると言えそうか」を理解できます。

![image-20250301223001185.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/880ac19b-dd33-453e-a231-f831f1e436d0.png)


# 3. コホート分析：利用期間を考慮したキャンセル分析

ここまで見てきた分析手法は、様々なビジネスで活用できる汎用的なものでした。

一方で、**サブスクリプションのように購読型のビジネスにおいては、「時間」の要素を考慮したキャンセルの分析が重要**になってきます。

このことを利用開始から時間が経つとともに、どれだけの割合の顧客が残っているかを表したチャートを使って簡単に説明していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/61d54d30-09e4-47ce-be98-3fac7d419fec.png)


サブスクリプション型のビジネスでは、サービスやプロダクトを使ってみたものの、あまり価値を感じられなかったなどの理由で、一般的に使用開始から間もない時期にはキャンセルが発生しやすく、年間のキャンセル率は高くなりがちです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/724aae0c-3e1d-44d9-9ae1-c82e59b96264.png)


逆に、キャンセル率は使用開始から時間が経つに連れ徐々に低くなります。

なぜかというと、例えば、5年目にキャンセルする確率は、4年間キャンセルしなかった人達がキャンセルする確率となり、価値がないと判断した顧客はすでにキャンセルしているため、キャンセルする理由がない顧客が残っているため、キャンセルが発生しづらいからです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/18fa82db-8146-4337-a799-d00fbd5bc145.png)

このようにサブスクリプション型のビジネスで**顧客がキャンセルする確率は、サービスの利用を始めてからどれくらいの期間が経っているかによって変わる**特徴があります。

この特徴を踏まえたうえで、とあるサービスのアメリカと日本のキャンセル率を比べたチャートを見ていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/718c048a-ad99-4a21-8bda-f970095944be.png)


一見、アメリカの方がキャンセル率が高く、日本と比べるとアメリカのサービスに問題があるように感じるかもしれません。

しかし、ユーザーの使用期間別の割合を比べたところ、アメリカの方が最近利用を始めた顧客、つまりは、キャンセル率が高くなりやすい、顧客の割合が高いことがわかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/087074ed-7517-46d2-abf6-956e0fc20be5.png)

すると、アメリカの方が日本よりキャンセルしやすいユーザーの割合が高いため、アメリカのキャンセル率が日本に比べて高いのは、ある意味当たり前と言えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/a6d6364f-7d70-456d-a296-f9bfe5993521.png)

このように「期間」を考慮してキャンセル率を見た方が、全体のキャンセル率を見るより、適切に顧客のキャンセルを捉えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/4d8c80be-4d47-49e0-ac8e-901e1598ced8.png)

そして、こういった、サービスの利用期間ごとにキャンセルしなかった顧客の割合（生存率）を可視化したチャートを**生存曲線**と呼ぶのですが、生存曲線を使うと「期間」を考慮したうえで、複数のグループ間のキャンセルの状況を比べられます。

例えば、Netflixのような動画視聴サービスにおいて、主要な利用端末がモバイルのユーザーとPCのユーザーの生存曲線を比べると、モバイルユーザーの生存曲線の方が、PCユーザーの生存曲線より緩やか、つまりは生存率が高く推移しているので、モバイルユーザーの方が、キャンセルしにくいことが分かるわけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/a9099883-9497-45ad-8078-0218f7b3df06.png)

なお、このような**グループごとに生存曲線を比べる分析**を、疫学用語で「グループ」のことを「コホート」と呼ぶことから、「[**コホート分析**](https://exploratory.io/note/BWz1Bar4JF/3-tNW7Mnd2qK)」と呼びます。


このように顧客の属性・セグメント・特定機能の利用状況などを使ってコホート分析をすることで、キャンセルと相関する指標を分析できるわけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/e57308b1-87e6-4464-9900-67b737895589.png)

なお、サブスクリプション型のビジネスの世界で**コホート分析**と言うときには、一般的に「利用開始時期」でコホート（グループ）を分けることを指します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/146898c5-df9a-4636-8a27-911cb81fdd5e.png)


「利用開始時期」で顧客をコホートに分けると、時間の経過とともに生存曲線が急/緩やかになっているかどうかで、顧客のリテンションを改善できているかがわかります。

詳細につきましては、[こちら](https://exploratory.io/note/BWz1Bar4JF/3-tNW7Mnd2qK?utm_campaign=4-cancel-analysis&utm_medium=blog&utm_source=qiita)で紹介していますので、ぜひ、ご覧ください

# 4. 多変量解析（コックス回帰）：複数の要因を利用期間を考慮したうえで、同時に分析する

ただし、コホート分析においても先程の結婚式場のキャンセルの例と同じように「アイスクリームとサメ」の問題が生じます。

このことを、Netflixのようなオンラインの動画配信サービスを例に考えてみます。

例えば、コホート分析をした結果、「コメディカテゴリーのコンテンツの視聴時間が長くなるほどキャンセルしにくい（生存曲線が緩やかになる）」、あるいは「男性の方が女性よりキャンセルしにくい（生存曲線が緩やかになる）」ことが分かったとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/866f4b8e-4011-4077-a21a-6fc373e46475.png)

このとき、「性別」と「コメディの視聴時間」の間には、「男性はコメディの視聴時間が長い」といった、相関関係があるかもしれません。

その場合、コホート分析を実施しただけでは「どちらがキャンセルに影響を与えているのか」あるいは「両方の変数がコンバージョンに影響を与えているのか」を理解できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/2295ada0-a753-467e-8151-0b7616aa1dad.png)

そこで、コホート分析においてもコンバージョンと同じように「**多変量解析**」を行います。

多変量解析を行い、例えば**性別**を一定にして**コメディの視聴時間**のみを変化させたときに、**キャンセル**が変化するのかを調べることで、**コメディの視聴時間**と**キャンセル**の間に関係があるのかがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/9e57cb83-2001-4a66-9493-d365b29acb7b.png)


なお、コホート分析を多変量解析として行いたいときは「**コックス回帰**」という予測モデルを利用します。

[Exploratory](https://exploratory.io/?utm_campaign=4-cancel-analysis&utm_medium=blog&utm_source=qiita)では、ロジスティック回帰と同じように、UIを通して、コックス回帰の予測モデルを作成して、**他の変数の値が一定だったときのキャンセルへの効果**を調べられます。

また、Exploratoryでは、どのタイプの予測モデルを作っても、「アナリティクスの文法」という仕組みをもとにモデルが変わってもモデルを解釈できるので、どの変数が「キャンセルとの相関がより強いのか」や、「キャンセルと関係があると言えそうか」を同じように理解できます。

![image-20250301223604062.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/5297174e-1134-4d7d-8817-36a151cf8ca2.png)


# 自分のデータで試してみたい！

今回は顧客の解約やキャンセルを分析する4つの方法を紹介しましたが、紹介した分析手法を実際に試そうと思うと、多くの場合、プログラミングのスキルが求められるため、やってみたいという気持ちはあるものの、実際に試すところまでは進めないことも少なくありません。

そこで、データの加工、可視化、分析、レポーティングのためのUIツールの[Exploratory](https://exploratory.io/?utm_campaign=4-cancel-analysis&utm_medium=blog&utm_source=qiita)を利用することで、今回紹介したすべての分析手法を数クリックで実行できます。

ご興味がある方は是非お試しください！

https://exploratory.io/?utm_campaign=4-cancel-analysis&utm_medium=blog&utm_source=qiita

# データサイエンスを体系的に学びたい！

データを使ってビジネスや業務を改善するには、今回紹介した相関分析や多変量解析を駆使するだけでなく、それらの手法を有効活用するための「科学的思考法」が欠かせません。

そこで、そういった考え方や、ビジネスですぐに使える分析手法を基礎から体系的に学びたいという方向けに、データサイエンス・ブートキャンプ・トレーニングを3月に開催しますので、興味のある方はぜひご参加をご検討いただければと思います。

https://exploratory.io/training-jp?utm_campaign=4-cancel-analysis&utm_medium=blog&utm_source=qiita