データセット: 不均衡なデータセット

値が [Positive] または [Negative] のカテゴリラベルを含むデータセットについて考えてみましょう。バランスの取れたデータセットでは、ラベルとラベルの数はほぼ同じです。ただし、一方のラベルが他方のラベルよりも一般的である場合、データセットはアンバランスです。不均衡なデータセットで優勢なラベルは「多数クラス」と呼ばれ、一般的でないラベルは「少数クラス」と呼ばれます。

次の表に、さまざまな程度の不均衡の一般的な名前と範囲を示します。

少数派クラスに属するデータの割合 不均衡の程度
データセットの 20 ~ 40%
データセットの 1 ~ 20% 中程度
データセットの 1% 未満 エクストリーム

たとえば、少数クラスがデータセットの 0.5%、多数クラスが 99.5% を占めるウイルス検出データセットについて考えてみましょう。ほとんどの被験者にウイルスがないため、このような極端にアンバランスなデータセットは医学では一般的です。

図 5. 2 つの棒がある棒グラフ。1 つの棒は約 200 個の負のクラスを示し、もう 1 つの棒は 1 つの正のクラスを示しています。
図 5. 極端に不均衡なデータセット。

 

不均衡なデータセットには、モデルを適切にトレーニングするのに十分な少数クラスのサンプルが含まれていない場合があります。つまり、正のラベルが非常に少ないため、モデルは負のラベルでのみトレーニングされ、正のラベルについて十分に学習できません。たとえば、バッチサイズが 50 の場合、多くのバッチにポジティブ ラベルが含まれません。

特に、軽度または中程度の不均衡なデータセットでは、不均衡は問題にならないことがよくあります。そのため、まず元のデータセットでトレーニングを試す必要があります。モデルが適切に機能している場合は、これで完了です。そうでない場合でも、最適でないモデルは、今後のテストに適したベースラインを提供します。その後、次の手法を使って、不均衡なデータセットによって発生する問題を克服できます。

ダウンサンプリングとアップウェイト

不均衡なデータセットを処理する 1 つの方法は、多数クラスをダウンサンプリングして重みを上げることです。これらの 2 つの新しい用語の定義は次のとおりです。

  • ダウンサンプリング(このコンテキストでは)は、多数のクラスの例の不均衡に低いサブセットでトレーニングすることを意味します。
  • 重み付けの引き上げとは、ダウンサンプリングしたクラスに、ダウンサンプリングした係数に相当するサンプル重みを追加することを意味します。

ステップ 1: 多数のクラスをダウンサンプリングする。図 5 に示すウイルス データセットについて考えてみましょう。このデータセットでは、陽性ラベルと陰性ラベルの比率が 1:200 です。10 倍にダウンサンプリングすると、バランスは 1 正と 20 負(5%)に改善されます。得られたトレーニング セットはまだ中程度のアンバランスですが、正例と負例の比率は、元の極端なアンバランスの比率(0.5%)よりもはるかに改善されています。

図 6. 2 つの棒がある棒グラフ。1 つの棒には 20 個の負のクラスが表示され、もう 1 つの棒には 1 個の正のクラスが表示されます。
図 6. ダウンサンプリング。

 

ステップ 2: ダウンサンプリングされたクラスの重みを上げる: ダウンサンプリングされたクラスにサンプル重みを追加します。10 倍にダウンサンプリングすると、サンプル重みは 10 になります。(これは直感に反するように思えますが、その理由については後で説明します)。

図 7. ダウンサンプリングとアップウェイトの 2 ステップの図。
            ステップ 1: ダウンサンプリングでは、多数クラスからランダムにサンプルが抽出されます。ステップ 2: アップウェイトにより、ダウンサンプリングされたサンプルに重みが追加されます。
図 7. 重み付けの調整。

 

「重み」という用語は、モデルのパラメータ(w1 や w2 など)を指すものではありません。ここでの重みサンプル重みを指し、トレーニング中に個々のサンプルの重要性を高めます。サンプル重みが 10 の場合、モデルは、重みが 1 のサンプルよりも(損失の計算時に)10 倍重要なものとしてサンプルを扱います。

weight は、ダウンサンプリングに使用した係数と同じにする必要があります。

 {example weight} = {original example weight} ×{downsampling factor} 

ダウンサンプリング後にサンプル重みを追加するのは奇妙に思えるかもしれません。結局のところ、少数クラスでモデルを改善しようとしているのに、なぜ多数クラスの重みを上げるのでしょうか。実際、メジャー クラスの重みを上げると、予測バイアスが低下する傾向があります。つまり、ダウンサンプリング後にアップウェイトすると、モデルの予測の平均とデータセットのラベルの平均の差が小さくなる傾向があります。

アップウェイトによってダウンサンプリングがキャンセルされるかどうかも気になるところです。ある程度は可能です。ただし、アップウェイトとダウンサンプリングを組み合わせることで、ミニバッチに十分な少数クラスを含めて、効果的なモデルをトレーニングできます。

通常、少数クラスを単独で重み付けする方が、多数クラスをダウンサンプリングして重み付けするよりも実装が簡単です。ただし、マイナークラスの重みを上げると、予測バイアスが増加する傾向があります。

多数クラスをダウンサンプリングすると、次のようなメリットがあります。

  • 収束の高速化: トレーニング中に、モデルは少数クラスをより頻繁に検出するため、モデルの収束が速くなります。
  • ディスク容量の削減: 多数のクラスをより大きな重みを持つ少数の例に統合することで、モデルはこれらの重みを保存するために使用するディスク容量を削減できます。この節約により、マイナークラスに使用できるディスク容量が増えるため、モデルはそのクラスからより多くのサンプルを幅広く収集できます。

残念ながら、通常は多数クラスを手動でダウンサンプリングする必要があります。これは、特に非常に大きなデータセットの場合、トレーニング テスト中に時間がかかります。

再調整比率

データセットのバランスを再調整するために、ダウンサンプリングとアップウェイトをどの程度行う必要がありますか?答えを判断するには、他のハイパーパラメータをテストする場合と同様に、再バランシング比率をテストする必要があります。ただし、最終的な答えは次の要因によって異なります。

  • バッチサイズ
  • アンバランス率
  • トレーニング セットのサンプル数

理想的には、各バッチに複数の少数派クラスのサンプルを含める必要があります。十分な少数派クラスが含まれていないバッチは、トレーニングの精度が非常に低くなります。バッチサイズは、不均衡率の数倍にする必要があります。たとえば、アンバランス比率が 100:1 の場合、バッチサイズは 500 以上にする必要があります。

演習: 理解度を確認する

次のような状況を考えてみましょう。

  • トレーニング セットには 10 億を超えるサンプルが含まれています。
  • バッチサイズは 128 です。
  • アンバランス比率が 100:1 であるため、トレーニング セットは次のように分割されます。
    • 多数クラスのサンプルが 10 億個程度。
    • マイナークラスのサンプル数は 1,000 万個程度。
次の説明のうち正しいものはどれですか。
現在のハイパーパラメータは問題ありません。
バッチサイズを 128 のままで、ダウンサンプリング(およびアップウェイト)を 20:1 にすると、生成されるモデルが改善されます。
バッチサイズを 1,024 に増やすと、生成されるモデルが改善されます。