顧客コホートの離脱前兆を「状態の流れ」として可視化する

顧客離脱は、最終的な解約や購買停止だけを見ると突然の出来事に見えます。しかし、その前には購入間隔が少しずつ伸びたり、サービス利用頻度が下がったりする変化が積み重なっている可能性があります。今回は、こうした離脱前の変化を顧客ごとの時系列として並べるのではなく、状態空間を移動するtrajectoryとして可視化しました。

この図は何を表しているのか

横方向は購入間隔比です。1.0はその顧客の通常状態に相当し、右へ進むほど購入間隔が長くなっています。縦方向は利用頻度比で、1.0が通常状態、下へ進むほど利用頻度が低下しています。

細い線は代表顧客の週次trajectoryです。太い色線は各コホートの中央値trajectory、短い矢印は近傍顧客の平均的なstate transitionを示します。非常に薄い等高線は、顧客状態がどこに多く滞在しているかを表します。

図の左上寄りは通常状態に近く、右下方向へ進むほど「購入間隔が伸び、利用頻度が低下した状態」になります。

可視化から読み取れること

今回のSynthetic Dataでは、顧客240人のうち125人、52.1%を離脱顧客として生成しました。

「購入間隔比が1.25以上、かつ利用頻度比が0.82以下」というwarning stateが離脱2週以上前に現れた離脱顧客は100.0%でした。最初にwarning stateへ入ってから離脱までの期間中央値は6.0週です。

離脱6週前の顧客では、平均購入間隔比が1.53、平均利用頻度比が0.68でした。一方、非離脱顧客の中盤では、それぞれ1.03、0.97でした。

この構造をどう解釈するか

今回のSynthetic Dataでは、離脱顧客に対して離脱7〜11週前からlatent riskが徐々に上昇する構造を埋め込んでいます。riskが上昇すると購入間隔は長くなり、利用頻度は低下します。

そのため、右下方向へ伸びるtrajectoryは、単なる見た目上の流れではなく、生成時に設定した段階的な離脱前兆を反映しています。

一方、非離脱顧客の一部には一時的な悪化から回復するケースも入れています。したがって、右下へ移動した顧客が必ず離脱するという構造にはしていません。trajectoryの向きだけでなく、状態が継続するか、元へ戻るかを見る必要があります。

可視化の仕組み

各顧客について、通常時を1.0とした購入間隔比と利用頻度比を週ごとに計算します。その2変数を座標として、連続する週を線でつなぐと顧客ごとのstate trajectoryが得られます。

次に、すべての週次遷移をstate space上へ配置し、近い位置にあるtransition vectorをGaussian weightで平均します。これによって、その状態付近にいる顧客が次にどちらへ動きやすいかをflow fieldとして表現しています。

さらに、顧客状態の滞在密度とコホート中央値trajectoryを重ねることで、個別のばらつきと全体的な流れを同時に見られるようにしています。

なぜこの可視化方法を選んだのか

離脱前兆を週別の折れ線で見る方法では、顧客ごとの時間変化は確認できますが、「どの状態からどの状態へ移っているか」を多数顧客で比較するのは難しくなります。

Cohort state trajectory fieldでは、時間を直接1本の軸にせず、顧客状態そのものを座標にします。そのため、複数の指標が同時に変化する過程を「移動方向」として読めます。

今回のテーマでは、離脱を単一時点の分類問題としてだけ扱わず、状態遷移として見ることを重視しました。

実データへの応用可能性

実データでは、EC購買履歴、サブスクリプション利用ログ、アプリ利用履歴、BtoB取引履歴などから、購入間隔や利用頻度に相当する指標を作ることで同様のstate spaceを構成できます。

顧客が離脱する前にどのようなstate transitionを通ることが多いかを探索したり、一時悪化から回復した顧客との違いを比較したりする用途が考えられます。

ただし、状態変化が見えること自体は離脱の原因を意味しません。実データでは、季節性、価格変更、キャンペーン、サービス障害、顧客属性などの追加要因も確認する必要があります。

データと分析方法

今回はSynthetic Dataを使用しています。顧客数は240、観測数は5536です。乱数シードは260926です。

顧客を4コホートへ分け、コホートごとに異なる離脱率と進行速度を設定しました。離脱顧客には離脱7〜11週前からlatent riskが上昇する構造を設定し、購入間隔比の上昇と利用頻度比の低下を生成しています。

可視化では、個別trajectory、コホート中央値trajectory、状態密度、Gaussian-weighted transition fieldを組み合わせています。

このVisualization Studyの限界

今回の離脱前兆はData Generating Processによって設計されたものです。実データで同じthresholdや同じtrajectoryが現れるとは限りません。

また、購入間隔比と利用頻度比という2変数だけで顧客状態を表しているため、金額、商品カテゴリ、問い合わせ、契約状態などの情報は含まれていません。

flow fieldは近傍transitionの平均であり、個々の顧客がその矢印通りに動くことを保証するものではありません。さらに、warning stateのthresholdも今回のSynthetic Dataに対する説明用の条件であり、そのまま実務へ適用するものではありません。

まとめ

今回は、顧客離脱の前に購入間隔と利用頻度が段階的に変化する過程を、Cohort state trajectory fieldとして可視化しました。

顧客状態を2次元state spaceへ置くことで、離脱を一つの終了イベントとしてだけでなく、その前に続く「状態の移動」として見ることができます。

この見方は、実データでも離脱顧客に共通する遷移経路や、悪化後に回復する顧客との違いを探索するための入口として利用できます。