AI資格ドリル
資格を選ぶ

用語比較

ワンホットエンコーディングとラベルエンコーディングの違い|カテゴリ変数の数値化(DS検定)

カテゴリ変数(色や職業のような文字の値)を数値にするとき、ワンホットエンコーディングは水準ごとに0か1の列を作り、ラベルエンコーディングは水準に整数を1つずつ割り当てます。違いは、数値に大小関係が入るかどうかです。

DS検定のデータ前処理では、順序のない名義尺度はワンホット、順序のある順序尺度は整数でもよいと判断します。名義尺度の色に0・1・2を割り当てると、「青は赤の2倍」のような意味のない大小が入ってしまいます。

この記事の根拠と出典

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

ワンホットエンコーディングとラベルエンコーディングの要点

ワンホットエンコーディング

n 個の水準を持つ1つの列を、n 個の0/1の列に置き換える。各行で1になる列は1つだけで、水準どうしに大小関係を持ち込まない。scikit-learn では OneHotEncoder が対応し、one-of-K やダミー変数化とも呼ばれる。

ラベルエンコーディング

水準に整数を1つずつ割り当て、列は1つのまま保つ。列数は増えないが、整数の大小が意味を持つように読まれる。scikit-learn では、特徴量のカテゴリを整数にするのが OrdinalEncoder、目的変数のラベルを0〜クラス数-1の値にそろえるのが LabelEncoder と、役割が分かれている。

違いを表で確認

比較軸ワンホットエンコーディングラベルエンコーディング
変換後の列数水準の数だけ増える(3水準なら3列)1列のまま
値0か1のみ0から水準の数-1までの整数
大小関係持ち込まない整数の大小が意味を持つように読まれる
向く尺度名義尺度(色・職業・都道府県など)順序尺度(小・中・大、評価の段階など)
水準が多いとき列が増えて、データが大きくなる列は増えない
試験で見る語ダミー変数、0/1の列、名義尺度、順序がない整数に置き換える、順序尺度、大小に意味がある、水準に番号を振る

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

01

カテゴリ変数をとりあえず整数に置き換えている人

scikit-learn の公式ドキュメントは、カテゴリを整数に変えた表現は、連続値を前提とする推定器ではカテゴリに順序があるものと解釈されるため、望ましくないことが多いと述べています。ブラウザの種類のように順序のない値を整数にすると、数値の大小が学習に影響しかねません。

02

ワンホットにすれば列が増えすぎないか心配な人

水準が3つなら3列、100なら100列になります。水準が非常に多い変数をそのままワンホットにすると列が大きく増えるので、まとめられる水準があるか先に検討します。順序のある変数なら、整数のままのほうが列を増やさずに済みます。

03

名義尺度と順序尺度の区別があいまいな人

色や職業のように順序のない値が名義尺度、「小・中・大」のように順序のある値が順序尺度です。どちらの尺度かを先に決めると、ワンホットにするか整数でよいかが決まります。

具体例で使い分ける

例 1

色(赤・青・緑)を2通りで数値にする

4行のデータの「色」列が、赤、青、緑、青の順に入っています。

  • ラベルエンコーディングでは、赤=0、青=1、緑=2のように割り当て、列は 0, 1, 2, 1 の1列のままです(割り当ての順番は実装による)。
  • ワンホットエンコーディングでは、列が「赤」「青」「緑」の3つになります。1行目は(1, 0, 0)、2行目は(0, 1, 0)、3行目は(0, 0, 1)、4行目は(0, 1, 0)です。
  • ラベルエンコーディングでは、緑(2)は赤(0)より大きく、青(1)は赤と緑の中間という大小関係が、数値の上では生じます。色にそのような順序はありません。

結論: 色は名義尺度なので、ワンホットにして大小関係を持ち込まないのが原則です。

例 2

サイズ(小・中・大)を整数にする

「サイズ」列が、小、中、大、中の順に入っています。

  • 小=1、中=2、大=3と割り当てると、列は 1, 2, 3, 2 の1列のままです。
  • 小<中<大という順序は、整数の大小と一致しています。
  • ワンホットにすると3列に増えますが、順序の情報は列の並びからは読み取れなくなります。

結論: 順序尺度で、順序どおりに整数を割り当てるなら、ラベルエンコーディング(整数への置き換え)でも大小関係が意味を持つので問題になりません。ただし、小と中の差と、中と大の差が等しいとは限らない点には注意します。

