3

テキストの感情分析を実行するために scikit-learn を使用しています。現在の私の機能は、単語の頻度カウントです。

以下を実行すると、平均 F 値は約 59% になります。

from sklearn import svm
clf = svm.LinearSVC(class_weight='auto');
clf.fit(Xfeatures, YLabels);
......
predictedLabels = clf.predict(XTestFeatures);

しかし、StandardScalar() を使用して特徴ベクトルをスケーリングすると、平均 F 値は 49% に低下します。

from sklearn import svm
clf = svm.LinearSVC(class_weight='auto');
Xfeatures = scaler.fit_transform(Xfeatures);
clf.fit(Xfeatures, YLabels);
......
XTestFeatures = scaler.transform(XTestFeatures);
predictedLabels = clf.predict(XTestFeatures);

スケーリングによって SVM のパフォーマンスが向上するはずですが、ここではパフォーマンスが低下しているようです。なぜこれが起こるのですか?どうすれば正しくできますか?

4

2 に答える 2

2

少なくとも考慮すべき点がいくつかあります。

  • データをスケーリングすると、精度低下する可能性があります。すべきではありませんが、可能です
  • 精度は、不均衡な問題の間違った尺度です。「class_weight = 'auto'」を使用しているので、あなたの場合です。代わりに、平均精度や MCC などのバランスのとれた尺度を使用してください。
  • 線形SVMのデフォルトのハイパーパラメータを使用しているようです。意味C=1と; ほぼランダムな結果が得られる可能性があります。2 つの異なるデータ処理 (スケーリングなど) を比較するには、最適化手法 (少なくともグリッド検索) によって最適なハイパーパラメーターを適合させる必要があります。
于 2014-10-02T23:49:05.327 に答える