はじめに
機械学習モデルにデータを入力する前には、「前処理」という準備作業が必要です。特に、アンケートの回答にある「男性/女性」や「都道府県」のような文字列データ(カテゴリー変数)は、モデルが扱えるように数値に変換しなければなりません。
今回は、その代表的な手法である「ラベルエンコーディング」と「One-Hotエンコーディング」の違いと使い分けについて、講義で学んだことをまとめます。
手法1:ラベルエンコーディング(番号を振る)
これは、カテゴリーに単純に番号を振っていく方法です。
{"東京都": 0, "神奈川県": 1, "千葉県": 2}
問題点: この方法だと、モデルが「千葉県(2) > 神奈川県(1)」のような、本来存在しない大小関係を学習してしまう可能性があります。
手法2:One-Hotエンコーディング(フラグを立てる)
この問題点を解決するのがOne-Hotエンコーディングです。カテゴリーごとに新しい列(特徴量)を作り、該当する列に1を、それ以外に0を立てます。
| is_tokyo | is_kanagawa | is_chiba | |
|---|---|---|---|
| 東京都 | 1 | 0 | 0 |
| 神奈川県 | 0 | 1 | 0 |
| 千葉県 | 0 | 0 | 1 |
問題点: この方法だと、カテゴリーの種類が47都道府県のように多い場合、特徴量の数が47個増えてしまい、データの次元が大きくなってしまいます
まとめ:モデルとの相性で使い分ける
どちらの手法が良いかは、使用する機械学習アルゴリズムによって異なります。
-
決定木系のモデル(LightGBMなど)を使うなら → ラベルエンコーディング
- 決定木は「値が1より大きいか」といった分岐で判断するため、数値の大小関係に影響されにくいと言われています。
-
線形回帰やニューラルネットワークを使うなら → One-Hotエンコーディング
- これらのモデルは数値の大きさが直接計算に影響するため、意図しない順序性がないOne-Hotエンコーディングが適しています。
このように、前処理の手法はモデルの特性とセットで考えることが大切です。