AI資格ドリル
資格を選ぶ↓

用語比較

不均衡データの扱い(オーバーサンプリング・アンダーサンプリング・クラスの重み付けの違い)

不均衡データとは、クラスごとのサンプル数に差があるデータです。imbalanced-learnの公式ドキュメントは、この差が学習と予測に影響しうるとしています。

対処は大きく3つに分かれます。少数派を増やすオーバーサンプリング、多数派を減らすアンダーサンプリング、データは変えずにクラスごとの重みを変える重み付けです。

G検定の機械学習の評価では、正解率が不均衡なデータで実態を見誤りやすい点が問われます。このページは、評価指標は知っていても、対処法をどう使い分けるか整理できていない人向けです。

データ拡張との違いは「データ拡張とオーバーサンプリングの違い」のページで扱い、ここでは不均衡への3つの対処の切り分けに絞ります。

この記事の根拠と出典

各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。G検定の一次情報確認日: 2026-10-02。

結論

オーバーサンプリング

少数派のクラスに新しいサンプルを生成して、不均衡に対処する。複製するRandomOverSamplerと、補間で合成するSMOTE・ADASYNがある。

アンダーサンプリング

少数派以外のクラスの観測数を減らす。最も単純なのは、対象クラスのサンプルを無作為に取り除く方法。

クラスの重み付け

データの数は変えず、クラスごとの重みを指定する。scikit-learnのclass_weightに'balanced'を指定すると、クラス頻度に反比例する重みが自動で調整される。

違いを表で確認

比較軸オーバーサンプリングアンダーサンプリング
何を変えるかオーバーサンプリング・アンダーサンプリング:学習データのサンプル数クラスの重み付け:クラスごとの重み(データの数は同じ)
サンプルの増減の向きオーバーサンプリング:少数派のサンプルを増やす(複製または補間で合成)アンダーサンプリング:少数派以外のサンプルを減らす(無作為に取り除くなど)
実行の仕方サンプリング:imbalanced-learnのfit_resampleで再標本化したデータで学習する重み付け:class_weightを指定してモデルを学習する
重みの決め方サンプリング:クラスの数をそろえる比率を指定する重み付け:{クラス: 重み}で指定、または'balanced'でn_samples / (n_classes * np.bincount(y))を自動計算

どこで迷っているかを切り分ける

01

正解率が高ければモデルは良いと考えている人

G検定の用語解説では、正解率はクラスの数に偏りがあると実態を見誤りやすい指標とされています。多数派だけを当てても正解率は高くなりうるため、不均衡データでは別の指標もあわせて見ます。

02

少数派を増やすか、多数派を減らすか迷う人

imbalanced-learnのドキュメントは、少数派に新しいサンプルを生成する方法と、少数派以外の観測数を減らす方法の両方を、不均衡データの扱い方として紹介しています。減らす方法は学習に使うサンプル数が減る点が、増やす方法との違いです。

03

データを増減させずに対処できるのか知りたい人

scikit-learnのclass_weightを使うと、データの数を変えずにクラスごとの重みを指定できます。'balanced'を指定すれば、クラス頻度に反比例する重みが自動で調整されます。

具体例で使い分ける

例 1

少数派クラスのサンプルを複製・合成して増やす場合

不均衡データに対して、少数派のサンプルを増やす方法を問う設問です。

  • imbalanced-learnのドキュメントは、少数派のクラスに新しいサンプルを生成する方法を紹介します。最も素朴な方法は、復元抽出で元のサンプルを複製するRandomOverSamplerです。
  • SMOTEとADASYNは、近傍のサンプルの補間で新しい合成サンプルを生成します。

結論: 少数派を増やす対処は、オーバーサンプリングです。

例 2

多数派クラスのサンプルを無作為に取り除く場合

不均衡を、サンプルを減らして解消する方法を問う設問です。

  • 同ドキュメントは、少数派以外のクラスの観測数を減らす方法を、不均衡データの扱い方の一つとして挙げます。
  • 最も単純なのは、対象クラスのサンプルを無作為に取り除く方法です。

