0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】機械学習の前処理:ラベルエンコーディング と One-Hotエンコーディングの使い分け

Posted at

はじめに

機械学習モデルにデータを入力する前には、「前処理」という準備作業が必要です。特に、アンケートの回答にある「男性/女性」や「都道府県」のような文字列データ(カテゴリー変数)は、モデルが扱えるように数値に変換しなければなりません。
今回は、その代表的な手法である「ラベルエンコーディング」と「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エンコーディングが適しています。

このように、前処理の手法はモデルの特性とセットで考えることが大切です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?