[PIST6(競輪)を機械学習で儲かるか検証した話] Chapter 03: 不均衡データへの対応

Section02-03では各種のチケットに対して学習を行いましたが、単勝チケット以外はうまく学習できませんでした。

これは一般には不均衡データとよばれるものの影響です。
例えば、三連単では120通りの組み合わせがありますが、あたりのチケットは一つしかありません。つまり、2クラス分類(ハズレ、アタリ)のうち、ハズレのチケットの数が、アタリの120倍あるということです。

この様に教師データが不均衡な場合、学習器はハズレのみを出力する学習を行ってしまいます。
(すべてハズレでもaccuracyは99%以上になります)

不均衡データにたいする対応策はいくつかありますが、最も簡単なのは教師データに重みをつけることです。他にも、よく使われる方法として、データを水増しする方法(up-sampling)があります。

この章ではデータの水増し法であるSMOTEを使って、教師データの内、少数クラスのデータを水増しします。その後、水増し後のデータを学習器に入れて、学習させます。

SMOTEをpythonで簡単に利用したい場合は、imbalanced-learnというライブラリを利用するのが楽です。
sickit-learnライクな書き方で簡単にデータの水増しが行えます。

また、今回はカテゴリーデータを含むデータセットなため、SMOTENCというカテゴリカルデータにも対応できるSMOTEを使います。

以下のリファレンスを参考にしました。

SMOTENC — Version 0.12.2
タイトルとURLをコピーしました