読者です 読者をやめる 読者になる 読者になる

drilldripper’s blog

機械学習とソフトウェア開発を頑張ってます

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

Python 機械学習

不均衡データ

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

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

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

gista519abe99ebbe9a687b3a1288dfb8995

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

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