1 クラス重み付けの基礎
1.1 不均衡データと分類の課題
不均衡データとは、クラス間でラベル出現頻度が大きく偏っている学習データの状態を指す。分類器は学習時に損失を最小化しようとするため、損失への寄与が大きい多数クラスの挙動に最適化が引き寄せられる。その結果、モデルは全体精度が高く見えても、少数クラスを取りこぼす誤分類が増えることがある。
不均衡がもたらす問題は、単に少数側の誤りが多いというだけに留まらない。少数クラスの分布が学習データ上で十分に表現されず、モデルの内部表現が分離境界を適切に形成できない場合がある。また、学習アルゴリズムの実装や損失関数の形によっては、クラス間の損失スケールが比較的自然に不均衡化することもある。
1.2 重み付けの位置づけ
1.2.1 損失関数における重みの導入
クラス重み付けは、分類学習の損失関数にクラス固有の係数を掛けることで、少数クラスの誤りをより強く罰する考え方である。一般に、各訓練例の損失を「該当クラスに対応する重み」で拡大または縮小し、最適化の方向性を調整する。
重みを導入すると、同じ予測誤差でも多数側と少数側で更新量の大きさが変わる。これにより、少数クラスに関する勾配情報が抑え込まれにくくなり、学習が偏りにくくなることが期待される。
1.2.2 学習への期待効果と限界
期待効果としては、少数クラスの誤分類率を下げ、クラス別の性能を均衡させる方向へ作用する点が挙げられる。全体指標の改善だけでなく、クラス単位の再現性が高まるケースが多い。
一方で限界もある。重みが強すぎると、学習が少数クラスに過度に引っ張られ、多数側の識別が崩れる。さらに、データ品質が揺らぐと、重み増幅によってノイズも同様に強調され、誤分類が連鎖的に増える場合がある。加えて、重みはあくまで損失の相対重要度を調整する仕組みであり、データ分布そのものの偏りを解消するわけではないため、万能ではない。
2 重みの決定方法
2.1 頻度に基づく重み
頻度に基づく重みは、ラベル出現回数の偏りを直接反映する設計である。最も直感的な出発点であり、実装例も多い。
ただし、頻度が極端な場合、単純な逆比にすると重みが過大になりやすい。そのため、スケール調整や正規化、上限設定などと組み合わせることが現実的になる。
2.1.1 逆頻度重み
2.1.1.1 ラベル出現回数からの算出
逆頻度重みは、あるクラスの出現回数が少ないほど大きな重みを割り当てる方法である。典型的には、重みをクラス頻度の逆数(または逆数に比例)として定め、損失へ反映する。
例として、各クラスのデータ数を \(n_k\) とすると、重み \(w_k\) を \(w_k \propto 1/n_k\) のように設定する。これにより、少数クラスの誤りが多数クラスに比べて強く学習される方向へ働く。ただし、クラス数やデータ総量の違いにより、学習率や損失のスケールが変わる可能性があるため、実運用では正規化や係数調整が重要になる。
2.1.2 平均化・正規化の考え方
逆頻度型は、そのままだと重みの平均や総和が大きく変化し得る。そこで、重みの平均を1にそろえる、あるいは損失全体のスケールを一定に保つ目的で正規化を行うことがある。
例えば、重み列 \(w_k\) の平均が1になるようにスケーリングすれば、学習率に対する感度を相対的に抑えやすい。正規化は「相対比」を維持しつつ「絶対値」を調整する考え方に対応している。
2.2 代表的な実装上の重み付け式
実装でよく採用される形として、(1) 逆頻度に基づく基本形、(2) 頻度を平滑化したもの、(3) 正規化を加えたもの、などがある。多くの深層学習ライブラリではクラスごとの重みベクトルを入力する設計になっており、損失の該当箇所に乗算される。
平滑化は、極端に少ないクラスがある場合の暴走を抑えるための工夫である。たとえば頻度に小さな定数を足してから逆数を取ると、ゼロ割の回避だけでなく、重みの極端な拡大を抑えられる場合がある。
2.3 ハイパーパラメータとしての重み調整
クラス重みは固定値というより、調整対象のハイパーパラメータとして扱うのが実務的である。データセットやモデルによって「ちょうど良い」強さは異なるため、性能指標を見ながら探索する。
重みの初期値は頻度から作れても、学習結果に応じてスケール係数を掛けたり、指数のような形で頻度の影響度を弱めたりすることで、安定性を高める設計が行われる。
2.3.1 重みのクリップや上限設定
少数側の重みが大きくなりすぎると、勾配が極端になり学習が不安定化することがある。これを抑えるために、最大値を超えないようにクリップする手法が用いられる。
上限設定は、少数クラスを軽視しない一方で、ノイズ増幅のリスクを抑える狙いを持つ。クリップ値は損失の性質や学習率に依存するため、過度に抑えれば効果が薄れ、強くすれば不安定さが残る。したがって、少数側の指標だけでなく多数側の指標も同時に監視する必要がある。
3 学習プロセスでの適用方法
3.1 対象となるモデルと損失関数
3.1.1 多クラス分類
多クラス分類では、各入力に対してクラス確率の分布を出力し、交差エントロピー系の損失を用いることが多い。クラス重み付けでは、クラス \(k\) の損失成分に \(w_k\) を乗算する形で適用される。
このとき、モデル出力の正規化(確率化)自体は通常のままにし、更新の重みだけを変えるのが基本である。結果として、少数ラベルを含むサンプルの損失寄与が増え、境界学習が変化する。
3.1.2 二値分類
二値分類では、正例・負例で頻度が偏る状況がよくある。クラス重みは「正例側の重み」と「負例側の重み」として定義され、ロジスティック損失(あるいは二値交差エントロピー)に対して適用される。
特に、正例が希少な設定では、正例に対する重みが増えることで、誤って負例と判断するコストが上がる。これにより、精度と再現率のトレードオフが変わるため、しきい値(後述)も含めて整合させることが重要になる。
3.1.3 セマンティックセグメンテーションなどの拡張
セマンティックセグメンテーションでは、画像全体ではなく画素(または領域)単位でクラスを予測するため、クラス数が増えるだけでなく、背景クラスが支配的になりやすい。そこで、画素ごとにクラス重みを割り当て、損失計算に反映する方法がある。
拡張に伴う注意点として、重みを画素頻度に基づいて設計する場合、空間的に局在する少数クラスが損失へ与える影響が変わりやすい。さらに、前処理やデータ拡張の影響で頻度が変動する可能性があるため、訓練セット全体の統計を使うか、バッチ内で動的に計算するかなどの設計が論点になる。
3.2 既存手法との併用
3.2.1 データサンプリングとの比較
データサンプリングは、少数クラスのサンプルを多めに選ぶ、または多数側を間引くことで、学習データの出現頻度を調整する方法である。クラス重み付けは損失側の調整であり、両者は「更新の寄与を変える」という点で同じ目的に向かう場合がある。
一般には、重み付けは既存のデータセット構成を保ったまま学習を進めやすい。一方、サンプリングはデータの再利用回数を増やしうるため、過学習や相関の増加が気になる場合がある。実務では、どちらを優先するかというより、併用する場合は相互作用(効果の重複による過強化)に注意して調整する。
3.2 Focal loss等との関係
Focal lossは、難しいサンプルに損失の重みをより配分する考え方であり、不均衡の文脈でしばしば併用・比較される。クラス重み付けが「クラス単位の寄与」を調整するのに対し、Focal lossは「予測の確信度や誤りの程度」に基づく重み付けに近い。
したがって、併用する場合は、少数クラスであることに加え、さらに難しい例でも損失が強くなるため、強い学習信号が連続する可能性がある。学習の安定性や指標の挙動を確認しながら、片方を弱める、または正規化でスケールを抑えるなどの工夫が求められる。
3.3 学習時の注意点
3.3.1 クラス重みの効き過ぎ問題
重みが過大だと、モデルは少数側を当てることに強く最適化され、多数側の誤りが増えることがある。結果として、全体の誤分類が「少数誤りから多数誤りへ」移行する形になることもある。
また、極端な重みは勾配の分散を増やし、学習率の設定によっては発散に近い挙動を招く場合がある。対策としては、重みの上限設定、正規化、学習率の再調整、そして早期停止の設計が有効になる。
3.3.2 しきい値設定と整合性
分類器の出力確率から最終ラベルを決めるにはしきい値が必要であり、二値分類では特に重要になる。クラス重み付けは損失の罰則バランスを変えるため、しきい値が従来と同じ設計だと、期待する意思決定とずれることがある。
一般に、確率の校正状況や、目標とする評価指標(再現率優先か、適合率優先か)に応じてしきい値を選ぶ。重みを変えた場合は、必ず検証データでしきい値を再評価し、指標の改善が一貫しているかを確認するのが望ましい。
4 評価・改善の進め方(Teaching_methods)
4.1 適切な評価指標の選択
4.1.1 混同行列とクラス別指標
混同行列は、各クラス間でどの種類の誤りが起きているかを視覚的に把握するのに役立つ。特に不均衡では、単一の総合精度が誤解を招きやすいため、行(真のクラス)ごとの割合や列(予測)ごとの偏りを見ることで、少数側の取りこぼしを具体的に診断できる。
クラス別の指標を併用することで、重みの調整がどの部分に効いているかが明確になる。少数クラスの再現が上がったのか、多数側の適合が悪化したのか、などを判断する材料になる。
4.1.2 適合率・再現率・F1スコア
適合率(予測した中で正しかった割合)と再現率(真の中で拾えた割合)は、不均衡分類で頻繁に用いられる。F1スコアは両者の調和平均であり、片方の極端な犠牲を抑えたい場合に適している。
ただし、実務上は再現率を優先すべきか、適合率を優先すべきかがタスクにより異なる。クラス重み付けはしばしば再現率と適合率のバランスを動かすため、目標仕様に合わせて指標を決め、重み探索の基準もその指標へ寄せることが重要になる。
4.1.3 ROCよりPRを優先する状況
ROC曲線に基づく指標は広く使われるが、不均衡が強い場合、偽陽性が少ないように見えやすくなり、少数クラス性能の差が見えにくいことがある。適合率と再現率の関係を扱うPR曲線は、少数クラスの検出に直接関係するため、比較が明確になる状況がある。
そのため、重み付けやサンプリングの効果を確かめる際は、PR系の指標を優先して見る運用が適している場合がある。
4.2 学習結果の診断
4.2.1 少数クラスの取りこぼし確認
少数側で「真の陽性を見逃していないか」を確認するには、再現率や混同行列の該当行を中心に観察する。クラス重みを導入したのに再現率が伸びない場合、重みが弱すぎる、学習が不十分、あるいは特徴量側の表現力が足りない可能性がある。
また、しきい値の影響も大きいため、確率出力の分布を確認し、しきい値調整で改善可能かどうかも同時に検討する。
4.2.2 多数クラスへの過適合確認
重みが強すぎると、多数側の識別が崩れ、誤検出や誤分類が増えることがある。多数側の精度や適合率の落ち込みを混同行列で追うと、問題がどの方向へ移っているかが分かる。
診断では、学習データと検証データでの傾向差も見る。多数クラスが検証側で落ちるなら、重みの副作用が疑われる。一方で訓練側でも高い誤りが残る場合は、重みだけでなくモデル容量や特徴量の見直しが必要になる。
4.3 改善サイクル
4.3.1 重み調整と指標の再評価
改善サイクルの基本は、重みを変更した後に、ターゲット指標がどの程度動いたかを再計測することにある。再現率が上がった一方でF1が伸びないなら、適合率の低下が強い可能性がある。逆に適合率のみ改善し再現が低い場合は、しきい値や重みの方向性を見直す必要がある。
また、複数指標を同時に追跡し、「一部のクラスだけ良くなって他が崩れていないか」を確認する。これは重み付けの効果を安定させる実務的な手順である。
4.3.2 クロスバリデーションでの安定化
不均衡データでは、分割の仕方によって少数クラスの分布が揺れやすい。クロスバリデーションを用いると、重みやしきい値の選定が特定の分割に依存するリスクを減らせる。
評価のばらつきが大きい場合は、重みの選定が過度に状況依存である可能性もある。その際は、重み探索の範囲を絞る、正規化や上限設定を導入する、あるいは学習設定を均すなどの調整が有効になる。
4.4 教える際のポイント(比喩と演習)
4.4.1 「配点調整」としての説明
クラス重み付けは、試験の採点で「特定の問題を重要視する」配点調整にたとえられる。たとえば、全体の点数を上げるだけなら簡単な問題を確実に解けばよいが、もし合格ラインで最重要の問題があるなら、そこを落とすと不合格になる。重み付けは、少数クラスの誤りを「落としたら困る問題」として損失に反映する行為と説明できる。
この比喩を用いると、重みが強すぎて別の問題が崩れる様子も、「配点を上げすぎて別の得点源が犠牲になった」として理解しやすい。
4.4.2 ケーススタディ(架空データ)演習
架空のデータとして、「全体の90%がクラスA、10%がクラスB」とする。初期学習ではモデルがAばかり当て、クラスBの再現率が低いと観測されたとする。学習者は逆頻度重みを導入し、クラスBの損失寄与を増やす。
次に、(1) 適合率がどの程度変化したか、(2) 再現率がどこまで改善したか、(3) 多数側の誤検出は増えたか、を混同行列とPR指標で確認する。最後に、重みを半分に戻すか上限を付けるか、あるいはしきい値を再調整するかを選び、改善が安定する組を探す。学習者は「重みは配点であり、評価指標に合わせて調整する必要がある」という点を実感しやすい。