Pytorch:ClassImbalance

提供:classwiki
2025年3月6日 (木) 06:10時点におけるKkamma (トーク | 投稿記録)による版 (→‎クラスインバランス)
ナビゲーションに移動 検索に移動

クラスインバランス

学習データセット内で,クラスごとのデータ数に偏りがある状態のことを,クラスインバランスと言います.今回は,インバランスなデータでも比較的精度良く学習させる方法について学びます.

なぜクラスインバランスが問題か?

極端な例で考えてみることにします.クラスAとBがあり,学習用データセットにおけるクラスAのデータ数は990であり,クラスBのデータ数は10であるとします.識別モデルの気持ちになって考えてみると,どのような入力データに対しても,それがクラスAであると推定しておけば,正解率は99%になります.よって,この学習用データセットの中だけで考えれば,どんな入力であってもクラスAであると推定することは,悪くない戦略であると言えます.しかし,常にクラスAが出力されるモデルであれば,実運用時には何の役にも立ちません.

本質的に同じ問題は,上記のような場面以外にも,色々なところで現れます.例えば,テニスの試合の映像で,ボールの位置をヒートマップにより推定することを考えてみましょう(参考:TrackNet).ボールが存在する領域は,画像全体に対してごくわずかです.ボールの位置を推定するモデルの気持ちになって考えてみると,ほとんどの領域にはボールは存在しないわけですから,全ての領域が真っ黒のヒートマップを出力する(言い換えると,どこにもボールは存在しないと主張する)ことは,合理的な戦略に思えます.しかし,これではボールを検出することはできません.