ワンホットエンコーディング (G検定)

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

1. 定義と概要

ワンホットエンコーディング(One-Hot Encoding)とは、カテゴリ変数を、カテゴリの種類数と同じ数の列に変換し、該当するカテゴリの列だけを1、それ以外をすべて0にする処理です。

例えば「材料」というカテゴリ変数に「鉄」「アルミ」「樹脂」の3種類があるとします。この場合、「材料_鉄」「材料_アルミ」「材料_樹脂」という3つの列が新しく作られ、値が「鉄」であれば材料_鉄の列だけが1になり、残り2つの列は0になります。1になる列が必ず1つだけという形が、この処理の名前の由来にもなっています。

機械学習のアルゴリズムは数値の演算をもとに動くため、文字列のままのカテゴリデータを直接学習に使うことができません。かといって各カテゴリに単純に0、1、2と番号を振ると、値の大小や順序をアルゴリズムが誤って学習してしまう恐れがあります。

そこで登場したのが、各カテゴリを独立した列に割り当て、該当する箇所だけを1にする方法です。列を分けてしまえば、どのカテゴリも他のカテゴリより大きいとも小さいとも解釈されません。順序を持たせずにカテゴリを数値化できる処理として、ワンホットエンコーディングは幅広い場面で使われてきました。

2. 試験対策ポイント

処理の要点は、カテゴリの種類数と同じ数だけ新しい列が作られ、元の値に対応する列だけが1、残りがすべて0になる点です。あわせて問われやすいのが、どの種類のデータに向く処理なのかという相性の話で、尺度の違いと対応づけると整理できます。

尺度の種類 データの例 ワンホットエンコーディングとの相性
名義尺度(順序に意味のない分類) 血液型、都道府県 向く。順序を持たせずに数値化できる
順序尺度(大小関係に意味がある分類) 震度の低・中・高 そのまま適用すると、本来意味のある大小関係の情報が失われる

つまり、この処理が力を発揮するのは順序を持たない名義尺度のデータです。順序尺度のデータに機械的に当てはめてしまうと、せっかくデータが持っていた大小の情報が落ちてしまう点に注意が必要です。

カテゴリの種類数と同じ数の列をすべて作成すると、ダミー変数(カテゴリの有無を0と1だけで表した変数)どうしが完全に従属し、いずれか1列の値が残りの列から一意に決まってしまいます。多重共線性(ダミー変数トラップ)とは、この列同士が計算上重複し合い、結果の解釈が難しくなる状態です。実務では、この重複を避けるために先頭など1つのカテゴリに対応する列を除き、種類数より1つ少ない列数(N-1列)にする対応が知られています。

カテゴリの種類数が非常に多い高カーディナリティ(1つの項目が持つカテゴリの種類がとても多い状態)なデータにワンホットエンコーディングをそのまま適用すると、列数が種類数に比例して増加します。その結果できあがるのは、大部分が0で埋まる疎(スパース。情報の密度が低い状態)な高次元データです。

この状態は、次元の呪い(データの列が増えすぎて、学習に必要なデータ量が足りなくなる問題)や計算コスト・メモリ使用量の増大、過学習(学習データに適合しすぎて、未知のデータへの対応力が下がる状態)のリスクにつながります。

実務上の対応としては、出現頻度が高い上位カテゴリだけをワンホットエンコーディングし、残りを「その他」へまとめる方法が知られています。代表的な代替手段の一つが、カウントエンコーディング(カテゴリが出現した回数でカテゴリを置き換える変換方法)です。もう一つがターゲットエンコーディング(予測したい対象の値である目的変数の平均値でカテゴリを置き換える変換方法)です。

3. 関連概念との比較・相違点

混同しやすい関連用語は、何を指す言葉なのか、カテゴリをどう数値へ置き換えるのかという2点で並べると見分けがつきます。

