随着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给结果不好? (我希望我做错了什么。)