Section02-03では各種のチケットに対して学習を行いましたが、単勝チケット以外はうまく学習できませんでした。
これは一般には不均衡データとよばれるものの影響です。
例えば、三連単では120通りの組み合わせがありますが、あたりのチケットは一つしかありません。つまり、2クラス分類(ハズレ、アタリ)のうち、ハズレのチケットの数が、アタリの120倍あるということです。
この様に教師データが不均衡な場合、学習器はハズレのみを出力する学習を行ってしまいます。
(すべてハズレでもaccuracyは99%以上になります)
不均衡データにたいする対応策はいくつかありますが、最も簡単なのは教師データに重みをつけることです。他にも、よく使われる方法として、データを水増しする方法(up-sampling)があります。
この章ではデータの水増し法であるSMOTEを使って、教師データの内、少数クラスのデータを水増しします。その後、水増し後のデータを学習器に入れて、学習させます。
SMOTEをpythonで簡単に利用したい場合は、imbalanced-learnというライブラリを利用するのが楽です。
sickit-learnライクな書き方で簡単にデータの水増しが行えます。
また、今回はカテゴリーデータを含むデータセットなため、SMOTENCというカテゴリカルデータにも対応できるSMOTEを使います。
以下のリファレンスを参考にしました。
SMOTENC — Version 0.12.2