用語 何を指すか・どう変換するか ワンホットエンコーディングとの違い
ワンホットベクトル(1つの要素だけが1で残りが0になるベクトル) ワンホットエンコーディングによって作られる結果物 処理そのものではなく、変換後の結果の形式を指す
ラベルエンコーディング カテゴリに0、1、2と整数の番号を振り分ける変換方法 数値に順序が生まれるため、順序尺度のデータに向く
カウントエンコーディング カテゴリが出現した回数でカテゴリを置き換える変換方法 列数を増やさず、1つの数値列にまとめる
ターゲットエンコーディング 目的変数(予測したい対象の値)の平均値でカテゴリを置き換える変換方法 列数を増やさず、目的変数の統計量を使う

ワンホットベクトルとの最大の違いは、処理そのものを指すか、変換後の結果の形式を指すかという点にあります。ワンホットエンコーディングはカテゴリ変数を0と1の列に変換する処理の名前であり、ワンホットベクトルはその処理によって得られる結果物にあたります。

ラベルエンコーディングとの最大の違いは、割り当てる数値の性質です。ラベルエンコーディングは各カテゴリに整数を割り当てるため順序のある順序尺度のデータに向き、ワンホットエンコーディングは列を分けることで順序を持たせないため、順序のない名義尺度のデータに向きます。

ターゲットエンコーディングやカウントエンコーディングとの共通点は、列数を増やさず1つの数値列に置き換える点にあり、カテゴリ数が多いときの次元爆発対策として使われる立場が同じです。この2つの最大の違いは、目的変数の統計量で置き換えるか、カテゴリの出現回数で置き換えるかという点にあります。

4. ビジネス・実務での活用シナリオ

不動産・住宅価格予測の分野では、物件の「都道府県」や「間取りタイプ」のような名義尺度のカテゴリ変数を回帰モデル(数値を予測するモデル)へ投入する前処理として、ワンホットエンコーディングが使われます。このとき、多重共線性を避けるために種類数より1つ少ない列数にする実務対応も欠かせません。

EC・レコメンドの分野では、商品カテゴリのように種類数が数百から数千に及ぶ高カーディナリティなデータが典型例です。そのままワンホットエンコーディングを適用すると列数が爆発してしまうため、出現頻度が高い上位カテゴリだけをエンコードし、残りを「その他」にまとめる工夫が実務で使われています。

医療・与信審査の分野では、血液型や疾患区分のような順序のないカテゴリ変数を分類モデル(カテゴリを予測するモデル)へ投入する前処理として、ワンホットエンコーディングが使われます。数値の大小を割り当てるラベルエンコーディングとは異なり、本来意味のない大小関係をモデルに誤って学習させない点が、この分野で重視される理由です。

5. 要点まとめ

  • ワンホットエンコーディングは、カテゴリ変数をカテゴリの種類数と同じ数の0と1の列に変換する処理で、順序を持たない名義尺度のデータに向きます。
  • 種類数と同じ列をすべて使うと多重共線性(ダミー変数トラップ)が生じるため、実務では種類数より1つ少ない列数(N-1列)にする対応が必要です。
  • カテゴリ数が多いと列数が比例して増え次元が爆発するため、頻出カテゴリへの絞り込みやカウント・ターゲットエンコーディングなど代替手法との使い分けが論点になります。

6. 確認問題

問1ワンホットエンコーディングは、カテゴリの種類数と同じ数だけ0または1の列を作り、該当するカテゴリの列だけを1にする処理である。

解答・解説をみる

○ 正しい

定義そのものであり、順序のない名義尺度のデータに向く処理です。

問2カテゴリの種類数と同じ数だけダミー変数の列をすべて作成しても、多重共線性(ダミー変数トラップ)は発生しない。

解答・解説をみる

× 誤り

正しくは、種類数と同じ列をすべて作ると1列の値が残りの列から一意に決まってしまい多重共線性が生じるため、実務では種類数より1つ少ない列数(N-1列)にする対応が必要です。

問3カテゴリの種類数が非常に多い変数にワンホットエンコーディングを適用すると、列数が種類数に比例して増加し、計算コストやメモリ使用量の増大につながりやすい。

解答・解説をみる

○ 正しい

種類数と列数が一致するため、種類数が数千規模になれば同じ数の疎な列が作られ、計算コストやメモリ使用量の増加、過学習のリスクにつながります。