多クラス分類とニクラス分類のどちらが精度が良いのか調べた
・教師あり機械学習の分類問題で悩んでいる人
・多クラス分類について知りたい人
動機
競艇と言わず、あらゆる多クラス分類は二値化して二クラスでの分類問題に落とすことが可能です。分類だけと言わず、回帰問題でさえも、ある範囲でラベル化すれば多クラスやニクラスに分類できます。
そうやって、様々なタスクで分類問題は使われます。
そして一度は疑問を覚えることでしょう。

多クラスとニクラス分類ってどっちが精度いいの?
今回はそれらを検証してみることにしました。
ただ、ここでの検証結果は、あくまで競艇に限ったもので、全てに応用できる話ではありません。正解ラベルや学習データの特徴量の性質に依存します。
ただ、直感として多クラス分類の精度はニクラス分類に劣ると思っていた結果からすると、結構違ったものになりましたので、機械学習に興味のある方はご参考いただけるかなと思います。
問題設定
今回は、○号艇が何着だったかを予測します。それを多クラスとニクラスでそれぞれモデルを作ります。
モデルの種類を次の表にまとめました。
多クラス分類モデル | 二クラス分類モデル | ||
1号艇の着順(1〜6) | 1号艇が1着(0or1) | 〜 | 1号艇が6着(0or1) |
2号艇の着順(1〜6) | 2号艇が1着(0or1) | 〜 | 2号艇が6着(0or1) |
3号艇の着順(1〜6) | 3号艇が1着(0or1) | 〜 | 3号艇が6着(0or1) |
4号艇の着順(1〜6) | 4号艇が1着(0or1) | 〜 | 4号艇が6着(0or1) |
5号艇の着順(1〜6) | 5号艇が1着(0or1) | 〜 | 5号艇が6着(0or1) |
6号艇の着順(1〜6) | 6号艇が1着(0or1) | 〜 | 6号艇が6着(0or1) |
なので、モデルの数としては
- 多クラス分類モデル → 6個
- 二クラス分類モデル → 6×6=36個
です。
アルゴリズム等は次の表にまとめます。
アルゴリズム(二クラス分類) | LightGBM(objective="binary") |
アルゴリズム(多クラス分類) | LightGBM(objective="multiclass") |
ハイパーパラメータ | モデル毎にoptunaで探索して設定 |
訓練データ | 2012年1月〜2019年6月(375572件) |
テストデータ | 2019年7月〜2019年12月(22837件) |
さらに、各モデルに使う学習データの正解ラベルの比率はばらばらでとても不均衡です。
モデルのハイパーパラメータを統一したのでは、ベストな精度は得られないと判断し、表にも書きましたが、モデル毎のハイパーパラメータをoptunaで探索し、モデル毎に定義しました。
つまり、36個+6個=42個のハイパーパラメータが異なったLightGBMの機械学習モデルを使っています。
・多クラスと2クラスの分類問題における精度を比較検証する
・2クラスと6クラス分類の比較
・各問題において正解ラベルのバランスがとても不均衡であるため、モデル毎に(適度に)最適なパラメータを設定する
結果
結果は少し以外でした。平均的に、多クラス分類の方が1%ぐらいAUCが良い、でした。
というのも、二クラス分類の方が問題が単純なので、その分特徴を探しやすく精度向上につながると思っていたからです。ですが、正解ラベルの種類によっては、多クラス分類で解いた方が精度向上につながる可能性もある、と分かりました。
毎回ここまで検証するのは難しいですが、多クラス分類も積極的に検証すべし、という感覚に変わりましたね。では結果の詳細を。精度は、テストデータのROC AUC で記載しています。
多クラス分類
1着 | 2着 | 3着 | 4着 | 5着 | 6着 | 3着以内 (参考) | |
1号艇 | 0.732 | 0.596 | 0.632 | 0.684 | 0.713 | 0.768 | 0.750 |
2号艇 | 0.751 | 0.636 | 0.577 | 0.588 | 0.650 | 0.721 | 0.701 |
3号艇 | 0.729 | 0.638 | 0.584 | 0.577 | 0.626 | 0.716 | 0.698 |
4号艇 | 0.747 | 0.657 | 0.600 | 0.577 | 0.621 | 0.728 | 0.712 |
5号艇 | 0.757 | 0.688 | 0.629 | 0.575 | 0.601 | 0.733 | 0.723 |
6号艇 | 0.823 | 0.737 | 0.667 | 0.588 | 0.582 | 0.743 | 0.752 |
二クラス分類
1着 | 2着 | 3着 | 4着 | 5着 | 6着 | |
1号艇 | 0.726 | 0.585 | 0.623 | 0.679 | 0.703 | 0.765 |
2号艇 | 0.743 | 0.626 | 0.561 | 0.573 | 0.638 | 0.712 |
3号艇 | 0.728 | 0.635 | 0.577 | 0.567 | 0.623 | 0.711 |
4号艇 | 0.747 | 0.652 | 0.591 | 0.569 | 0.625 | 0.725 |
5号艇 | 0.759 | 0.677 | 0.622 | 0.566 | 0.604 | 0.722 |
6号艇 | 0.820 | 0.731 | 0.660 | 0.585 | 0.580 | 0.735 |
多クラス分類 ー 二クラス分類
1着 | 2着 | 3着 | 4着 | 5着 | 6着 | |
1号艇 | 0.006 | 0.011 | 0.009 | 0.005 | 0.010 | 0.003 |
2号艇 | 0.008 | 0.010 | 0.016 | 0.015 | 0.012 | 0.009 |
3号艇 | 0.001 | 0.003 | 0.007 | 0.010 | 0.003 | 0.005 |
4号艇 | 0.000 | 0.005 | 0.009 | 0.008 | -0.004 | 0.003 |
5号艇 | -0.002 | 0.011 | 0.007 | 0.009 | -0.003 | 0.011 |
6号艇 | 0.003 | 0.006 | 0.007 | 0.003 | 0.002 | 0.017 |
考察とまとめ
普通は誤差に対してどうか、という判断をする必要がありますが、テストデータのパターンが1つですし誤差を評価していません。
しかし、5分割交差検証での結果では、だいたい±0.002 程度の誤差でしたので、それを踏まえるとやはり全体的に多クラス分類の方が精度が良い、という傾向にはあります。
今回の正解ラベルは着順なので、順序性があります。冒頭でも述べたように、学習データとラベルの性質によるものは大きいですが、同様に順序性のある正解ラベルに対しての多クラス分類はうまく機能するのではないでしょうか。
正直、多クラス分類をなめてました。回帰もそうですが、多クラスだと学習の時間も遅くなるし、あまり良いことないんじゃないかと。検証してみるもんですね。。
今回作ったモデルは近日中に反映します。なので、それぞれの艇の6着までの確率を表示されるようになるので、ご期待ください。
・多クラス分類の方が1%程度ROC AUCが高い
・順序性のある正解ラベルに対しての検証結果である
ディスカッション
コメント一覧
まだ、コメントがありません