核心内容摘要
揭秘!“神秘电影5条免费入口”的终极指南,让你告别会员烦恼!
目录支持向量机SVM的详细原理SVM的定义SVM理论Libsvm工具箱详解简介参数说明易错及
常见问题SVM应用实例基于SVM的分类预测代码结果分析展望摘要基于SVM的分类预测SVM原理SVM工具箱详解SVM常见改进方法支持向量机SVM的详细原理SVM的定义支持向量机support vector machines, SVM是一种二分类模型它的基本模型是定义在特征空间上的间隔最大的线性分类器间隔最大使它有别于感知机SVM还包括核技巧这使它成为实质上的非线性分类器。
SVM的的学习策略就是间隔最大化可形式化为一个求解凸二次规划的问题也等价于正则化的合页损失函数的最小化问题。
SVM的的学习算法就是求解凸二次规划的最优化算法。
1支持向量机Support Vector Machine, SVM是一种对数据进行二分类的广义线性分类器其分类边界是对学习样本求解的最大间隔超平面。
2SVM使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险是一个具有稀疏性和稳健性的分类器 。
3SVM可以通过引入核函数进行非线性分类。
SVM理论1线性可分性2损失函数3核函数Libsvm工具箱详解简介LIBSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包他不但提供了编译好的可在Windows系列系统的执行文件还提供了源代码方便改进、修改以及在其它操作系统上应用该软件对SVM所涉及的参数调节相对比较少提供了很多的默认参数利用这些默认参数可以解决很多问题并提供了交互检验(Cross Validation)的功能。
该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题包括基于一对一算法的多类模式识别问题。
主要参数说明Options可用的选项即表示的涵义如下-s svm类型SVM设置类型(默认
0 – C-SVC1 --v-SVC2 – 一类SVM3 – e -SVR4 – v-SVR-t 核函数类型核函数设置类型(默认
0 – 线性u’v1 – 多项式(ru’v coef
^degree2 – RBF函数exp(-r|u-v|^
3 –sigmoidtanh(ru’v coef
-d degree核函数中的degree设置(针对多项式核函数)(默认
-g r(gama)核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ k)-r coef0核函数中的coef0设置(针对多项式/sigmoid核函数)((默认
-c cost设置C-SVCe -SVR和v-SVR的参数(损失函数)(默认
-n nu设置v-SVC一类SVM和v- SVR的参数(默认
0.
-p p设置e -SVR 中损失函数p的值(默认
0.
-m cachesize设置cache内存大小以MB为单位(默认
-e eps设置允许的终止判据(默认
0.
-h shrinking是否使用启发式0或1(默认
-wi weight设置第几类的参数C为weight*C(C-SVC中的C)(默认
-v n: n-fold交互检验模式n为fold的个数必须大于等于2其中-g选项中的k是指输入数据中的属性数。
option -v 随机地将数据剖分为n部分并计算交互检验准确度和均方根误差。
以上这些参数设置可以按照SVM的类型和核函数所支持的参数进行任意组合如果设置的参数在函数或SVM类型中没有也不会产生影响程序不会接受该参数如果应有的参数设置不正确参数将采用默认值。
具体对应解释如下svm类别指定SVM的类型下面是可能的取值CvSVM::C_SVC C类支持向量分类机。
n类分组 (n \geq
允许用异常值惩罚因子C进行不完全分类。
CvSVM::NU_SVC \nu类支持向量分类机。
n类似然不完全分类的分类器。
参数为 \nu 取代C其值在区间【01】中nu越大决策边界越平滑。
CvSVM::ONE_CLASS 单分类器所有的训练数据提取自同一个类里然后SVM建立了一个分界线以分割该类在特征空间中所占区域和其它类在特征空间中所占区域。
CvSVM::EPS_SVR \epsilon类支持向量回归机。
训练集中的特征向量和拟合出来的超平面的距离需要小于p。
异常值惩罚因子C被采用。
CvSVM::NU_SVR \nu类支持向量回归机。
\nu 代替了 p。
kernel_type –SVM的内核类型下面是可能的取值CvSVM::LINEAR 线性内核。
没有任何向映射至高维空间线性区分或回归在原始特征空间中被完成这是最快的选择。
K(x_i, x_j) x_i^T x_j.CvSVM::POLY 多项式内核 K(x_i, x_j) (\gamma x_i^T x_j coef
^{degree}, \gamma
CvSVM::RBF 基于径向的函数对于大多数情况都是一个较好的选择 K(x_i, x_j) e^{-\gamma ||x_i - x_j||^2}, \gamma
CvSVM::SIGMOID Sigmoid函数内核K(x_i, x_j) \tanh(\gamma x_i^T x_j coef
.degree – 内核函数POLY的参数degree。
gamma – 内核函数POLY/ RBF/ SIGMOID的参数\gamma。
coef0 – 内核函数POLY/ SIGMOID的参数coef0。
Cvalue – SVM类型C_SVC/ EPS_SVR/ NU_SVR的参数C。
nu – SVM类型NU_SVC/ ONE_CLASS/ NU_SVR的参数 \nu。
p – SVM类型EPS_SVR的参数 \epsilon。
class_weights – C_SVC中的可选权重赋给指定的类乘以C以后变成 class_weights_i * C。
所以这些权重影响不同类别的错误分类惩罚项。
权重越大某一类别的误分类数据的惩罚项就越大。
term_crit – SVM的迭代训练过程的中止条件解决部分受约束二次最优问题。
您可以指定的公差和/或最大迭代次数。
易错及调参
注意事项1分类和回归容易搞错分类-s参数为1回归-s参数为12bestc参数分类的时候调小回归的时候调大。
3安装libsvm参数的时候工具箱自带的参数容易和matlab自带的冲突要做好协调SVM应用实例数据基于SVM的分类预测部分代码clcclearclose allformat compact%%str1 {‘真空系统不严密’,‘真空系统管道破裂’,‘供汽中断’,‘冷却管破裂’,‘凝结水泵故障’,‘低压加热管道破裂’,‘循环水泵故障’,‘循环水流量不足’,‘真空泵故障’,‘冷却管结垢’,‘冷却管堵塞’,‘凝水武器满水’};%%load maydata.matrand(‘seed’,
pan 23;y1;n randperm(
;m500;train_label1 num(n(1:m),pany);P_train num(n(1:m),1:pan);P_test num(n(m1:end),1:pan);test_label1 num(n(m1:end),pany);% 归一化[p,ps]mapminmax(P_train’,-1,
;p_trainp’;ptmapminmax(‘apply’,P_test’,ps);p_testpt’;%[outputn,outputps]mapminmax(train_label’,1,length(str
);%训练数据的输出数据的归一化[outputn,outputps]mapminmax(train_label1’,-1,
;%训练数据的输出数据的归一化train_label outputn’;p_testl mapminmax(‘apply’,test_label1’,outputps);test_label p_testl’;t2;%t0为线性核函数,1-多项式。
2rbf核函数%%% train_label [train_label ; test_label];% p_train [p_train ; p_test];bestc29;bestg