カテゴリ変数エンコーディング かてごりへんすうえんこーでぃんぐ
カテゴリ変数エンコーディングワンホットラベルエンコーディング特徴量変換
カテゴリ変数エンコーディングについて教えて
簡単に言うとこんな感じ!
「東京・大阪・名古屋」や「猫・犬・鳥」みたいな文字のカテゴリデータを、コンピューターが計算できる数値に変換する処理だよ。どう変換するかで「東京と大阪は似てる」みたいな誤った情報をモデルに与えてしまうリスクがあるから、手法の選択が大事なんだ!
カテゴリ変数エンコーディングとは
カテゴリ変数エンコーディングとは、「性別」「都道府県」「商品カテゴリ」などのカテゴリ型データを機械学習モデルが扱える数値に変換する前処理のことです。
多くの機械学習アルゴリズムは数値しか扱えないため、カテゴリ変数の変換は必須の作業です。変換方法の選択を誤ると、存在しない順序関係をモデルに学習させてしまうという問題が生じます(例:東京=0, 大阪=1, 名古屋=2 とすると「名古屋 > 東京 × 2」という計算が成立してしまう)。
主なエンコーディング手法
ラベルエンコーディング(Label Encoding)
カテゴリを整数に変換(0, 1, 2, …)
東京 → 0 / 大阪 → 1 / 名古屋 → 2
- 向き:順序に意味がある変数(低・中・高)、決定木系アルゴリズム
- 注意:順序なし変数に使うと誤った大小関係を生む
ワンホットエンコーディング(One-Hot Encoding)
各カテゴリ値を別々の0/1列に展開
東京 → [1, 0, 0]
大阪 → [0, 1, 0]
名古屋 → [0, 0, 1]
- 向き:順序なしカテゴリ変数、線形モデル
- 注意:カテゴリ数が多いと列が爆発的に増える(高次元呪い)
ターゲットエンコーディング(Target Encoding)
カテゴリを対応するターゲット変数の平均値に変換
東京 → 平均購買額 45万円
大阪 → 平均購買額 38万円
- 向き:高カーディナリティのカテゴリ変数
- 注意:情報漏洩(data leakage)に注意が必要
その他の手法
| 手法 | 説明 |
|---|---|
| バイナリエンコーディング | ラベルを2進数で表現し列数を削減 |
| 頻度エンコーディング | 各カテゴリの出現頻度に変換 |
| ハッシュエンコーディング | ハッシュ関数で固定長ベクトルに変換 |
| 埋め込みエンコーディング | 学習可能なベクトルで表現(深層学習向け) |
歴史と背景
- 統計学の時代から:ダミー変数(ワンホット)が回帰分析に使われてきた
- 2010年代:KaggleでTarget Encodingが高精度モデルの定番テクニックに
- 現在:LightGBM・CatBoostはカテゴリ変数をネイティブサポート(変換不要)