作业帮 > 数学 > 作业

在libsvm的源代码中,为什么要把支持向量表示成二维数组[][]svm_node的形式?琢磨了很久还是没想明白

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:数学作业 时间:2024/06/05 12:19:09
在libsvm的源代码中,为什么要把支持向量表示成二维数组[][]svm_node的形式?琢磨了很久还是没想明白
还有,其中关于梯度、关于SV_coef[][]这两部分也没看明白,求大神一语道破哈!拜谢!
在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必然要是一个数组,你细想应该可以理解!
再问: 但是程序中是nr_class-1,不是(nr_class-1)[(nr_class-1)-1]/2啊???
再答: 不是单纯[nr_class-1]吧 后面还有个*[L],具体到它内部怎么内部怎么处理“一对一”机制。请参考这里http://www.ilovematlab.cn/thread-80099-1-1.html 汗 水平有限啊!