2011-04-20 17 views
4

ニュース記事の分類にSVMを使用しようとしています。LibSVMはすべてのトレーニングベクトルをサポートベクトルに変換します。なぜですか?

フィーチャー(文書内の固有の単語)を行として含む表を作成しました。 これらの機能を使って重み付けマップを作成しました。すなわち、記事が、特徴ベクトルテーブルの一部である単語を有し、その位置が1またはそれ以外の場合は0とマークされている場合。

例: - トレーニングサンプルが生成...

1~1:1~2:1~3:1~4:1~5:1~6:1~7:1~8:1~9:1 10: 1 11:1 12:1 13:1 14:1 15:1 16:1 17:1 18:1 19:1 20:1 21:1 22:1 23:1 24:1 25:1 26: 1 27:1 28:1 29:1 30:1

これは最初の文書であるため、すべての機能があります。

私は1,0をクラスラベルとして使用しています。

私はsvm.Netを分類に使用しています。

私は300の手動で訓練データとして分類されたモデルを与え、生成されたモデルはすべてのベクトルを支持ベクトルとして取ります。これは確かにオーバーフィッティングです。

私の合計特徴(特徴ベクトルDBテーブル内で,)は7610である。

何故その理由が考えられますか?

これで、私のプロジェクトは非常に悪い形になっています。利用可能なすべての記事を肯定的な記事として分類しています。

LibSVMバイナリ分類でクラスラベルに制限はありますか。

私は、と+1の代わりに0,を使用しています。問題ありますか?

答えて

1

指摘したように、他に何かをする前に、パラメータ検索が良い考えです。

また、利用できるさまざまなカーネルについても調べます。あなたが入力したデータがバイナリであるという事実は、RBFカーネルにとっては問題になるかもしれません(あるいは、別のカーネルと比較して、その使用法が最適以下になるかもしれません)。私はどのカーネルがより適しているか分かりません。リニアカーネルを試して、より多くの提案/アイデアを探してみてください:)

もっと詳しい情報や、もっと良い回答が必要な場合は、stats.stackexchange.comをご覧ください。

3

クラスがアンバランスな場合でも、何らかのタイプのパラメータ検索を行う必要があります。クラシファイアが人為的に高い精度を得ることもあります。このguide is goodは、基本的で実践的なものを教えるのに、おそらくそれを読むべきです

1

私は間違いなくあなたのラベルに-1と+1を使ってみます。

また、どのくらいのデータがありますか?あなたが7610次元の空間で作業しているので、潜在的に、そのベクトルが各次元の超平面を「サポート」している多くのサポートベクトルを持つことができます。

このような多くの機能を使用すると、主成分分析のような機能選択方法を試してみることができます。

+0

理由が見つかりました。これは、SVM.netがtrainingdataの有効性をチェックしていないために発生しています。私の訓練データでは、機能番号がソートされていなかったため、奇妙な結果が出ました。特徴量のウェイトベクトルをソートした後、モデルを生成すると、物事ははるかに良い... 74%の精度。ありがとうございました。 –

関連する問題