一部の特徴は、順序付きの関係にない個別の値である場合があります。犬、言葉、郵便番号などが該当します。このような特徴はカテゴリと呼ばれ、それぞれの値がカテゴリと呼ばれます。カテゴリ値は文字列や数字で表すことができますが、これらの数値を比較したり、互いに引いたりすることはできません。
多くの場合、整数値を含む特徴は、数値データではなくカテゴリデータとして表す必要があります。たとえば、値が整数の郵便番号機能があるとします。この特徴を数値で誤って表す場合は、モデルに異なる郵便番号間の数値関係を見つけるよう求めています。たとえば、郵便番号が 20004 で、郵便番号が 10002 でシグナルが 2 倍(または半分)であるとモデルが判断することが期待されます。郵便番号をカテゴリデータとして表すことで、モデルは郵便番号ごとに個別のシグナルを見つけることができます。
曜日やデータの色が限られているなど、データ フィールドのカテゴリ数が少ない場合は、カテゴリごとに固有の特徴を作成できます。例:
図 1: 各カテゴリに固有の機能。
すると、モデルでは色ごとに個別の重み付けが学習されます。たとえば、モデルは赤色の自動車が緑の自動車よりも高価であることを学習できるでしょう。
特徴をインデックスに登録できます。
図 2: インデックス登録された特徴。
このようなマッピングは「語彙」と呼ばれます。
語彙
語彙において、それぞれの値は固有の特徴を表します。
Index Number | Category |
---|---|
0 | Red |
1 | Orange |
2 | Blue |
... | ... |
このモデルは、文字列からインデックスを検索し、1.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 Vocab(OOV)というキャッチオール カテゴリにまとめてください。OOV を使用すると、各希少色でのトレーニング時間を無駄にすることはありません。
Hashing
別の方法として、すべての文字列(カテゴリ)を利用可能なインデックス空間にハッシュすることもできます。多くの場合、ハッシュ化は競合を引き起こしますが、モデルには、特定の問題に対して有効な同じインデックス内のカテゴリの共有表現が学習されます。
重要な用語として、ハッシュは競合があるため、語彙の選択よりも悪い場合があります。一方、ハッシュの場合、語彙を組み立てる必要はありません。特徴の分布が時間の経過とともに大きく変化する場合には、この方法が有効です。
図 4: アイテムを語彙にマッピングする。
ハッシュ化と語彙のハイブリッド
ハイブリッド アプローチを採用し、ハッシュを語彙と組み合わせることができます。データの最も重要なカテゴリには語彙を使用しますが、OOV バケットは複数の OOV バケットに置き換え、ハッシュを使用してカテゴリをバケットに割り当てます。
ハッシュ バケット内のカテゴリはインデックスを共有する必要があり、モデルは適切な予測をしませんが、語彙に含まれていないカテゴリを学習するために、ある程度のメモリを割り当てました。
図 5: 語彙とハッシュを組み合わせたハイブリッド アプローチ。
エンベディングに関する注意事項
機械学習集中講座で、エンベディングとは、連続的な特徴量として表されるカテゴリ特徴でした。ディープモデルは、インデックスからエンベディングを頻繁にエンベディングに変換します。
図 6: 埋め込みによるスパースな特徴ベクトル
前に説明した他の変換はディスクに保存できますが、エンベディングは異なります。エンベディングはトレーニングであるため、一般的なデータ変換ではなく、モデルの一部です。これらは他のモデルの重みでトレーニングされ、機能的には重みのレイヤと同等です。
事前トレーニング済みのエンベディングの場合事前トレーニング済みのエンベディングは、通常はトレーニング中に変更できるため、概念的にはモデルの一部となっています。