SVM(支持向量机)---学习和理解

1. 相关名词

  • 分类
  • 模式识别
  • 回归
  • 最优分类面
  • 聚类
  • 机器学习算法
  • 非线性映射
  • 松弛变量
  • VC维
  • 核函数:将完全不可分的问题,转换为可分或者达到近似可分的状态。

2. SVM原理

“SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题。简单地说,就是升维和线性化。”
怎么理解上面这句话呢?

SVM(支持向量机)---学习和理解_第1张图片
如上图,我们要将红色框和黑色框进行分开,则是通过一个非线性映射p,将原来的样本空间映射到一个特征空间中,从而使不可分类的问题转化为可以分类的问题。

3. LIBSVM简介

LIBSVM是林智仁等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,不但提供了编译好的可Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用,该软件还有一个特点,就是对SVM所涉及的参数调节相对比较少(因为提供了很多默认参数),利用这些默认参数就可以解决很多问题,并且提供了交互检验(Cross Validation)的功能。
该软件包可以解决C-SVM分类、NU-SVM分类,SVM回归等问题,包括基于一对一算法的多类模式识别问题。SVM用于 模式识别或回归时,SVM方法及其参数、核函 数及其参数的选择,目前国际上还没有形成一个统一的模式 ,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交 互检验功能进行寻优。

4. SVM种类(以LIBSVM来说明)

以下所说的参数设置均指svmtrain()函数的参数设置。-s 来选择SVM类型,LIBSVM默认设置为0。
0 --- C-SVC:分类型SVM,需要调优的参数有惩罚因子C,核函数参数。C的取值10^(-4),10^(-3),10^(-2),...,1,5,...
1 --- nu-SVC:分类型SVM,在一定程度上与C-SVC,将惩罚因子C换成了因子nu。nu的取值为0~1,一般取值为0.1~0.8,0代表样本落入间隔内的数目最小的情况,1表示样本可以落入间隔可以很多的情况。
2 --- one-class SVM:
3 --- epsilon-SVR:用于回归的SVM模型
4 --- nu-SVR:用于回归的SVM模型

5. 核函数类型

-t 选择核函数类型,LIBSVM默认设置为2
0 --- 线性核函数K(x,y)=x·y;
1 --- 多项式:(r*u'v + coef0)^degree 
2 --- RBF函数:exp(-r|u-v|^2) 
3 --- sigmoid:K(x,y)=tanh(a(x·y)+b)

注:Linear核,主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了; RBF核,主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。

6. LIBSVM其他参数设置

-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
-p p:设置e -SVR 中损失函数p的值(默认0.1)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-m cachesize:设置cache内存大小,以MB为单位(默认40)
-e eps:设置允许的终止判据(默认0.001)
-h shrinking:是否使用启发式,0或1(默认1)
-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2

7. LIBSVM实例

svmscale    
svmtrain
svmpredict

三个步骤:
准备数据并做成指定格式(有必要时需svmscale或mapminmax)
用 svmtrain来训练成model
对新的输入,使用svmpredict来预测新数据的结果。

参考资料:

http://www.matlabsky.com/thread-12390-1-1.html
http://baike.baidu.com/view/598089.htm
http://endual.iteye.com/blog/1267308
http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html

你可能感兴趣的:(matlab,SVM,libsvm,支持向量机)