隨着StompChicken的更正(我錯誤地計算了一個點積,呃!)答案似乎是肯定的。我自從使用預先計算的內核測試了相同的問題並得到了相同的正確結果。如果你清楚地使用libsvm StompChickens,有組織的計算是一個很好的檢查。libsvm是否準確?
原問題: 我即將開始在libSVM中使用預先計算的內核。我注意到 Vlad's answer有問題,我認爲確認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呢?
係數a1
,a2
,a3
通過LIBSVM返回是應該是使
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
並且每個a1
,a2
,a3
需要介於0和1之間(C的默認值)。
上述模型文件說,答案是
a1 = .412665...
a2 = .444410...
a3 = .031745...
但一個只是有上述替代a2 = a1 + a3
進入大公式,並確認這兩個偏導數爲零,看看這個解決方案是正確的(沒有的a1
自,a2
,a3
是0或1),但它們不是零。
我做錯了什麼,或者是libsvm給結果不好? (我希望我做錯了什麼。)