概要
データ・サイエンスにおいて、クラス不均衡 (あるクラスのデータ (ポジティブ) の合計数が別のクラスのデータ (ネガティブ) より遥かに少ないこと) はよくある問題です。データ・サイエンティストはこの問題を解決して、パフォーマンスに優れた分類子を作成しなければなりません。このコード・パターンでは、IBM Watson™ Studio 内で XGBoost、scikit-learn、Python と極めて不均衡なデータ・セットを使用して、顧客が銀行から譲渡性預金証書 (CD) を購入するかどうかを予測します。
説明
データ・サイエンスにおいて、クラス不均衡 (ポジティブ・サンプルの数がネガティブ・サンプルより遥かに少ないこと) はよくある問題です。典型的な機械学習アルゴリズムは、各クラスのインスタンス数がおよそ等しい場合に最も有効に機能します。あるクラスのインスタンス数が他のクラスのインスタンス数を大幅に上回っていると、問題が発生しがちです。XGBoost (Extreme Gradient Boosting Decision Tree) は、機械学習の分類モデルや回帰モデルを作成するのによく使われているツールですが、不均衡データ・セットを正確に分類するモデルを作成するには何らかの調整が必要になります。
このコード・パターンでは、XGBoost を使用して機械学習による分類を行う方法を説明します。通常、XGBoost を使用した機械学習には、ロジスティック回帰や他の手法よりも分類のほうが好ましい選択肢となります。使用するデータ・セットは、極めて不均衡な実際のデータ・セットです。このデータ・セットの場合、銀行にはかなりの数の顧客がいるのに対し、実際に CD を購入する顧客の数はわずかであることから、データ不均衡が生じています。
このコード・パターンを完了した時点で、以下の概念上の手順に取り組んだことになります。
- データ・セットについて記述する
- 予備分析によってデータを理解する
- 事前処理手法により、データを整理して準備する
- Naive XGBoost によって分類を行う
- 相互検証によってモデルを取得する
- 精度再現率曲線および ROC 曲線を描画する
- 分類子を調整し、重み付きポジティブ・サンプルを使用して分類のパフォーマンスを向上させる
- 多数派のクラスをオーバーサンプリングして少数派のクラスを理解する
- SMOTE アルゴリズムを使用する
フロー
- IBM Watson Studio にログインします。
- データをデータ・アセットとして Watson Studio にアップロードします。
- Watson Studio 内でノートブックを起動し、作成したデータ・アセットを入力します。
- Pandas を使用して、データ・ファイルをデータフレームに読み込み、初期のデータ探索を行います。
- Matplotlib とその上位にあるパッケージ Seaborn を使用して、各種の視覚化を作成します。
- scikit-learn を使用して ML パイプラインを作成し、そのパイプラインを使って XGBoost にフィードするデータを準備します。
- XGBoost を使用して ML モデルを作成し、トレーニングします。
- ML モデルの予測パフォーマンスを評価します。
手順
このパターンの詳細な手順については、README を参照してください。手順の概要は以下のとおりです。
- Watson Studio に登録します。
- 新しい Watson Studio プロジェクトを作成します。
- IBM Blockchain サービス・インスタンスを作成します。
- ノートブックを作成します。
- データをアップロードします。
- ノートブックを実行します。
- 結果を保存して共有します。