在libsvm的源代码中,为什么要把支持向量表示成二维数组[][]svm_node的形式???琢磨了很久还是没想明白
libsvm虽然支持多类分类,但是其本质是基于“一对一”法的多类分类,因此究其其本质其实是个二分类svm。
既然是二分类,肯定有属于第一类-1的支持向量,属于第二类+1的支持向量,它肯定应该是个二维数组。
libsvm训练输出model中的参数有一个是sv_coef,它表示的是支持向量在决策函数中:
的系数a,而b是model里的rho。
最后说下model里全有啥参数:
model =
Parameters: svm的类型参数
nr_class: 有多少个类别
totalSV: 支持向量总个数
rho: 就是决策函数里那个b
Label: 类标
ProbA:
ProbB: 这两个是但svm 选-b是用到的参数
nSV: 每类有多少个支持向量
sv_coef: 决策函数那个a
SVs: 里面装的是所以支持向量
菜鸟个人愚见,如有错误望指正!共同学习
但是SV_coef[][]在程序中表示为SV_coef[nr_class-1][l]的形式,这个怎么理解???我觉得不是nr_class-1,而应该是(nr_class-1)[(nr_class-1)-1]/2啊???
SV_coef[][]是个数组吧,因为它是支持多类分类的,n类就要构建n(n-1)/2 个支持向量机,采用一对一法的话,这个SV_coef必然要是一个数组,你细想应该可以理解!