0

ドキュメントの分類にサポート ベクター マシンを使用しています。各ドキュメントの機能セットはtf-idfベクトルです。サイズ N の各 tf-idf ベクトルを持つ M 個のドキュメントがあります。M * N 行列を指定します。

M のサイズはちょうど 10 ドキュメントで、tf-idf ベクトルは 1000 単語ベクトルです。したがって、私の機能はドキュメントの数よりもはるかに大きくなります。また、各単語は 2 つまたは 3 つの文書に出現します。各機能(単語)を正規化している場合、つまり[0,1]での列の正規化

val_feature_j_row_i = ( val_feature_j_row_i - min_feature_j ) / ( max_feature_j - min_feature_j)

もちろん、それは私に0、1を与えます。

そして、それは私に悪い結果をもたらします。私はrbf 関数C = 0.0312、ガンマ = 0.007815 でlibsvmを使用しています

推奨事項はありますか?

さらにドキュメントを含める必要がありますか? またはシグモイドまたはより良い正規化方法のような他の関数?

4

1 に答える 1

2

考慮すべき事項と修正すべき事項のリストは非常に長いため、まず、問題自体に直面する前に機械学習を読むことをお勧めします。ここにリストされているような基礎を学ぶのに役立つオンライン コースだけでなく、何十冊もの優れた本 (Haykin の「Neural Networks and Learning Machines」など) があります: http://www.class-central.com/検索?q=機械+学習.

問題自体に戻ります。

  • 10 個のドキュメントは、重要な結果や問題への洞察を得るために、大小の行です。
  • データ前処理の普遍的な方法はありません。多数のテストとデータ分析を通じて分析する必要があります。
  • CSVM はパラメトリック モデルであるため、単一のandgamma値を使用して妥当な結果を期待することはできません。「どこを検索すればよいか」の手がかりを得るには、何十ものそれらをチェックする必要があります。そのための最も簡単な方法は、いわゆるgrid search,
  • 1000 個のフィーチャは多数の次元です。これは、カーネルを使用することを示唆しています。これは、無限次元のフィーチャ空間が非常に冗長であることを意味します。オーバーフィットする可能性が少ない単純なものを最初に分析することをお勧めします (線形または低次多項式)
  • 「各単語が2つまたは3つのドキュメントに含まれる」場合、最終的にtf * idfは良い選択ですか? 実際にドキュメントの 20 ~ 30% を意味する場合を除き、疑わしい可能性があります。

最後に、単純な機能が押しつぶされるのはなぜですか

もちろん、それは私に0、1を与えます。

制限だけでなく、[0,1]間隔の値になるはずです。したがって、これが当てはまる場合は、実装に何らかのエラーが発生している可能性があります。

于 2013-08-14T09:57:07.830 に答える