ニューラルネットワークのトレーニングのためにカテゴリ型入力機能と連続入力機能を組み合わせる方法


16

カテゴリー型と連続型の2種類の入力特徴があるとします。カテゴリカルデータはワンホットコードAとして表すことができますが、連続データはN次元空間の単なるベクトルBです。A、Bはまったく異なる種類のデータであるため、単にconcat(A、B)を使用することは適切な選択ではないようです。たとえば、Bとは異なり、Aには番号順がありません。私の質問は、このような2種類のデータをどのように組み合わせるか、またはそれらを処理する従来の方法があるかどうかです。

実際、私は写真に示されているような素朴な構造を提案しています

ここに画像の説明を入力してください

ご覧のように、最初のいくつかのレイヤーは、データAを連続空間の中間出力に変更(またはマップ)するために使用され、データBと連結されて、後のレイヤーの連続空間で新しい入力フィーチャを形成します。それが妥当なのか、それとも単なる「試行錯誤的な」ゲームなのか。ありがとうございました。

回答:


5

これを解決するには、主に3つの方法があります。

  1. 2つのモデルを個別に構築し、2つのモデルの出力を入力として受け取るアンサンブルアルゴリズムをトレーニングする
  2. すべてのデータを前処理ステップとして単一のベクトル/テンソルに連結し、単純な単一入力NNをトレーニングする
  3. あなたが提案した複数入力NNアーキテクチャ

アンサンブルアプローチは最も単純なオプションであり、まともな結果が得られますが、アンサンブルネットワークは2つのネットワークからのクラス確率を入力としてのみ受け取り、アプローチは、データ型間のより複雑な関係を見逃しています。

2番目のアプローチは理論的には提案されたアプローチとそれほど違いはありませんが、違いは、ネットワークがそれ自体で入力が2種類のデータで構成されていることを理解することを前提としていることです(両方が同じベクトル/テンソル内にあるため) )。ネットワークがそれを学習するには、かなりのトレーニング時間が必要です。それが発生する前に、極小値でスタックする可能性があります。

私の個人的な経験に基づいて、提案されたネットワークは最良のオプションであり、トレーニング時間が最も短い可能性が高く、アーキテクチャが適切になったら、ネットワークを本番環境でトレーニングおよび維持(再トレーニング)するのは非常に簡単です。 1つのモデルを再トレーニングするだけで済みます。



0

私はあなたが提案した単純な構造をかなり長い間使っていました。十分にフレーム化された問題と十分なデータがあれば、このタイプのアーキテクチャは非常にうまく機能します。しかし、ここに私が学んだいくつかのことがあります:

  1. ツリーベースのアルゴリズム(RF、XGB)は、特定の出力要件やニューラルネットワークを介して実装する方が簡単な損失関数がない限り、通常、混合クラスでうまく機能します。
  2. ニューラルネットワークの使用が決定された場合、このアーキテクチャは他のタイプの文字列エンコーディング方法と比較してパフォーマンスが向上します。
  3. このアプローチは、混合入力時系列データでも機能します-従来の時系列アプローチよりもはるかに優れています。

重要な設計は連結レイヤーであり、それをアーキテクチャのどこに配置するかです。また、埋め込みレイヤーを使用すると、学習した埋め込みを他のいくつかのタスク/視覚化で使用するという追加の利点が得られます。

これらのタイプのアーキテクチャはKaggleコンペティション[1]で使用されており、Jeremy Howard教授[2]によるFast.aiコースでも教えられています。

  1. https://yashuseth.blog/2018/07/22/pytorch-neural-network-for-tabular-data-with-categorical-embeddings/
  2. https://www.fast.ai/2019/01/24/course-v3/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.