1

私は scikit-learn の LinearSVC SVM 実装を使用しており、マルチクラス予測を理解しようとしています。coef_ と intercept_ を見ると、超平面の重みを取得できます。たとえば、2 つの機能と 4 つのラベルを使用した学習問題では、次のようになります。

f0 =  1.99861379*x1 - 0.09489263*x2 + 0.89433196
f1 = -2.04309715*x1 - 3.51285420*x2 - 3.1206355
f2 =  0.73536996*x1 + 2.52111207*x2 - 3.04176149
f3 = -0.56607817*x1 - 0.16981337*x2 - 0.92804815

decision_function メソッドを使用すると、上記の関数に対応する値が得られます。しかし、ドキュメントによると

サンプルの信頼スコアは、そのサンプルから超平面までの符号付き距離です。

しかし、decision_function は符号付き距離を返さず、単に f() を返します。

より具体的に言うと、LinearSVC は定数 1 機能を使用してしきい値を表すという標準的なトリックを使用していると想定しています。(これは間違っているかもしれません。) 私の例の問題では、インスタンスが常に (1,x1,x2) の形式である 3 次元の特徴空間が得られます。他のしきい値項がないと仮定すると、アルゴリズムは、この 3 次元空間の原点を通る超平面 w=(w0, w1, w2) を学習します。これで、予測するポイントが得られました。これを z=(1,a,b) と呼びます。この点から超平面までの符号付き距離 (マージン) はいくらか。それは単なる dot(w,z)/2norm(w) です。LinearSVC コードは dot(w,z) を返しています

ありがとう、クリス

4

0 に答える 0