StompChickenの修正(私は1つのドット積を誤算しました、うーん!)で、答えはイエスのように見えます。それ以来、事前に計算されたカーネルを使用して同じ問題をテストし、同じ正しい結果が得られました。libsvm StompChickens clearを使用している場合、整理された計算は非常に優れたチェックです。
元の質問: libSVMで事前計算されたカーネルの使用を開始しようとしています。質問に対するVladの答えに気づい たので、libsvmが正しい答えを出したことを確認するのが賢明だと思いました。私は、事前に計算されていないカーネルから始めました。これは、3次元空間に2つのクラスと3つのデータポイントを持つ単純な線形カーネルです。データを使用しました
1 1:3 2:1 3:0
2 1:3 2:3 3:1
1 1:7 3:9
の呼び出しによって生成されたモデルファイルにsvm-train -s 0 - t 0
は、
svm_type c_svc
kernel_type linear
nr_class 2
total_sv 3
rho -1.53951
label 1 2
nr_sv 2 1
SV
0.4126650675419768 1:3 2:1 3:0
0.03174528241667363 1:7 3:9
-0.4444103499586504 1:3 2:3 3:1
しかし、私が手で解を計算するとき、それは私が得るものではありません。libsvmにエラーが発生するかどうかを知っている人はいますか、それともノートを比較してlibsvmと同じものが得られるかどうかを確認できますか?
libsvmによって返される係数a1
、、はa2
、a3
a1 + a2 + a3 - 5*a1*a1 + 12*a1*a2 - 21*a1*a3 - 19*a2*a2/2 + 21*a2*a3 - 65*a3*a3
a1 + a3 = a2
、、のそれぞれが0と1(Cのデフォルト値)の間にある必要がa1
あるという制限付きでa2
、可能な限り大きくし
ます。a3
上記のモデルファイルは答えが
a1 = .412665...
a2 = .444410...
a3 = .031745...
しかしa2 = a1 + a3
、上記の大きな式に代入し、両方の偏導関数がゼロであることを確認して、この解が正しいかどうかを確認する必要があります(、、のいずれもa1
0a2
またはa3
1ではないため)が、ゼロではありません。
私は何か間違ったことをしていますか、それともlibsvmが悪い結果を出しているのですか?(私は何か間違ったことをしていることを望んでいます。)