关于model.SVs的LIBSVM输出

时间:2013-12-27 07:24:57

标签: matlab svm libsvm

我是libsvm的新手。我无法理解libsvm的输出。我只是想知道你如何找到所有支持向量的alpha_i?参数model.sv_coef是否为您提供alpha_ialpha_i*y_i?我想问的另一个主要问题是model.SVs给出了什么?我在matlab中使用libsvm,当我查找model.SVs时,我得到的输出是:

我的训练集是:

-1 1:0.747253 2:0.894737     
+1 1:0.692308 2:-0.824561     
-1 1:0.362637 2:0.789474     
+1 1:0.769231 2:-0.321637

我的测试集:

-1 1:-0.351648 2:-0.602339

+1 1:-0.21978 2:-0.263158



var1=model.sv_indices

>>var1 =

     2
     4
     3



model.SVs

>>ans =



(1,1)       2.0000    
(2,1)       4.0000    
(3,1)       3.0000   
(1,2)      -0.2204    
(2,2)       0.2870    
(3,2)       0.9774   
(1,3)       1.1592   
(2,3)       0.7978    
(3,3)      -0.3999   
(1,4)      -0.3999    
(2,4)       0.0250   
(3,4)       0.7548   
(1,5)       0.7978    
(2,5)       0.6952    
(3,5)       0.0250

这些(1,1),(2,1),(3,1)......是什么?我的意思是我只有4个训练集,那么第二个索引如何变为5个而且只有两个测试集,那么第一个索引如何变为3。

1 个答案:

答案 0 :(得分:2)

model.sv_coef包含所有alpha_i * y_imodel.SVs是所有支持向量x_i。权重可以写为

w = model.SVs' * model.sv_coef;
b = -model.rho;

您可能不需要太在意(1,2),(1,3)的标签...... m.nSV将为您提供每个类的支持向量的数量。由于您只有两个类,因此答案应该是2*1向量,每行代表相应类的支持向量编号。有关详细信息,请查看此document