1. 解約予測について
解約予測(チャーン予測)とは、「どの顧客が近い将来サービスを解約しそうか」を、過去のデータに基づいて事前に予測する分析アプローチです。
もし顧客が解約する兆候をデータから事前に察知できれば、彼らが離脱してしまう前に、割引クーポンの提供やサポートプランの提案といった効果的な引き止め施策(リテンション施策)を講じることが可能になります。
解約予測の最大の価値は、この「対策を講じるべき顧客」をデータに基づいて特定し、無駄なコスト(=不要な顧客へのクーポン配布)を抑えつつ、企業の収益(LTV: 顧客生涯価値)を守る点にあります。
1.1 重視すべき指標のトレードオフ
解約予測において、モデルの性能は主に2つの相反する指標で評価されます。
1. 「本当に解約する人」をどれだけ見逃さないか
ビジネス上の影響: 見逃しが発生すると、顧客は対策の対象から外れてそのまま離脱するため、売上損失という重大なコストが発生します。
今回はこのパラメーターをRecallとして扱います。
2. 「解約する」と予測した人が、本当に解約するか
ビジネス上の影響: 解約防止策(クーポン配布やサポート連絡など)のコストが無駄になります。
今回はこのパラメーターをPrecisionとして扱います。
これら2つの指標はトレードオフの関係にあります。Recallを追求すれば、解約しない人まで「解約予備軍」と判定しがちになりPrecisionが下がります。逆にPrecisionを追求すれば、確実な顧客しか予測できずRecallが下がります。
本レポートでは、このトレードオフを認識した上で、まずは「見逃しによる売上損失の最小化」を最重要課題と捉え、パラメータチューニングによってRecallの最大化に注力するアプローチを検証します。
1.2 初期モデルの限界と目標設定
本プロジェクトの初期ベースラインモデル(LightGBM)は、以下の性能を示しました。
| 指標 | 値 |
|---|---|
| Accuracy | 0.7509 |
| ROC AUC Score | 0.8377 |
| Recall | 0.7674 |
| Precision | 0.5209 |
| F1 Score | 0.6205 |
高いAccuracyはモデルの識別能力自体は良好であることを示していますが、Recallが約77%では、解約顧客の約1/4を見逃しています。そのため、これを$90$%以上に上げることを最重要目標としつつ、なるべくPrecisionを高く保つことを目標にしました。
2. 用いたデータセット
本分析の目的は、通信会社の顧客データを用いて、顧客が将来的にサービスを解約(Churn)するかどうかを予測する分類モデルを構築することです。
データは以下のリンクからアクセスできます。
https://www.kaggle.com/datasets/blastchar/telco-customer-churn/data
・データ総数: 7043件 (学習データ:5634件、推論データ:1409件)
・特徴量: 在籍期間(tenure)、月額料金(MonthlyCharges)、契約形態(Contract)などを含む約23変数。
・ターゲット: 顧客の解約有無 (churn: 1=解約, 0=非解約)。
・クラス不均衡: 学習データ(5634件)において、非解約(0)が4139件に対し、解約(1)が1495件と、非解約が約2.76倍多い不均衡な構成です。
3. パラメーターチューニング
3.1 モデル学習時の戦略:重み(scale_pos_weight)の設定
クラス不均衡なデータにおいて、モデルが多数派クラスに偏るのを防ぐため、LightGBMのscale_pos_weightパラメータを調整し、学習時の損失に介入しました。
・scale_pos_weightの役割
不均衡データ(クラスの割合に偏りがあるデータ)を扱う際に用いられる重要なパラメータです。
これは、モデルの訓練時に参照する損失関数において、少数派クラス(今回の例では「解約」)を誤分類した場合のペナルティ(損失)の重みを調整するために使用されます。
この値を1より大きく設定することで、モデルは少数派クラスの誤分類をより重大なエラーとして認識するようになります。その結果、モデルは多数派クラス(非解約)の予測に引きずられることなく、少数派クラス(解約)のパターンをより重視して学習するよう促されます。
・scale_pos_weightの調整
まず、データセットのクラス比率に基づいて基準となる重みを計算します。これは、正例(解約)と負例(非解約)のサンプル数が事実上等しくなるよう補正するための理論値です。
式は以下のように表され、今回はこの値は2.76となります。
通常はこの重みをかければそれでいいのですが、今回は解約顧客の予想を外したくないので、さらにこの重みを大きくしてみます。これにより、モデルは「解約の見逃し」に対して通常よりさらに厳しいペナルティを受けながら学習します。
3.2 予測判断時の戦略:閾値(Threshold)の戦略的設定
モデル学習後に得られた予測確率を、ビジネス目標に合致させるため、分類の基準となる閾値(Threshold)を戦略的に設定しました。
閾値とは、モデルが出力した解約確率を「解約(1)」または「非解約(0)」に分類するための判断基準です。例えば、閾値が$0.4$の場合、$40$%以上の確率で解約と判断されたものが解約と分類されます。
$\text{Recall}$ を最大化するためには、閾値をデフォルトの$0.5$から下げる必要があります。これにより、モデルが「解約」と予測する範囲を広げ、解約の見逃しを減らすことができます。
4. 実験結果
では具体的に、重みと閾値を変化させた場合を比較していきます。
4.1 重みを1.5倍にした場合
学習時に重みをつけたことで、Recallはベースラインの76.7%から81.8%に向上しました。
| 指標 | 値 |
|---|---|
| Accuracy | 0.7317 |
| ROC AUC Score | 0.8399 |
| Recall | 0.8182 |
| Precision | 0.4968 |
| F1 Score | 0.6182 |
4.2 閾値を0.3にした場合
学習時の重み調整を行わず、閾値の調整(0.3)のみを行った場合です。Recallは88.2%まで上昇しましたが、KPIの90%には届きませんでした。
| 指標 | 値 |
|---|---|
| Accuracy | 0.6785 |
| ROC AUC Score | 0.8377 |
| Recall | 0.8824 |
| Precision | 0.4465 |
| F1 Score | 0.5930 |
4.3 重みを1.5倍、閾値を0.3にした場合
学習時の重み付けに加え、予測時の閾値を0.3に引き下げました。Precisionは43.7%まで低下しましたが、Recallは目標値である90%を上回る92.8%を達成しました。
| 指標 | 値 |
|---|---|
| Accuracy | 0.6629 |
| ROC AUC Score | 0.8399 |
| Recall | 0.9278 |
| Precision | 0.4365 |
| F1 Score | 0.5937 |
4.4 閾値を0.2にした場合
閾値をさらに0.2まで下げた場合は、Recallは93.3%に達しましたが、Precisionは41.0%まで低下しました。
| 指標 | 値 |
|---|---|
| Accuracy | 0.6253 |
| ROC AUC Score | 0.8377 |
| Recall | 0.9332 |
| Precision | 0.4096 |
| F1 Score | 0.5693 |
5. 結論
今回の実験結果から、Recallが90%以上となったモデルは 4.2 と 4.4 でした。
モデル 4.2 (重み1.5倍, 閾値0.3): Recall 92.8%, Accuracy 43.7%
モデル 4.4 (重みなし, 閾値0.2): Recall 93.3%, Accuracy 41.0%
両者を比較すると、モデル 4.2 は 4.4 よりもRecallでわずかに劣るものの、Precisionが約3%高いです。これは、解約しない顧客を正しく「非解約」と予測する精度が高いことを意味します。
ビジネスインパクトを考慮すると、Precisionを可能な限り維持しつつ設定目標を達成している、
「学習時の重みを1.5倍(scale_pos_weight = 4.15)に設定し、予測時の閾値を 0.3 に設定する」
というアプローチ(モデル 4.2)が、今回のタスクにおける最適解であると結論付けました。
(補足考察) ビジネス目標による最適解の変化
この「最適解」は設定された目標(Recall > 90%)に基づいています。
もしビジネス上の制約が異なり、「解約防止策(クーポン配布など)のコストが非常に高く、無駄な配布(Precisionの低さ)をとにかく避けたい」という目標であれば、Recallを犠牲にしてでもPrecisionが高いモデル(例えばベースラインモデル 1.2)を選択するという判断もあり得ます。
このように、どのモデルを選択するかは、最終的に「解約の見逃しによる損失」と「解約防止策のコスト」のどちらをより重く見るかという、ビジネス戦略に直結する問題です。本レポートで提示した各モデルの性能指標が、その戦略的判断を下すための定量的な材料となることを期待します。
