「クラスの不均衡とオーバーサンプリング:形式的な紹介」

「美とファッションの専門家が語る:クラスの不均衡とオーバーサンプリングの形式的な紹介」

クラス不均衡の問題とランダムオーバーサンプリングなどのリサンプリング方法について見てみましょう。

最近、Juliaでクラス不均衡を解決するパッケージを作成しています。そのパッケージは Imbalance.jl と呼ばれており、パッケージの構築には論文の読み込みや実装の確認など、多くの努力が必要でした。そのため、一般的なクラス不均衡の問題について学んだことや、それを解決するために使用されるいくつかの人気アルゴリズムについて共有することが役立つと思いました。これには、Naive Random Oversampling、Random Oversampling Examples(ROSE)、random walk oversampling(RWO)、Synthetic Minority Oversampling Technique(SMOTE)、SMOTE-Nominal、SMOTE-Nominal Continuous、および多くのアンダーサンプリング手法が含まれます。この記事では、クラス不均衡の問題を公式に定義し、ランダムオーバーサンプリングが有効な解決策であることについて説明します。後の記事では、他の技術を考慮しながら、より多くの解決策に合理的に到達します。

Artem Kniaz氏による写真(出典:Unsplash)

クラス不均衡の問題

ほとんどの機械学習アルゴリズムは、いくつかの損失関数 L に対して、パラメータ θ を見つけることを目指す経験的リスク最小化の形として見ることができます。具体的には、 のように、以下を最小化することです。たとえば、線形回帰では二乗損失を取り、ロジスティック回帰ではクロスエントロピー損失を取り、SVMではヒンジ損失を取り、アダプティブブースティングは指数損失を取ります。

基本的な仮定は、f_θ のパラメータがデータセットに対してこの経験的リスクを最小化することを可能にし、データセット全体および人口全体に対して同じ量を最小化するモデルを求めます。

K クラスを持つ多クラス設定の場合、経験的リスクは以下のように書くことができます。

クラスの不均衡は、一部のクラスに他のクラスよりもはるかに少ない例がある場合に発生します。この場合、そのようなクラスに対応する項目は、和に寄与せずに最小化しているため、任意の学習アルゴリズムが経験的リスクを最小化する概算解を見つけることができます。これにより、アプリケーションにとって最も重要なマイノリティクラスに関して真のターゲット f からはるかに異なる仮説 f_θ が得られる可能性があります。

結論として、クラス不均衡の問題がある条件は以下の通りです:

1 — 訓練セットの点がクラス間で「公平に」分布していない場合。一部のクラスには他のクラスよりもはるかに少ない点があります。

2 — モデルは、訓練後にそのマイノリティクラスに属する点でうまく機能しません。つまり、学習アルゴリズムがマイノリティクラスに対して適切に損失を最小化していないということです。

この問題がいかに悪影響を及ぼすかは、そのマイノリティクラスがアプリケーションにとってどれだけ重要かに依存します。それらは多くの場合、大多数のクラスよりもはるかに重要です(例:詐欺トランザクションや希少疾患の分類など)。

クラス不均衡の問題の解決策

問題の説明から明らかになるように、より少ない和(マイノリティクラスに属する和)の重み付けを行うことで、学習アルゴリズムがその重要性を活用する概算解を避けることができます。この目的のために、機械学習アルゴリズムを修正することはしばしば容易です。特に、それが明示的に経験的リスク最小化の形であり、損失関数に対してのみ等価でない場合です。

学習アルゴリズムの変更なしで問題を解決しようとする別のアプローチは、データのリサンプリングです。最も単純な形では、重みの割り当てのコスト感度的なアプローチと同等と見なすことができます。以下のアルゴリズムを考えてみてください:

与えられた: Kクラスと各クラスの整数を持つ不均衡なデータセット望ましい: 各クラスのデータが整数に従って複製されたデータセット操作: クラスkの各ポイントをc回繰り返します。ここで、cはそのクラスに関連付けられた整数です。

