利用頻度が落ちたことで、あるアカウントに「解約の可能性が高い」とモデルがフラグを立てたとします。これは調査すべき箇所の特定には役立ちますが、根本的な理由はわかりません。顧客が不満を抱いているのか、プロジェクトの合間なのか、それとも別のアカウントに作業を移しているだけかもしれません。予測が示すのは「データが表す条件下で何が起きそうか」であり、必ずしも「なぜそれが起きるのか」ではありません。
予測分析では、データと統計モデルや機械学習モデルを用いて未知の結果を推定します。予測は観察されていない現在の値を対象にすることもありますが、多くは解約や需要といった将来の出来事を扱います。
予測を「特定の時点」で定義する
架空のリテンションモデルを例にすると、スコア付けの対象アカウント、予測の基準日、そして解約とみなす将来の対象期間を明確に設定します。このとき、その時点で利用可能だった情報のみを使ってください。後から作成された「解約リクエスト」の項目を含めてしまうと、事後的な評価スコアは良く見えますが、事前の警告としては全く役に立ちません。
scikit-learnのデータリークに関するガイダンスでは、評価データの情報が訓練や前処理に漏れてはならない理由が解説されています。実際の運用環境を反映するように、必要に応じて時間軸や同一人物・同一アカウントの重複レコードを考慮してデータを分割してください。
同一アカウントのほぼ重複したレコードが訓練と検証の両方に含まれていると、ランダムな行分割では実態を見誤る可能性があります。評価は、モデルが実際に直面する「未知のケース」を想定してテストすべきです。
実践的なベースラインと比較して評価する
モデルはシンプルな代替手法と比較し、意思決定に適した評価指標を選びましょう。解約がめったに起きない場合、「誰も解約しない」と予測するだけで全体の正解率は非常に高くなりますが、リスクのある顧客は一人も特定できません。
順位付け(ランキング)と確率の正確さ(キャリブレーション)は、それぞれ別の問いに答えるものです。モデルが高リスクのアカウントを正しく順位付けできていても、その確率を過大評価していることがあります。もしスコアが「リスク70%」と示されているなら、サンプルサイズや条件を適切に考慮した上で、同様のスコアを持つケースが実際におよそその割合で結果に至っているかを確認してください。
関連するグループや期間全体でパフォーマンスをチェックしましょう。プロダクトの変更、新たなユーザー層、データ収集方法の変化などによって、過去の評価結果が現在の挙動の指標として役に立たなくなることがあります。
スコアと介入(アプローチ)を切り離す
強力な予測因子が、そのまま効果的な改善のレバーになるとは限りません。リマインダーを送ってログイン数を増やしても、記録上の兆候が変わるだけで、離脱しようとしていた根本的な理由は解決しない場合があります。要因分析や定性リサーチは仮説を立てるのに役立ちますが、因果関係を主張するにはそれ自体の根拠が必要です。
スコアをきっかけにアプローチを行う場合、その介入自体が将来のデータを変化させるため、記録に残しておく必要があります。実際の結果とモデルの予測だけを比較しても、アプローチの効果が証明できるとは限りません。
予測は明確に定義された業務プロセスに役立て、その結果を適切に監視・モニタリングしながら活用してください。有用なモデルとは、過去のデータ上で単に精度の高そうなスコアを出すものではなく、それが支える意思決定をより良くするものであるべきです。
