drilldripper’s blog

ソフトウェア開発と人生をやっていきます

pandasを使った不均衡データの整形

不均衡データ

機械学習を行う上で正例と負例が偏っている学習データを使うと、学習がうまく行きません。サンプル数が多いクラスに引っ張られてしまいます。そのため事前にデータの加工を行うと、結果が良くなることが知られています。

多い方のクラスを少なくする手法をアンダーサンプリング、小さい方のクラスを多くする手法(人工的にデータを作り出す手法)オーバーサンプリングといいます。今回はpandasを使ってアンダーサンプリングを行ってみます。

データのアンダーサンプリング

gista519abe99ebbe9a687b3a1288dfb8995

小さいクラスのデータ数を取得し、大きいクラスからランダムに小さいクラスの個数分データを抽出します。その後データをマージしています。

この方法ではアンダーサンプリングした結果に偏りが生じる可能性があります。学習の精度を向上させたいときはk-meansでデータをクラスタリングを行い、偏りがないようにデータを抽出する必要があります。

追記

一般的にはアンダーサンプリングを行った後にbaggingを行うと、汎化性能を確保できるようです。

tjo.hatenablog.com