例 3

ワンホットで列が1つ余る理由を確かめる

「色」を3列のワンホットにした後、列を1つ減らして2列だけにする場合を考えます。

  • 「赤」「青」の2列だけを残すと、赤は(1, 0)、青は(0, 1)、緑は(0, 0)と表せます。
  • 3列すべてを使う表現では、各行の3つの値を足すと必ず1になります。

結論: 水準の数より1列少なくしても、すべての水準を区別できます。3列すべてを使うか1列減らすかは、使う手法や教材の説明に従います。

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

  1. 1

    変数の尺度を決める

    値に順序があるかを確認します。色や職業のように順序がなければ名義尺度、小・中・大のように順序があれば順序尺度です。

  2. 2

    順序がなければワンホットにする

    名義尺度は、水準ごとの0/1の列にします。整数にすると、存在しない大小関係を持ち込みます。

  3. 3

    順序があれば、順序どおりの整数を検討する

    順序尺度は、順序と整数の大小が一致するように割り当てます。割り当てが順序と一致しないなら、ワンホットに戻します。

  4. 4

    列数とデータの大きさを見直す

    水準が多い名義尺度は列が増えるので、まとめられる水準がないか確認します。

試験での見分け方

  • 1名義尺度(順序のない値)は、ワンホットエンコーディングにする。
  • 2順序尺度で、順序どおりに整数を割り当てるなら、整数への置き換えでもよい。
  • 3ワンホットは、水準の数だけ0/1の列が増える。
  • 4整数への置き換えは、列が1つのままだが、整数の大小が意味を持つように読まれる。
  • 5水準が非常に多い名義尺度は、列が増えるのでまとめ方を検討する。

誤答しやすい選択肢

順序のない値に、0・1・2と整数を振って済ませる

修正: 整数の大小が意味を持つように読まれ、存在しない順序を持ち込みます。名義尺度はワンホットにします。

ワンホットは列が増えないと考える

修正: n 個の水準を持つ1列は、n 個の0/1の列になります。3水準なら3列です。

順序のある値を、順序と関係なく整数にする

修正: 小・中・大を大・小・中の順に1・2・3とすると、整数の大小が本来の順序と一致しません。順序どおりに割り当てます。

ワンホットの各行に、1が複数あると考える

修正: 各行で1になるのは、その行の水準に対応する1つの列だけで、残りは0です。

確認問題

Q14水準の名義尺度の列をワンホットエンコーディングすると、列は何個になる?

答え: 4個

n 個の水準を持つ1列は、n 個の0/1の列になるので、4水準なら4列です。

Q2職業(会社員・自営業・学生)を、0・1・2の整数にして使う場合の問題点は?

答え: 存在しない大小関係が入る

職業は名義尺度で、順序がありません。整数にすると、数値の大小が順序として読まれるおそれがあります。

Q3「小・中・大」を1・2・3にすることは、なぜ許容されやすい?

答え: 順序と整数の大小が一致するから

サイズは順序尺度で、小<中<大の順序が整数の大小と一致します。ただし、各段階の間隔が等しいとは限りません。

Q43水準のワンホットで、ある行の値が (0, 1, 0) のとき、その行の水準は?

答え: 2番目の列に対応する水準

ワンホットでは、1になっている列がその行の水準を表します。

到達チェック

  • ワンホットが、水準の数だけ0/1の列を作る方式だと説明できる
  • 整数への置き換えが、大小関係を持ち込む理由を説明できる
  • 名義尺度にはワンホット、順序尺度には整数、という使い分けを説明できる
  • 水準が多い名義尺度でワンホットにしたときの注意点を説明できる

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

よくある質問

Qワンホットエンコーディングとラベルエンコーディングは何が違う?

A

ワンホットは水準ごとの0/1の列に置き換え、ラベルエンコーディングは水準に整数を割り当てて1列のまま保ちます。整数にすると大小関係が入るので、順序のない値にはワンホットを使います。

Qダミー変数とワンホットは同じ?

A

scikit-learn の公式ドキュメントは、ワンホットを one-of-K、またはダミー変数化とも呼ぶと述べています。試験や教材によって呼び方が違うことがあるので、問題文の定義に合わせます。

Q決定木ならラベルエンコーディングでもよい?

A

手法によって事情が変わります。本ページは尺度の違いを軸にした整理にとどめ、個別のモデルでの扱いは、問題文や教材の説明に従ってください。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)