カテゴリデータ: 語彙とワンホット エンコーディング

ディメンションという用語は、リージョン内の要素数と同義語である。 特徴ベクトル。 一部のカテゴリ特徴量は低次元です。例:

機能名 カテゴリ数 サンプル カテゴリ
snowed_today 2 True、False
skill_level 3 初心者、実務担当者、エキスパート
season 4 冬、春、夏、秋
day_of_week 7 月曜日、火曜日、水曜日
惑星 8 水星、金星、地球

カテゴリ特徴に含めることのできるカテゴリの数が少ない場合は、 語彙としてエンコードします。語彙エンコーディングでは、モデルは 可能なカテゴリ値を別の特徴として扱うことができます。トレーニング中、 カテゴリごとに異なる重みを学習します

たとえば、自動車の価格に基づいて価格を予測するモデルを作成するとします。 (一部は car_color という名前のカテゴリ特徴に対して行われます)。 おそらく、赤い車は緑の車よりも価値が高いでしょう。 メーカーが提供している外装色は限られているため、car_color は 低次元のカテゴリ特徴量にします。 次の図は、語彙(可能な値)を示しています。 car_color:

図 1. パレットの各色は、それぞれ個別の
      説明します。つまり、各色は特徴ベクトルの個別の特徴です。
      たとえば、「赤」「Orange」という特徴のこれは個別の機能ですが
      といった具合です
図 1. カテゴリごとに固有の特徴。

演習:直感をチェック

正誤問題: 機械学習モデルは直接トレーニングできる。 「Red」や「Black」などの未加工の文字列値( 数値ベクトルに変換します
正しい
トレーニング中、モデルで操作できるのは浮動小数点数のみです。 文字列 "Red" は浮動小数点数ではありません。マイページ "Red" などの文字列を浮動小数点数に変換する必要があります。
False
ML モデルのトレーニングには、 そのため、文字列を浮動小数点数に変換する必要があります。 浮動小数点値を使用することです。

インデックス番号

機械学習モデルで操作できるのは浮動小数点数のみです。 そのため、各文字列を一意のインデックス番号に変換する必要があります。 次の図をご覧ください。

図 2. 各色は一意の整数値に関連付けられています。対象
      例: 「赤」整数 0(Orange)に関連付けられます。新しい
      整数 1 のようになります。
図 2. インデックス登録された特徴。

直感をチェック

表示されたインデックス番号でモデルを直接トレーニングする場合 どうすればよいでしょうか。
インデックス番号でモデルをトレーニングすると、 各値を誤って数値として扱っているため、 "Black"(インデックス番号 5)は有意性が 5 倍になる "Orange"(インデックス番号 1)よりも高い値になります。
いいえ
インデックス番号ではモデルをトレーニングすべきではありません。 その場合、モデルは各インデックス番号を数値として扱います。 "Black"(インデックス番号 5)は モデルにとっての有意性は "Orange" の 5 倍 (インデックス番号 1)。

ワンホット エンコーディング

語彙作成の次のステップは、各インデックス番号を ワンホット エンコーディングを使用します。 ワンホット エンコーディングの場合:

  • 各カテゴリは、N 個の要素からなるベクトル(配列)で表されます。ここで、N 個 カテゴリ数ですたとえば、car_color に 8 個の 表すワンホット ベクトルは 8 つの要素で構成されます。
  • ワンホット ベクトルの要素の 1 つだけの値が 1.0 である。 残りの要素はすべて 0.0 になります。

たとえば、次の表は、各トークンのワンホット エンコーディングを car_color:

機能 Orange 黒人 茶色
"赤" 1 0 0 0 0 0 0 0
"オレンジ" 0 1 0 0 0 0 0 0
"青" 0 0 1 0 0 0 0 0
"黄" 0 0 0 1 0 0 0 0
"緑" 0 0 0 0 1 0 0 0
"ブラック" 0 0 0 0 0 1 0 0
"紫" 0 0 0 0 0 0 1 0
"茶" 0 0 0 0 0 0 0 1

渡されるのは、文字列やインデックス番号ではなく、ワンホット ベクトルです ベクトルに加算されます。モデルは、入力テキストの各要素に対して ベクトルに分割されます。

次の図は、 語彙表現:

図 3. カテゴリをマッピングするエンドツーエンドのプロセスの図
      特徴ベクトルが作成されます。この図では、入力特徴量は「黄色」で、
      「Orange」、「Blue」、「Blue」2 回目になりますシステムは保存された
      vocabulary (「赤」は 0、「オレンジ」は 1、「青」は 2、「黄」は 3、
      入力値を ID にマッピングします。したがって、システムは「黄色」、
      「Orange」、「Blue」、「Blue」3、1、2、2 の順になります。その後、
      ワンホット特徴ベクトルに変換します。たとえば、あるシステムに
      可能な 8 色の場合、3 は 0, 0, 0, 1, 0, 0, 0, 0 になります。
図 3. カテゴリを特徴ベクトルにマッピングするエンドツーエンドのプロセス。

スパース表現

値がほぼ 0(または空)である特徴のことを、 スパースな特徴。多数 car_color などのカテゴリ特徴量は、スパースな特徴量になる傾向があります。 スパース表現 1.0 の位置を保存することを意味します。 ベクトルに格納されます。たとえば、"Blue" のワンホット ベクトルは次のようになります。

[0, 0, 1, 0, 0, 0, 0, 0] です。

1 は位置 2 にあるため(カウントを 0 から始める場合)、 上のワンホット ベクトルのスパース表現は次のようになります。

2

スパース表現の方がメモリ消費量が ベクトルに分割されます。重要なのは、モデルをトレーニングする必要があることです。 ワンホット ベクトルです。

カテゴリデータの外れ値

数値データと同様に、カテゴリデータにも外れ値が含まれます。仮説 car_color には、人気のある色だけでなく、めったに使用されない色も含まれています。 外れ値の色("Mauve""Avocado" など)。 これらの外れ値に個別のカテゴリを与えるのではなく、 1 つの“キャッチオール”にまとめることができますout-of-vocabulary というカテゴリ (OOV)。言い換えると、すべての外れ値の色をビニングして 1 つの 作成しますシステムはその外れ値バケットの 1 つの重みを学習します。

高次元カテゴリ特徴量のエンコード

一部のカテゴリ特徴は、次のような多くの次元を持ちます。 それらを次の表に示します。

機能名 カテゴリ数 サンプル カテゴリ
words_in_english ~ 500,000 「幸せ」、「歩いている」
US_postal_codes 約 42,000 「02114」、「90301」
last_names_in_Germany ~ 850,000 「Schmidt」、「Schneider」

カテゴリの数が多い場合、ワンホット エンコーディングは通常はおすすめしません。 エンベディング(別のモジュールで詳述) エンべディング モジュールは通常、 ずっと良い選択肢ですエンべディングを使用すると、 次の 2 つの点でモデルにメリットがあります。

  • 通常、モデルのトレーニングは速くなります。
  • 通常、構築されたモデルの方が短時間で予測を推測できます。つまり、 レイテンシが低くなります。

ハッシュ化ハッシュとも呼ばれます) トリック)は、次元数を減らすためにあまり使われない方法です。