サブスクリプション型のビジネスを効率的に改善していくために、 サービスの利用開始からのチャーン率を経過時間ごとに可視化して、顧客のチャーンのトレンドを的確に理解する手法に生存(サバイバル)分析というものがあります。
このノートでは生存曲線を描いて、生存分析を行うためのデータの作り方を紹介します。
今回はサービスのアクセスログのデータと、顧客のキャンセルのデータ、2つのデータを利用します。2つのデータは以下のページよりダウロードが可能です。
サービスのアクセスログは以下のように1行が1回のサービス利用を表しています。
続いて、顧客のキャンセルデータは以下のように、1行はユーザーごとの契約ステータスを表しています。
生存曲線を描くためには、以下のようなデータが必要です。
しかし残念なことに今回のアクセスログのデータは1行が1人のユーザーの生存期間の情報になっていなません。
またアクセスログのデータから生存期間の情報を集計できたとしても、観察対象のイベントのステータスの情報がありません。
そこで、これらのデータを利用して、生存分析用のデータを作成していきます。
今回は以下のステップで生存分析用のデータを作成していきます。
アクセスログのデータから顧客ごとの最初のサービス利用日と、最後の利用日を集計していきます。
まず顧客ごとに最初のアクセス日を集計します。useridの列ヘッダーメニューから集計(Summarize)を選択します。
値にtimestampを選択して、集計関数に最初の日を選択します。
続いて最後にアクセスした日を計算するために、値に"timestamp"を再度追加して、集計関数に最後の日(max)を選択します。
後からコホート分析をしたければ、他の列の集計もしておきます。
例えば、利用OSを利用して、コホート分析がしたければ、利用osも集計します。値に"os"を追加し、集計関数に最頻値(mode)を選択することで集計が可能です。
これでユーザーごとに、サービスの利用をした日と最後にサービスを利用した日が集計できました。
最後に列名を分かりやすい名称に変更します。
"timestamp_min"の列ヘッダーメニューから、列名の変更を選択します。
"timestamp_min"を"first_date"、"timestamp_max"を"last_date"に、"os_mode"を"os"に変更し、実行します。
分かりやすい列名に変更することができました。
顧客ごとの最初のサービス利用日と、最後の利用日を集計することはできましたが、生存分析を行うために必要な観察対象のイベントのステータスが、集計されたデータにはありません。
そこで、顧客の契約ステータスを、顧客ごとの最初のサービス利用日と、最後の利用日を集計したデータフレームに結合していきます。
顧客の現在のステータスを追加するために、useridのカラムヘッダメニューから、結合 (列を追加する /Join)を選択します。
結合ダイアログが表示されたら、結合先データフレームに顧客の契約ステータスを選択し、両方のキー列にuseridを指定し、実行します。
生存曲線を描くためのデータを作ることができました。
作成したデータを使って生存曲線を描きたければ、以下にて詳しい方法を紹介していますので、よろしければ、ご参考ください。