これはコスト感度アプローチと同等であることが、合計へのプラグインによって明らかになります。関数を最小化することは、それのスカラー正倍数を最小化することと等価です。

ランダムオーバーサンプリング

上記のアルゴリズムは小さな問題に直面しています。例えば、クラスAには900の例があり、クラスBには600の例がある場合、データセットを正確なバランスにするためにクラスBをオーバーサンプリングするために使用できる整数の倍数はありません。クラスBの例を300個オーバーサンプリングし、システムをバランスさせるために(比率1.5と同等)するために、次のようにすることができます…

1- クラスBからランダムに300ポイントを選ぶ2- それらのポイントを複製する

このアルゴリズムは素朴なランダムオーバーサンプリングと呼ばれ、形式的には次のようなことをします:

1- 各クラスに必要な生成ポイントの数を計算する(与えられた比率から計算される)2- クラスkの場合、その数をN_kとする。そのクラスに属するポイントから置換としてランダムにN_kポイントを選び、それらを新しいデータセットとして追加する

明らかに、これは平均的に前述のアルゴリズムと同等であり、またクラスウェイト付けでもあります。クラスkの比率が2.0の場合、平均的には各ポイントがランダムに1回選択されます。

以下は、3つのクラス(0、1、2)のために生成したランダムな不均衡データセットであり、クラスのヒストグラムとオーバーサンプリング前後のポイントの散布図が示されています。

Figure by the Author

生成されたすべてのポイントが既存のもののレプリカであるため、下の2つの図には視覚的な違いはありません。

なぜオーバーサンプリングするのか?

少数クラスの不均衡問題を解決するためのクラスウェイトよりも、リサンプリングの方が優れているというあなたの納得はまだ十分ではないかもしれません。結局のところ、素朴なランダムオーバーサンプリングはより長いトレーニング時間(より多くのデータによる)と平均的に同等であることを示しました。この議論の唯一のキャッチは、クラスウェイトを使用することが一般的に可能ではないことです。特に、機械学習モデルが明示的に損失を最小化しない場合にそうです。

もし可能であれば、データセットにより多くのデータを収集することで、素朴なランダムオーバーサンプリング(またはクラスウェイト付け)よりも優れた結果を得ることは理にかなっています。例えば、次のような場合を考えてみましょう…

  • トランザクションが不正であるかどうかを検出したい
  • 1K件の不正トランザクションと999K件の正当なトランザクションのデータセットを収集しました

明らかに、均衡問題を別の998K件の不正トランザクションを収集することで解決する方が、既存の1K件を997K回繰り返すよりも優れています。特に、後者の場合には、具体的なデータに過剰にフィットするリスクが高いです。

現実的には、少数クラスのためにさらにデータを収集することは一般的には実現可能ではありません。ただし、新しい例に十分に代表的な少数クラスのためのデータを合成生成することは可能かもしれません。その場合、例やクラスウェイトを繰り返すよりも理想的です。これが最も一般的なオーバーサンプリングの形式であり、実際のデータの収集との関係が、ランダムオーバーサンプリングやクラスウェイト付けを上回る理由である可能性があります。

アンダーサンプリング

最後に、少数クラスではなく、多数クラスから削除するポイントをランダムに選ぶ場合、アルゴリズムは素朴なランダムアンダーサンプリングになります。これにより、有用なデータが失われるという欠点がありますが、時には「あまり有用ではない」多数クラスからデータを削除することで均衡問題が解決し、「はるかに有用な」少数クラスに対してはるかに優れたパフォーマンスを発揮することがあります。データの構造を保持したり、より良い決定境界を可能にするために除外するポイントをより注意深く選択する他のアンダーサンプリングアプローチもあります。

さらなる物語では、こちらで、最初に実装されたすべてのアルゴリズムについて説明し、Imbalance.jlがクラス不均衡の問題を解決する方法について説明します。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more