結論: 多数派を減らす対処は、アンダーサンプリングです。

例 3

データは変えず、クラスごとの重みを変える場合

サンプル数を変えずに不均衡へ対処する方法を問う設問です。

  • scikit-learnのLogisticRegressionのclass_weightは、{クラスのラベル: 重み}で重みを指定します。指定しなければ、すべてのクラスの重みは1です。
  • 'balanced'を指定すると、入力データのクラス頻度に反比例する重みが自動で調整されます。

結論: データを変えずに重みで対処するのは、クラスの重み付けです。

問題文から答えを選ぶ手順

  1. 1

    変える対象を確認する

    学習データのサンプル数を変えるならサンプリング、クラスごとの重みを変えるなら重み付けです。

  2. 2

    サンプルを増やすか減らすか確認する

    少数派を増やすならオーバーサンプリング、少数派以外を減らすならアンダーサンプリングです。

  3. 3

    増やし方を確認する

    元のサンプルの複製ならRandomOverSampler、補間による合成ならSMOTEやADASYNです。

  4. 4

    評価指標を確認する

    不均衡データでは正解率だけで判断せず、適合率・再現率やバランス正解率もあわせて見ます。

試験での見分け方

  • 1少数派のサンプルを増やすのが、オーバーサンプリング。
  • 2少数派以外のサンプルを減らすのが、アンダーサンプリング。
  • 3データの数を変えず、クラスごとの重みを変えるのが、クラスの重み付け。
  • 4不均衡データでは、正解率だけで評価しない。

誤答しやすい選択肢

正解率が高いので不均衡データでも十分に評価できたと考える

修正: G検定の用語解説では、正解率はクラスの数に偏りがあると実態を見誤りやすい指標とされています。scikit-learnのバランス正解率は、不均衡なデータセットに対処するため、各クラスの再現率の平均として定義されています。

クラスの重み付けは、サンプルを増やす手法だと考える

修正: class_weightはクラスごとの重みを指定するもので、サンプル数は変わりません。サンプルを増やすのはオーバーサンプリングです。

アンダーサンプリングは、情報を失わないと考える

修正: 少数派以外のクラスの観測数を減らす方法なので、学習に使うサンプル数は減ります。

確認問題

Q1少数派のクラスに新しいサンプルを生成して不均衡に対処する手法はどれですか?(オーバーサンプリング・アンダーサンプリング・クラスの重み付け)

答え: オーバーサンプリング

imbalanced-learnのドキュメントが紹介する方法です。

Q2scikit-learnのclass_weightに'balanced'を指定すると、重みは何に反比例して調整されますか?

答え: 入力データのクラス頻度

n_samples / (n_classes * np.bincount(y))で自動計算されます。

Q3scikit-learnのバランス正解率は、何の平均として定義されていますか?

答え: 各クラスで得られた再現率の平均

不均衡なデータセットに対処するための指標です。

到達チェック

  • 不均衡データの意味を言える
  • オーバーサンプリングとアンダーサンプリングの向きの違いを言える
  • クラスの重み付けがデータの数を変えないことを言える
  • 不均衡データで正解率だけに頼れない理由を言える

同じ資格で次に知りたいこと

よくある質問

Q不均衡データとは何ですか?

A

クラスごとのサンプル数に差があるデータです。imbalanced-learnのドキュメントは、この差が学習と予測に影響しうると述べています。

Qオーバーサンプリングとアンダーサンプリングの違いは何ですか?

A

オーバーサンプリングは少数派のクラスに新しいサンプルを生成し、アンダーサンプリングは少数派以外のクラスの観測数を減らします。

Qクラスの重み付けはサンプルを増やしますか?

A

増やしません。scikit-learnのclass_weightはクラスごとの重みを指定するもので、'balanced'ならクラス頻度に反比例する重みが自動で調整されます。

Q不均衡データで正解率だけを見てよいですか?

A

G検定の用語解説では、正解率はクラスの数に偏りがあると実態を見誤りやすいとされています。バランス正解率や適合率・再現率もあわせて見ます。

次に見る比較

執筆: ミナト編集部(運営者情報を見る)