ベクター配列の分類


9

私のデータセットはベクターシーケンスで構成されています。各ベクトルには50の実数値の次元があります。シーケンス内のベクトルの数は、3〜5〜10〜15の範囲です。つまり、シーケンスの長さは固定されていません。

かなりの数のシーケンス(ベクトルではありません!)には、クラスラベルが付けられています。私の仕事は、一連のベクトルが与えられたときに、シーケンス全体のクラスラベルが計算される分類子を学ぶことです。

データの正確な性質はわかりませんが、シーケンスの性質は一時的なものではありません。それでも、ラベル()を変更せずに、ベクトルをベクトルと交換することはできません。つまり、ベクトルの順序が重要です。ベクトル自体は比較可能です。たとえば、内積を計算し、この類似値を使用することは理にかなっています。バツバツjj

私の質問は、そのようなデータを分類するのに役立つツール/アルゴリズムは何ですか?

更新:データには、1つまたは非常に少数のベクトルがクラスラベルに強く影響するという特性があります。

考えられる解決策:いくつかの調査の後、Recurrent Neural Networks(RNN)はかなり自然に法案に適合しているように見えます。包括的な考え方は、コンテキストサイズを選択し、単語ベクトルを連結し、最大プーリングを実行し、それを古典的なNNを通じてフィードすることです。文内の可能なコンテキストウィンドウの位置ごとに、特徴ベクトルが作成されます。最終的な特徴ベクトルは、たとえば最大プーリングを使用して構築されます。逆伝播は、ネットワークのパラメータを調整するために行われます。私はすでにいくつかの肯定的な結果を得ました(GPUは必須です)。k

回答:


3

詳細を開示することはできないので、私は答えで少し一般的であることを余儀なくされています。それでも参考になれば幸いです。最初に、分類に必要な情報を後で失わないようにすることができる場合にのみ、分類の前に(ドット積などを使用して)シーケンスを減らすことを検討します。したがって、このアプローチは、分類の性質をある程度理解している場合にのみ実行可能です。簡単な例を挙げましょう。クラスラベルがシーケンス内のベクトルの数だけである場合、ドット積からクラスラベルを予測することはあまりうまくいきません。

したがって、分類の入力として完全なシーケンスを取り、考慮したいシーケンスの長さに最大値を課します。これを行うには、まずトレーニングセットで最大シーケンス長mを見つけ、次に50次元ベクトルの各シーケンスを50 * mの次元の1つのベクトルに変換します。最大長。おそらくこれらの欠落した値を取り除きたいと思うでしょうし、単にそれらをゼロで置き換えたいかもしれません。

ここから進むことができる2つの道路があります。1.)高次元に適していることがわかっている分類方法を直接適用します。単純なベイズのように、それほどチューニングを必要としないシンプルなものを試してください。これにより、時間を無駄にすることなく、このアプローチが可能かどうかを確認できます。2.)最初に次元を減らし、分類の性質をよりよく理解しようとします。主成分分析のようなものを使用したり、各ベクトルコンポーネントとクラスラベル間の相関/関連付けを分析したりすることができます。成功すれば、分類を適用する前に入力の次元を適切に縮小する方法を知っています。

これらのアイデアのいずれかに従う場合は、データの具体的な詳細と分類によって、上記で提案されたアイデアのいずれかが実行不可能になる可能性があることに注意してください。だからあなたが知っているどんな詳細に対してもチェックするように注意してください、あなたがあなたの時間を無駄にしていないことを確かめる前にここに投稿することはできません。


0

データには、1つまたは非常に少ないベクトルがクラスラベルに強く影響するという特性があります。

最良の(そして最も簡単な)アプローチは、おそらく、各ベクトルで分類子をトレーニングし、特定のシーケンスのベクトル全体で予測を平均化することです。重要なベクトルはその予測に強く影響しますが、重要でないベクトルの予測は0.5に近くなります(または非バイナリ分類問題の場合も同様)。


あんまり。特に、重要な情報のないベクトルがたくさんある場合は..そのルートに行く場合は、必ずLSTMを使用してください:)
pir
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.