解約予測の決定木モデルを訓練する方法を学びます。
顧客の解約は、顧客の消耗とも呼ばれ、顧客が会社とのビジネスを停止したときに発生します。 新しい顧客を獲得するための価格は、通常、古い顧客を保持するよりも高いため、企業はこれらの顧客のセグメントを識別することに興味がありま たとえば、Netflixが混乱の危険にさらされている顧客のセグメントを知っていれば、単にそれらを失うのではなく、積極的に特別オファーに従事することが
この記事では、Telco Customer Churn datasetを使用して、簡単な顧客解約予測モデルを作成します。 私たちは、かき回された顧客をモデル化するための意思決定ツリー、データ処理のためのpandas、視覚化のためのmatplotlibを選びました。 上記のすべてをPythonで行います。
このコードは、ベースラインモデルを訓練するためにいくつかのマイナーな調整を持つ別のデータセットで使用できます。 我々はまた、いくつかの参照を提供し、新機能や改善のためのアイデアを与えます。このコードを実行するには、このjupyter notebookをダウンロードします。ここに興味を起こさせるかもしれない少数のリンクはある:
- Labeling and Data Engineering for Conversational AI and Analytics- Data Science for Business Leaders - Intro to Machine Learning with PyTorch - Become a Growth Product Manager - Deep Learning (Adaptive Computation and ML series) - Free skill tests for Data Scientists & Machine Learning Engineers
上記のリンクのいくつかは関係団体リンクであり、購入をする 私はあなたの購入から受け取る手数料のためではなく、その品質のためにコースをリンクすることに注意してください。
データセットを読み込んで前処理するためにpandasを使用します。 Telcoデータセットには、多くの列(機能)を持つ行ごとに一つの顧客があります。 すべての欠損値または重複を持つ行はありません(これは実際のデータセットではほとんど発生しません)。 TotalChargesが””に設定されている11個のサンプルがありますが、これはデータの間違いのようです。 これらのサンプルを削除し、型をnumeric(float)に設定します。div>
探索的データ分析
データセットには、カテゴリ(複数の値と順序なし)と数値の2種類の機能があります。 機能名のほとんどは、
- Partner:顧客にパートナーがいるかどうか(はい、いいえ)、
- 扶養家族を除いて、自明です: 顧客が扶養家族を持っているかどうか(はい、いいえ)、
- OnlineBackup:顧客がオンラインバックアップを持っているかどうか(はい、いいえ、インターネットサービスなし)、
- テニュア:顧客が会社に滞在した月数、
- MonthlyCharges:顧客に毎月請求される金額、
- TotalCharges:顧客に請求される合計金額。
データセットには7032人の顧客があり、customerID(非情報)とChurn列(ターゲット変数)のない19個のフィーチャがあります。 カテゴリフィーチャのほとんどは、4つ以下の一意の値を持っています。Div>
フィーチャを二つのリストに結合して、それらを共同で分析できるようにします。
categorical_features =
numerical_features =
target = "Churn”
数値特徴分布
数値要約技術(平均、標準偏差など。)私たちにスパイク、分布の形を示さず、それを使って外れ値を観察するのは難しいです。 それがヒストグラムを使用する理由です。div>
df.describe()
一見すると、データに外れ値はありません。 データポイントが分布から切断されたり、平均値から遠すぎたりすることはありません。 四分位間範囲(IQR)を計算し、各数値特徴の値が第1および第3四分位から1.5IQR以内であることを示す必要があることを確認する。
数値特徴量を順序間隔に変換することができます。 たとえば、テニュアは数値ですが、多くの場合、小さな数値の違いを気にせず、代わりに短期、中期、長期のテニュアを持つ顧客にテニュアをグループ化します。 それを変換する一つの理由は、ノイズを低減することであろう、多くの場合、小さな変動は単なるノイズです。div>
ターゲット変数との関係で数値特徴の分布を見てください。 私たちは、TotalChargesとテニュアが大きいほど、解約の確率は低いことを観察することができます。div>
カテゴリフィーチャ分布
カテゴリフィーチャを分析するには、棒グラフを使用します。 私たちは、電話サービスのない高齢者や顧客がデータにあまり表現されていないことを観察します。div>
次のステップは、ターゲット変数に関連してカテゴリ機能を見ることです。 私たちは、契約の機能のためにこれを行います。 月ごとの契約を持っているユーザーは、長期契約を持つユーザーよりも解約する可能性が高くなります。/div>
ターゲット変数に関連したコントラクト機能
ターゲット変数分布
ターゲット変数分布は、解約されていないユーザーが多くいるため、不均衡な問題に対処していることを示しています。 このモデルは、この例では解約しなかった大多数のクラスユーザーを主に予測するため、高い精度を達成します。
不均衡データセットの影響を最小限に抑えるためにできることはいくつかあります。
-データの再サンプリング(不均衡-学習)、
-より多くのサンプルを収集、
-精度とリコールを精度メトリクスとして使用します。Div>
df.value_counts().plot('bar').set_title('churned')