カテゴリー変数のエンコーディング方法比較(One-Hot vs Label)

プログラミング

カテゴリー変数のエンコーディング手法比較:One-Hot EncodingとLabel Encoding

カテゴリー変数は、機械学習モデルにおいてしばしば登場するデータ型です。これらの変数は、数値ではないため、そのままではモデルに入力できません。そこで、カテゴリー変数を数値データに変換する「エンコーディング」という処理が必要になります。代表的なエンコーディング手法として、One-Hot EncodingとLabel Encodingが挙げられます。本稿では、これらの手法について、その特性、利点、欠点、そして適用場面を比較検討していきます。

One-Hot Encoding (ワンホットエンコーディング)

One-Hot Encodingは、カテゴリー変数の各カテゴリを、それぞれ独立した新しいバイナリ変数(0または1の値をとる変数)に変換する手法です。具体的には、元のカテゴリー変数にN個のカテゴリがある場合、N個の新しい列が作成されます。各行において、その行が属するカテゴリに対応する列の値は1となり、それ以外の列の値はすべて0となります。

One-Hot Encodingの仕組み

例えば、「色」というカテゴリー変数があり、「赤」「青」「緑」という3つのカテゴリがあるとします。
これをOne-Hot Encodingすると、以下のようになります。

| 色 | 色_赤 | 色_青 | 色_緑 |
|——|——-|——-|——-|
| 赤 | 1 | 0 | 0 |
| 青 | 0 | 1 | 0 |
| 緑 | 0 | 0 | 1 |

このように、各カテゴリがユニークなベクトル表現を持つことになります。

One-Hot Encodingの利点

  • 順序性の誤解を防ぐ: カテゴリ間に本来存在しない順序関係をモデルに誤解させるリスクがありません。例えば、「低」「中」「高」というカテゴリを数値の1, 2, 3に変換すると、モデルは「高」が「中」の2倍の価値を持つと誤解する可能性がありますが、One-Hot Encodingではこのような問題は生じません。
  • 線形モデルとの親和性: 線形モデル(線形回帰、ロジスティック回帰など)との相性が良いです。各カテゴリが独立した特徴量として扱われるため、モデルが各カテゴリの効果を学習しやすくなります。
  • 解釈性の向上: 各カテゴリが独立した特徴量となるため、モデルの予測結果を解釈する際に、どのカテゴリが予測に貢献しているのかを理解しやすくなります。

One-Hot Encodingの欠点

  • 次元の呪い (Curse of Dimensionality): カテゴリー変数のカテゴリ数が多い場合、生成される特徴量の次元が急激に増加します。これは「次元の呪い」として知られ、モデルの学習に必要なデータ量が増加したり、計算コストが増大したり、過学習のリスクを高めたりする原因となります。
  • データ量の増加: 新しい列が多数生成されるため、データセットのサイズが大きくなる可能性があります。

Label Encoding (ラベルエンコーディング)

Label Encodingは、カテゴリー変数の各カテゴリを、それぞれ整数値に一対一で対応させる手法です。例えば、「赤」「青」「緑」というカテゴリを、それぞれ0, 1, 2といった整数に変換します。

Label Encodingの仕組み

先ほどの「色」の例でLabel Encodingを適用すると、以下のようになります。

| 色 | 色_エンコード |
|——|————–|
| 赤 | 0 |
| 青 | 1 |
| 緑 | 2 |

この変換により、カテゴリー変数が数値データとして扱えるようになります。

Label Encodingの利点

  • シンプルで実装が容易: 実装が非常に簡単で、計算コストも低いです。
  • 次元の増加がない: 新しい列が生成されないため、データセットの次元が増加することはありません。

Label Encodingの欠点

  • 順序性の誤解: カテゴリ間に本来存在しない順序関係をモデルに誤解させる可能性があります。上記の例では、モデルは0 < 1 < 2 という数値の大小関係を認識し、カテゴリ間に「順序」や「距離」があると誤解する可能性があります。これは、決定木ベースのモデルでは問題にならないこともありますが、線形モデルなどでは深刻な問題を引き起こすことがあります。
  • モデルの性能低下: 上記の順序性の誤解により、モデルの学習がうまくいかず、性能が低下する可能性があります。

適用場面の比較と選択基準

どちらのエンコーディング手法を選択するかは、扱うデータや使用するモデルの特性によって異なります。

One-Hot Encodingが適している場合

  • カテゴリ間に順序関係がない場合: 例:「都道府県」「性別」「製品カテゴリ」など。
  • 線形モデルを使用する場合: 線形モデルは、特徴量間の線形な関係性を学習するため、カテゴリ間の順序性の誤解を避けることが重要です。
  • カテゴリ数が少ない場合: カテゴリ数が多すぎると、次元の呪いの問題が顕著になります。

Label Encodingが適している場合

  • カテゴリ間に明らかな順序関係がある場合: 例:「学歴(小卒、中卒、大卒)」「評価(悪い、普通、良い)」など。この場合、数値の大小関係が意味を持つため、Label Encodingが適しています。ただし、その順序が適切に定義されていることが前提です。
  • 決定木ベースのモデルを使用する場合: 決定木やランダムフォレスト、勾配ブースティングなどのツリーベースのモデルは、特徴量の閾値に基づいて分割を行うため、Label Encodingによる順序性の誤解の影響を受けにくい傾向があります。
  • カテゴリ数が非常に多い場合: One-Hot Encodingによる次元の爆発を防ぎたい場合に選択肢となります。ただし、その場合でも、順序性の誤解を避けるための他のエンコーディング手法(例:Target Encoding)を検討する価値はあります。

その他のエンコーディング手法

One-Hot EncodingとLabel Encoding以外にも、カテゴリー変数をエンコードするための様々な手法が存在します。

  • Ordinal Encoding: Label Encodingと似ていますが、カテゴリ間の順序関係を明示的に指定してエンコードします。
  • Target Encoding (Mean Encoding): カテゴリを、そのカテゴリに属するデータの目的変数の平均値で置き換える手法です。教師あり学習において、目的変数との関連性を直接取り込むことができるため、高い精度が期待できますが、過学習に注意が必要です。
  • Frequency Encoding: カテゴリを、そのカテゴリの出現頻度で置き換える手法です。
  • Binary Encoding: カテゴリをまず整数に変換し、その整数をバイナリ表現に変換し、各ビットを特徴量とする手法です。One-Hot Encodingよりも次元を抑えつつ、カテゴリ間の関係性をある程度考慮できます。

これらの手法は、それぞれの特性を理解し、データや目的に応じて使い分けることが重要です。

まとめ

One-Hot Encodingは、カテゴリ間の順序性の誤解を防ぎ、線形モデルとの親和性が高いという利点がありますが、カテゴリ数が多い場合に次元の呪いの問題を引き起こします。Label Encodingは、実装が容易で次元を増加させませんが、カテゴリ間の順序性の誤解という大きな欠点があります。

どちらの手法を選択するかは、カテゴリー変数の特性、使用する機械学習モデル、そしてデータセットのサイズを総合的に考慮して決定する必要があります。多くの場合、まずはOne-Hot Encodingを試してみて、次元の呪いの問題が発生するようであれば、他のエンコーディング手法や次元削減技術を検討するのが一般的なアプローチと言えるでしょう。また、タスクによっては、複数のエンコーディング手法を組み合わせたり、ドメイン知識を活かしたエンコーディングを設計したりすることも有効です。