製造機械の故障検知、クレジットカードの不正利用検知など、機械学習における「異常検知」の分野では、正列と負列のサンプル数が不均衡なデータを扱うことが多い。これら不均衡データを取り扱う場合しばしば実施されるのがデータのリサンプリングである。Pythonライブラリーでは、imbalanced-learn内で利用可能なUndersampling, OverSamplingなどの手法を使ったクラスがあるが、これらの関数はTrain Data1つずつしか適用できない。またscikit-learn.model_selectionで利用可能なcross_validateクラスは、初期化時点で代入したデータを分割して交差検証を実施してしまうため、これらを利用するだけでは「Train DataとTest Dataの分割⇒Train Dataをリサンプリング⇒モデルで学習⇒Test Dataで精度検証⇒次のTrain, Testセットについて同様のことを実施」という、データのリサンプリングプロセスを組み込んだ交差検証が実施できない。
同様に、scikit-learn.feature_selection内にある再帰的特徴量削減クラスである RFE 、 RFECV も同じ問題を抱えており、データリサンプリング作業を組み込んだ特徴量選択が実施できない。
上記の問題を解決するため、データのリサンプリングプロセスを交差検証に組み込んだクラスと、データリサンプリングプロセスを特徴量逐次削減に組み込んだクラスを実装し、インポート可能なモジュールとして用意した。
- Resampled_learn.py (二値分類用モジュール)
- Resampled_learn_multiclass.py (多クラス用モジュール)
リポジトリの「Example_titanic_data.ipynb」は、titanicデータを本モジュールで利用可能な機能で分析したケースを示しています。ご参照ください。