カテゴリデータの変換

一部の特徴は、順序付きの関係にない個別の値である場合があります。犬、言葉、郵便番号などが該当します。このような特徴はカテゴリと呼ばれ、それぞれの値がカテゴリと呼ばれます。カテゴリ値は文字列や数字で表すことができますが、これらの数値を比較したり、互いに引いたりすることはできません。

多くの場合、整数値を含む特徴は、数値データではなくカテゴリデータとして表す必要があります。たとえば、値が整数の郵便番号機能があるとします。この特徴を数値で誤って表す場合は、モデルに異なる郵便番号間の数値関係を見つけるよう求めています。たとえば、郵便番号が 20004 で、郵便番号が 10002 でシグナルが 2 倍(または半分)であるとモデルが判断することが期待されます。郵便番号をカテゴリデータとして表すことで、モデルは郵便番号ごとに個別のシグナルを見つけることができます。

曜日やデータの色が限られているなど、データ フィールドのカテゴリ数が少ない場合は、カテゴリごとに固有の特徴を作成できます。例:

パレット内の各色は個別の対象物として表されます。
つまり、各色は特徴ベクトル内の個別の特徴です。たとえば、赤は特徴、オレンジ色は別の機能です。 図 1: 各カテゴリに固有の機能。

 

すると、モデルでは色ごとに個別の重み付けが学習されます。たとえば、モデルは赤色の自動車が緑の自動車よりも高価であることを学習できるでしょう。

特徴をインデックスに登録できます。

パレット内の各色が同じ対象物に属するようになりました。
つまり、色は特徴ベクトルの 1 つの特徴だけで、色ごとに固有の値があります。たとえば、赤は 0、オレンジは 1 という値になります。 図 2: インデックス登録された特徴。

 

このようなマッピングは「語彙」と呼ばれます。

語彙

語彙において、それぞれの値は固有の特徴を表します。

Index NumberCategory
0Red
1Orange
2Blue
......

このモデルは、文字列からインデックスを検索し、1.0 を特徴ベクトルの対応するスロットに割り当て、0.0 を特徴ベクトルの他のすべてのスロットに割り当てます。

カテゴリを特徴ベクトルにマッピングするエンドツーエンドのプロセス図。この図では、入力特徴は黄色、オレンジ色、青色、青色です。システムは、保存された語彙(赤は 0、オレンジは 1、青は 2、黄は 3 など)を使用して、入力値を ID にマッピングします。つまり、黄色、オレンジ、青、青が 3、1、2、2 にマッピングされます。これらの値はワンホットな特徴ベクトルに変換されます。たとえば、7 つの色があるシステムの場合、3 は 0.0、0.0、0.0、1.0、0.0、0.0、0.0 になります。 図 3: カテゴリを特徴ベクトルにマッピングするエンドツーエンドのプロセス。

スパース表現に関する注意事項

カテゴリが曜日の場合、たとえば、金曜日を特徴ベクトル [0, 0, 0, 0, 1, 0, 0] で表します。ただし、ML システムの実装のほとんどは、このベクトルをメモリ内でスパース表現で表します。一般的な表現は、空でない値とそれに対応するインデックスのリストです。たとえば、値の場合は 1.0、インデックスの場合は [4] です。これにより、大量の 0 を格納するメモリを少なくし、行列の乗算を効率化できます。[4] は [0, 0, 0, 0, 1, 0, 0] と等価です。

語彙不足(OOV)

数値データに外れ値が含まれているように、カテゴリデータにも外れ値が含まれます。たとえば、自動車の説明を含むデータセットを考えてみましょう。このデータセットの特徴の一つは、車の色かもしれません。このデータセットに一般的な車の色(黒、白、グレーなど)がよく表現されており、それぞれの色をカテゴリとして扱うと、さまざまな色が値にどのように影響するかを把握できます。しかし、このデータセットには、偏心色(モーブ、ピューズ、アボカド)を持つ少数の車が含まれているとします。これらの色ごとに別々のカテゴリを指定するのではなく、Out of VocabOOV)というキャッチオール カテゴリにまとめてください。OOV を使用すると、各希少色でのトレーニング時間を無駄にすることはありません。

Hashing

別の方法として、すべての文字列(カテゴリ)を利用可能なインデックス空間にハッシュすることもできます。多くの場合、ハッシュ化は競合を引き起こしますが、モデルには、特定の問題に対して有効な同じインデックス内のカテゴリの共有表現が学習されます。

重要な用語として、ハッシュは競合があるため、語彙の選択よりも悪い場合があります。一方、ハッシュの場合、語彙を組み立てる必要はありません。特徴の分布が時間の経過とともに大きく変化する場合には、この方法が有効です。

2 つの単語リストを示す図。1 つのリストは 10 個の単語で構成されます。もう一方のリストでは、10 個の単語が 8 つのハッシュ バケットに分割されています。したがって、ハッシュ バケットのうち 6 個には 1 つの単語が含まれ、ハッシュ バケットのうち 2 個には両方とも 2 つの単語が含まれています。各ハッシュバケットは 1 ~ 8 の数字で識別されます。 図 4: アイテムを語彙にマッピングする。

ハッシュ化と語彙のハイブリッド

ハイブリッド アプローチを採用し、ハッシュを語彙と組み合わせることができます。データの最も重要なカテゴリには語彙を使用しますが、OOV バケットは複数の OOV バケットに置き換え、ハッシュを使用してカテゴリをバケットに割り当てます。

ハッシュ バケット内のカテゴリはインデックスを共有する必要があり、モデルは適切な予測をしませんが、語彙に含まれていないカテゴリを学習するために、ある程度のメモリを割り当てました。

3 つの単語リストを示す図。1 つのリストは、分類する 10 個の単語で構成されます。他の 2 つのリストは、これらの 10 個の単語を語彙バケットとハッシュ バケットにマッピングします。つまり、5 つの単語は語彙に直接マッピングされ、他の 5 つの単語は 2 つのハッシュ バケットにマッピングされます。一方のハッシュ バケットには 2 つの単語が含まれ、もう一方のハッシュ バケットには 3 つの単語が含まれています。語彙には一般的な単語が含まれており、ハッシュ バケットには珍しい単語が含まれています。 図 5: 語彙とハッシュを組み合わせたハイブリッド アプローチ。

エンベディングに関する注意事項

機械学習集中講座で、エンベディングとは、連続的な特徴量として表されるカテゴリ特徴でした。ディープモデルは、インデックスからエンベディングを頻繁にエンベディングに変換します。

エンベディングを介してカテゴリを特徴ベクトルにマッピングするエンドツーエンドのプロセスを示す図。エンベディング テーブルは、番号付きの行のセットで構成されます。各行は、0.0 から 1.0 までの範囲の浮動小数点値のセットで構成されています。カテゴリを変換するために、埋め込みテーブルから対応する行がコピーされます。たとえば、入力カテゴリが 0 の場合、エンベディング テーブルの最初の行が特徴ベクトルにコピーされます。入力カテゴリが 1 の場合、エンベディング テーブルの 2 行目が特徴ベクトルにコピーされます。 図 6: 埋め込みによるスパースな特徴ベクトル

前に説明した他の変換はディスクに保存できますが、エンベディングは異なります。エンベディングはトレーニングであるため、一般的なデータ変換ではなく、モデルの一部です。これらは他のモデルの重みでトレーニングされ、機能的には重みのレイヤと同等です。

事前トレーニング済みのエンベディングの場合事前トレーニング済みのエンベディングは、通常はトレーニング中に変更できるため、概念的にはモデルの一部となっています。