1

SVM の単純なトレーニング ケースとトレーニング ターゲットがあるとします。

from sklearn import svm
>>> X = [[0, 0], [2, 2]]
>>> y = [0.5, 2.5]
>>> clf = svm.SVR()
>>> clf.fit(X, y) 
SVR(C=1.0, cache_size=200, coef0=0.0, degree=3,
epsilon=0.1, gamma=0.0, kernel='rbf', max_iter=-1, probability=False,
random_state=None, shrinking=True, tol=0.001, verbose=False)
>>> clf.predict([[1, 1]])
array([ 1.5])

線形でない 'rbf' カーネルで決定境界を取得するにはどうすればよいでしょうか? clf.suppport_vectors_ でサポート ベクターを取得できますが、サポート ベクターと決定境界方程式の対応関係は何ですか?

4

1 に答える 1

8

RBF カーネルを使用した SVM モデルのような複雑なオブジェクトの場合、「決定境界方程式」のようなものはありません。少なくとも直接ではありません。

最初に、SVM は超平面wを構築します。次に、内積を計算し、(は訓練されたしきい値)<w,x>の符号をチェックすることによってデータを分離するために使用されます。線形の場合、サポート ベクター、それらのクラス、および最適化プロセスで見つかった双対係数を使用してを簡単に再構築できますが、RBF カーネルによって誘導される無限次元空間を扱う場合は、はるかに複雑になります。いわゆるカーネルトリックは、カーネルを使用して内積を簡単に計算できることを示しているため、実際の を計算せずに分類できます。だから何ですか<w,x>+bbwSUM y_i alpha_i x_ix_iy_ialpha_i<w,x>+bwwまさに?これは、サポート ベクター (一部は負の係数を持つ) を中心としたガウス分布の線形結合です。をもう一度計算できますSUM y_i alpha_i f(x_i)。ここfで、 は特徴射影です (この場合、分散は に等しい、与えられた点を中心とするガウス分布を返す関数になり1/(2gamma)ます。実際の決定境界は、この関数の内積とこの点を中心とするガウス分布は に等しくなり-bます。

あなたの質問が決定境界のプロットだけに関係している場合は、メッシュ グリッドを作成し、SVM 決定関数を計算し、等高線プロットをプロットすることでそれを行うことができます。

あなたの質問は決定境界について尋ねますが、コードは実際には分類ではなく回帰を実行します。このような場合、決定境界ではなく、実際に回帰直線を探している可能性が高くなりますが、問題は分類の場合と非常によく似ています。それは実際には無限次元空間の単なる超平面であるためです。それをプロットすることはできますが (回帰の場合は SVC を使用するよりも簡単な方法で)、回帰の適切な「閉じた形式」の方程式はありません。これらのサポート ベクターとカーネルによって定義される内積によって定義されます。

于 2013-09-27T17:05:26.343 に答える