選択-多くのカテゴリ機能:ワンホットエンコーディングの代替?
クライアントのリレーショナルデータに基づいて、クライアントのライフタイムバリューを予測するモデルを構築しています。ユーザーテーブルには、予測可能な1対多の子テーブルが多数あります。大幅に簡略化された子機能は、次のように要約されます。
- 過去に購入したアイテムカテゴリのリスト
- クリックした広告の主な色のリスト
- などなど
いずれの場合も、明らかな機能は、カテゴリ変数からの0〜10個の選択肢のリストで構成されます。私はこれらの機能をいくつか持っていますが、そのうちのいくつかは最大10,000の離散値を持っているので、ワンホットエンコーディングは非常に広く、非常に高速になります。
余談ですが、私が「多くのカテゴリを選択する」と呼んでいるこの種の「タグのリスト機能」の芸術用語がある場合は、教えてください。
質問:多くのカテゴリ機能を選択して機能する高密度のエンコーディングスキームはありますか?
回答
アルゴリズムが最急降下法の最適化に基づいている場合は、離散要素の密な表現空間である埋め込みを使用できます。
埋め込みは、pytorchやtensorflowなどのほとんどのディープラーニングフレームワークでサポートされています。
更新:複数の離散値が必要であるという事実は、埋め込みを使用する可能性を妨げるものではありません。すべてのベクトルを1つの値に追加するだけです。このための最も簡単なアプローチは、リストの長さを一定にして(すべてのリストの要素の最大数、または適切な最大値に等しい)、不要な位置に「パディング」アイテムを入力することです。要素の連続的な外観を考慮に入れたい場合は、ベクトルを一緒に追加する代わりに、埋め込まれたベクトルに畳み込み層またはLSTMを適用できます。
カテゴリエンコーダライブラリでカテゴリ機能をエンコードする方法はたくさんありますが、それらの多くを見つけることができます。
あなたのデータを考えるとより有望と思われるのはターゲットエンコディンクです