svm学习

这篇博客详细介绍了libsvm的SVM训练过程,包括SVM模型的参数、训练参数的意义,如svm_type、kernel_type、gamma等,并解释了模型文件的内容,如支持向量个数、判决函数的偏置项。还提到了svmtrain的用法及其参数设置,如C-SVC、ε-SVR的选择和核函数类型。此外,文章还探讨了程序框架和分界线的输出,提供了多类分类情况下的model参数解析。


一  运行

 

wang@linux:~/test/libsvm-2.84>./svm-train heart_scale

*

optimization finished, #iter =162

nu = 0.431029

obj = -100.877288, rho =0.424462

nSV = 132, nBSV = 107

Total nSV = 132

 

#iter为迭代次数

nu 是你选择的核函数类型的参数

objSVM文件转换为的二次规划求解得到的最小值

rho为判决函数的偏置项b

nSV 为标准支持向量个数(0<a[i]<c)nBSV为边界上的支持向量个数(a[i]=c)

Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和)。

 

并产生了一个train.model文件

wang@linux:~/test/libsvm-2.84>head -n 10 heart_scale.model

svm_type c_svc            //所选择的svm类型,默认为c_svc

kernel_type rbf            //训练采用的核函数类型,此处为RBF

gamma 0.0769231         //RBF核的参数γ

nr_class 2                //类别数,此处为两分类问题

total_sv 132               //支持向量总个数

rho 0.424462              //判决函数的偏置项b

label 1 -1                  //原始文件中的类别标识

nr_sv 64 68                //每个类的支持向量机的个数      

SV                       //以下为各个类的权系数及相应的支持向量

1 1:0.166667 2:1 3:-0.3333334:-0.433962 5:-0.383562 6:-1 7:-1 8:0.0687023 9:-1 10:-0.903226 11:-1 12:-113:1

 

 

二 svmtrain的参数

svmtrain我们在前面已经接触过,他主要实现对训练数据集的训练,并可以获得SVM模型。

 

        用法: svmtrain[options] training_set_file [model_file]

其中,options为操作参数,可用的选项即表示的涵义如下所示:

 

-s 设置svm类型:

         0– C-SVC

         1– v-SVC

         2– one-class-SVM

         3– ε-SVR

         4– n - SVR

-t 设置核函数类型,默认值为2

         0-- 线性核:u'*v

         1-- 多项式核: (g*u'*v+ coef 0)degree

         2-- RBF 核:exp(-γ*||u-v||2)

         3-- sigmoid 核:tanh(γ*u'*v+ coef 0)

-d degree: 设置多项式核中degree的值,默认为3

-gγ设置核函数中γ的值,默认为1/kk为特征(或者说是属性)数;

         -rcoef 0:设置核函数中的coef 0,默认值为0

         -ccost:设置C-SVC、ε-SVRn - SVR中从惩罚系数C,默认值为1

         -nv :设置v-SVCone-class-SVM n - SVR 中参数,默认值0.5

         -p ε :设置v-SVR的损失函数中的,默认值为0.1

         -mcachesize:设置cache内存大小,以MB为单位,默认值为40

         -e ε :设置终止准则中的可容忍偏差,默认值为0.001

         -hshrinking:是否使用启发式,可选值为1,默认值为1

         -b 概率估计:是否计算SVCSVR的概率估计,可选值1,默认0

         -wiweight:对各类样本的惩罚系数C加权,默认值为1

         -vnn折交叉验证模式;

         model_file:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。

    

默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:test.model,则命令为: svmtrain test.txt test.model

 

 

三 程序框架

 

http://blog.youkuaiyun.com/flydreamgg/article/details/4470121

 

3.1   train

 

                   model= svm_train(&prob,&param);

                   svm_save_model(model_file_name,model);

                   svm_destroy_model(model);

 

a.      svm_model是干什么的?

structsvm_model

{

   svm_parameter  param;     //parameter

   int nr_class;                           //number of classes, = 2 in regression/one class svm

   int l;                                       //total #SV 132

   svm_node **SV;                    // SVs (SV[l])

   double **sv_coef;                 // coefficients for SVs in decision functions(sv_coef[k-1][l]) 系数

   double *rho;                          //constants in decision functions (rho[k*(k-1)/2]) 常数

   double *probA;           //pariwise probability information

   double *probB;

 

   // for classification only

 

   int *label;            //label of each class (label[k])

   int *nSV;              //number of SVs for each class (nSV[k])

                               // nSV[0] + nSV[1]+ ... + nSV[k-1] = l

   // XXX

   int free_sv;                   //1 if svm_model is created by svm_load_model

                               // 0 if svm_modelis created by svm_train

};

 

 

赋值

 

四 分界线的输出

 

参考文献

 http://blog.youkuaiyun.com/flydreamgg/article/details/4470121

 

 

多类别时http://zhidao.baidu.com/question/561654193.html

 

 

Libsvm 框架 http://blog.youkuaiyun.com/flydreamGG/article/details/4470121

LibSVM中select_working_set函数 数学

http://blog.youkuaiyun.com/zhuyue3938199/article/details/7469868

 

关于libsvm 两类及多类分类情况下的model的参数的意义  

 

http://wbxin2007.blog.163.com/blog/static/164314125201211901357344/

 

数据集

http://blog.163.com/crazyzcs@126/blog/static/129742050201010169304255/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值