2

整数の高次元 (30000 次元) ベクトルがあります。[はい、いいえ] の 2 つのクラスがあります。YES クラスの 6000 サンプルと NO クラスの 50000 サンプルがあります。分類器をトレーニングして、将来新しいサンプルをこれらのクラスのいずれかに自動的に分類したいと思います。

Weka Java API の使用方法は知っていますが、どのアルゴリズムをどの順序で使用すればよいかわかりません。次の質問について、どなたかアドバイスいただけないでしょうか。

  1. ベクトルの次元が高すぎますか、それとも Weka でこれを効率的に行うにはサンプルが多すぎますか?
  2. 開始する前に次元を減らす必要がありますか? 特徴ベクトルの重要な要素を識別するためにどのアルゴリズムを使用できますか?
  3. この種のデータを分類するには、どの分類器が最適でしょうか? デシジョン ツリーは問題なく機能すると思いますが、単純なベイズの方がトレーニングが速いのではないでしょうか。
  4. weka ではすべての要素に名前を付ける必要があるため、30000 個の機能のそれぞれに名前を割り当てるにはどうすればよいですか?

アドバイスをいただければ幸いです。ありがとう。

4

1 に答える 1

0
  1. この問題の次元数は確かに非常に大きいですが、Weka は多数の次元を処理できるはずだと私は信じています。サンプル数は問題にならないはずですが、NO クラスのサンプルは YES クラスのサンプルよりもはるかに多いため、この 2 つのバランスをとることで、NO クラスのケースをより適切に分類することができます。

  2. 冗長な次元があるか、一部の次元にノイズが含まれている可能性があると思われる場合は、確かに役立ちます。

  3. デシジョン ツリーはそれほど問題にはなりません。Weka には多数のアルゴリズムが用意されていますが、問題の次元を考慮すると、ニューラル ネットワークはお勧めしません。

  4. データを CSV ファイルに保存した場合、データの最初の行に属性名を割り当てることができます。このようにして、属性名を割り当てることができます。次元数を考えると、これらを a1 から a30000 までと呼び、output クラスの output と呼ぶ可能性があります。

お役に立てれば!

于 2014-09-12T02:39:58.657 に答える