1

背景/質問

Scikit-learn を使用して SVM を作成しようとしています。私はトレーニング セットを持っています (これはhttps://dl.dropboxusercontent.com/u/9876125/training_patients.txtへのリンクです)。これを読み込んで SVM のトレーニングに使用します。トレーニング セットの長さは 3600 行です。3600 個のタプルをすべて使用すると、SVM はトレーニングを終了しません。ただし、最初の 3594 個のタプルのみを使用すると、1 分以内にトレーニングが終了します。さまざまなサイズのトレーニング セットを使用してみましたが、同じことが引き続き発生します... SVM を使用するタプルの数に応じて、非常に迅速にトレーニングするか、完了しません。これにより、SVM はデータに基づいて回答に収束するのに苦労しているという結論に至りました。

これが収束の問題であるという私の仮定は正しいですか? もしそうなら、解決策は何ですか?そうでない場合、他にどのような問題が考えられますか?

コード

import pylab as pl  # @UnresolvedImport
from sklearn.datasets import load_svmlight_file

print(doc)
import numpy as np
from sklearn import svm, datasets


print "loading training setn"
X_train, y_train = load_svmlight_file("training_patients.txt")


h = .02  # step size in the mesh
C = 1.0  # SVM regularization parameter


print "creating svmn"
poly_svc = svm.SVC(kernel='poly', cache_size=600, degree=40, C=C).fit(X_train, y_train)


print "all done"
4

2 に答える 2

4

SVM の背後にある最適化アルゴリズムは、比較的高いコスト (C) と高次元の特徴空間 (d=40 の多項式カーネルは ~1600 次元の特徴空間を意味する) を想定して、3 次 (O(n^3)) の複雑さを持ちます。これを「収束の問題」とは呼びません。3000 を超えるサンプルの場合、そのようなモデルのトレーニングに時間がかかることがありますが、それは正常なことです。一部のサブセットでより高速な収束が達成されるという事実は、非常に豊富な機能プロジェクションの効果です (同じことが RBF カーネルでも発生する可能性があります)。これは一般的な現象であり、UCI ライブラリからの非常に単純なデータにも当てはまります。コメントで述べたように、「verbose=True」を設定すると、最適化プロセスに関する追加情報が得られる場合があります。反復回数、サポート ベクターの数が出力されます (SV の数が多いほど、SVM の過適合が多く、

于 2013-10-23T05:57:54.260 に答える