ラベル エンコーディングとワンホット エンコーディング: 違いは何ですか?


機械学習では、カテゴリ変数をアルゴリズムで簡単に使用できる何らかの数値形式に変換することがよくあります。

カテゴリ変数を数値変数に変換するには、次の 2 つの一般的な方法があります。

1. ラベル エンコーディング:アルファベット順に基づいて、各カテゴリ値に整数値を割り当てます。

2. ワン ホット エンコーディング:元のカテゴリ値を表す値 0 と 1 を取る新しい変数を作成します。

たとえば、2 つの変数を含む次のデータセットがあり、 Team変数をカテゴリ変数から数値変数に変換するとします。

次の例は、タグ エンコーディングワンホット エンコーディングの両方を使用してこれを行う方法を示しています。

例: ラベルエンコーディングの使用

ラベル エンコーディングを使用して、 Team列の一意の値をアルファベット順に基づいて整数値に変換します。

この例では、次のことがわかります。

  • 各「A」値は0に変換されています。
  • 各「B」値は1に変換されています。
  • 各「C」の値は2に変換されました。

Team列をカテゴリ変数から数値変数に正常に変換しました。

例: 単一のワンホット エンコードの使用

ワンホット エンコーディングを使用して、Team 列を0 と 1 の値のみを含む新しい変数変換します

このアプローチを使用する場合、元のカテゴリ変数の一意の値ごとに新しい列を作成します。

たとえば、カテゴリ変数Team には3 つの一意の値があったため、データセットに値 0 または 1 をすべて含む3 つの新しい列を作成しました。

新しい列の値を解釈する方法は次のとおりです。

  • Team列の元の値が A の場合、新しいTeam_A列の値は 1 になります。それ以外の場合、値は 0 になります。
  • Team列の元の値が B の場合、新しいTeam_B列の値は 1 になります。それ以外の場合、値は 0 になります。
  • Team列の元の値が C の場合、新しいTeam_C列の値は 1 になります。それ以外の場合、値は 0 になります。

Team列を 1 つのカテゴリ変数から 3 つの数値変数 (「ダミー」変数とも呼ばれる) に変換することに成功しました。

: 回帰モデルまたは他の機械学習アルゴリズムでこれらの「ダミー」変数を使用する場合は、 ダミー変数のトラップを避けるように注意してください。

タグ エンコーディングとワンホット エンコーディングをいつ使用するか

ほとんどのシナリオでは、ラベル エンコーディングにより値間に順位があるように見えるため、カテゴリ変数を数値変数に変換するにはワンホット エンコーディング推奨されます。

たとえば、ラベル エンコーディングを使用してチームを数値変数に変換した場合を考えてみましょう。

ラベルによってエンコードされたデータは、チーム C の数値が高いため、チーム B およびチーム A よりも何らかの形で大きいか背が高いように見えます。

元のカテゴリ変数が実際に自然な順序付けまたはランキングを持つ順序変数である場合、これは問題になりませんが、多くのシナリオではそうではありません。

ただし、ワンホット コーディングの欠点の 1 つは、元のカテゴリ変数に一意の値があるのと同じ数の新しい変数を作成する必要があることです。

これは、カテゴリ変数に 100 個の一意の値がある場合、ワンホット エンコーディングを使用するときに 100 個の新しい変数を作成する必要があることを意味します。

データ セットのサイズと操作する変数のタイプに応じて、ワンホット エンコーディングまたはラベル エンコーディングが優先される場合があります。

追加リソース

次のチュートリアルでは、実際にラベル エンコーディングを実行する方法を説明します。

次のチュートリアルでは、実際にワンホット エンコーディングを実行する方法を説明します。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です