支持向量机

  • 超平面的数学表示: w ⃗ ⋅ x ⃗ + b = 0 \vec{w}· \vec{x}+b=0 w x +b=0

  • 样本空间中任意点x到超平面(w, b)的距离: r = ∣ w ⃗ T ⋅ x ⃗ + b ∣ ∣ ∣ w ⃗ ∣ ∣ r=\frac {\mid\vec{w}^T· \vec{x}+b\mid} {\mid\mid\vec{w}\mid\mid} r=w w Tx +b

  • 支持向量(support vector):距离超平面最近的几个训练样本(如下图红色标注的样本点),使得 w ⃗ ⋅ x ⃗ + b = ± 1 \vec{w}· \vec{x}+b=\pm1 w x +b=±1在这里插入图片描述

  • 间隔(margin):两个异类支持向量到超平面的距离和,用下式表示 r = 2 ∣ ∣ w ⃗ ∣ ∣ r=\frac{2}{\mid\mid\vec{w}\mid\mid} r=w 2

  • 最大间隔(maximum margin):找到最佳超平面(确定w和b),使得r最大,也即是最小化||w||^2

  • 用拉格朗日求解: L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ α i ( 1 − y i ( w T x i + b ) ) L(w,b,\alpha)=\frac{1}{2}||w||^2+\sum\alpha_i(1-y_i(w^Tx_i+b)) L(w,b,α)=21w2+αi(1yi(wTxi+b))
    令L(w,b,a)对w和b的偏导为零得: w = ∑ α i y i x i , w=\sum\alpha_iy_ix_i, w=αiyixi, 0 = ∑ α i y i . 0=\sum\alpha_iy_i. 0=αiyi.
    代入上式得其对偶问题: m a x ∑ α i − 1 2 ∑ ∑ α i α j y i y j x i T x j max\sum\alpha_i-\frac{1}{2}\sum\sum\alpha_i\alpha_jy_iy_jx_i^Tx_j maxαi21αiαjyiyjxiTxj s . t . ∑ α i y i = 0 , α i ≥ 0 s.t. \sum\alpha_iy_i=0, \alpha_i \geq0 s.t.αiyi=0,αi0

  • SMO(Sequential Minimal Optimization):先固定α_i
    ​ 以外的所有参数,然后求α_i上的极值。SMO每次选择两个变量(α_i和α_j),固定其他参数,求解更新后的α_i和α_j,反复这个过程直到收敛。(SMO先选取违背KKT(Karush-Kuhn-Tucker)条件程度最大的变量,第二个变量应选择一个使目标函数值增长最快的变量。使得选取的两变量所对应样本之间的间隔最大)

  • 当训练样本不是线性可分时,需要将样本映射到一个更高维度的特征空间,使得样本可以在这个特征空间中线性可分。超平面可以表示为 w ⃗ ⋅ ϕ ( x ⃗ ) + b = 0 \vec{w}·\phi( \vec{x})+b=0 w ϕ(x )+b=0 其 对 偶 问 题 : m a x ∑ α i − 1 2 ∑ ∑ α i α j y i y j x i T x j ϕ ( x i ) T ϕ ( x j ) 其对偶问题:max\sum\alpha_i-\frac{1}{2}\sum\sum\alpha_i\alpha_jy_iy_jx_i^Tx_j\phi(x_i)^T\phi(x_j) maxαi21αiαjyiyjxiTxjϕ(xi)Tϕ(xj)
    由 于 ϕ ( x i ) T ϕ ( x j ) 计 算 困 难 , 设 : κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) . 由于\phi(x_i)^T\phi(x_j)计算困难,设: \kappa(x_i,x_j)=\phi(x_i)^T\phi(x_j). ϕ(xi)Tϕ(xj)κ(xi,xj)=ϕ(xi)Tϕ(xj). 即 是 x i 与 x j 在 特 征 空 间 的 内 积 等 于 它 们 在 原 始 样 本 空 间 中 通 过 函 数 κ ( ⋅ , ⋅ ) 计 算 的 结 果 。 即是x_i与x_j在特征空间的内积等于它们在原始样本空间中通过函数\kappa(·,·)计算的结果。 xixjκ() 这 里 的 κ 就 是 “ 核 函 数 ” ( k e r n e l f u n c t i o n ) 这里的\kappa就是“核函数”(kernel function) κkernelfunction

  • 核函数:只要一个对称函数所对应的核矩阵半正定,它就能作为核函数。常用的核函数有:线性核,多项式核,高斯核,拉普拉斯核,SIgmoid核。

  • 软间隔(soft margin):通过调整约束函数,使得确定超平面时不考虑某些样本,以避免过拟合。
    附libsvm的下载与安装:

下载:1):官网下载(https://www.csie.ntu.edu.tw/~cjlin/libsvm/#download)
安装:
1):lisvm文件包复制到matlab/toolbox
2) :打开matlab>主页>设置路径>添加并包含子文件夹>选定matlab/toolbox/libsvm
使用:直接应用以下MATLAB代码:

function [A,svmlabel]=f_SVM(tr,te)

%Input: tr: Training set
% te: testing set
% Note that: each row represents a instance, last column is label, begins from 1
%Output: A: Testing Accuracy
% TrA: Training Accuracy
% svmlabel: predict label by svm for testingdata

Trd = tr(:,1:end-1);
Trl = tr(:,end);%%训练样本和标号
Ted = te(:,1:end-1);
Tel = te(:,end);%%测试样本和标号

% %% 归一化预处理
% [Trd1,Ted1] = scaleForSVM(trd1,ted1,0,1);
%% 参数c和g寻优选择
% [bestCVaccuracy,bestc,bestg] = SVMcgForClass(Trl,Trd)

% ga_option.maxgen = 100;
% ga_option.sizepop = 20;
% ga_option.ggap = 0.9;
% ga_option.cbound = [0,100];
% ga_option.gbound = [0,100];
% ga_option.v = 5;
% [bestacc,bestc,bestg] = gaSVMcgForClass(train_data_labels,train_final,ga_option)

% pso_option.c1 = 1.5;
% pso_option.c2 = 1.7;
% pso_option.maxgen = 100;
% pso_option.sizepop = 20;
% pso_option.k = 0.6;
% pso_option.wV = 1;
% pso_option.wP = 1;
% pso_option.v = 3;
% pso_option.popcmax = 100;
% pso_option.popcmin = 0.1;
% pso_option.popgmax = 100;
% pso_option.popgmin = 0.1;
% [bestacc,bestc,bestg] = psoSVMcgForClass(Trl1,Trd1,pso_option)
%

% cmd = [’-c ‘,num2str(bestc),’ -g ‘,num2str(bestg),’-t’, num2str(2)];
% cmd = [’-c ‘,num2str(16),’ -g ‘,num2str(0.0625)];
% cmd = [’-c ‘,num2str(5.278),’ -g ',num2str(0.1895)];

%cmd = [’-c ‘,num2str(1),’ -g ‘,num2str(0.07) ,’-t’ ,num2str(0)];

%% 分类预测,cmd
model = svmtrain(Trl, Trd, ‘-c 1 -g 0.07 -t 0’);
[svmlabel, TestingAccuracy,~] = svmpredict(Tel, Ted, model);

A=TestingAccuracy(1)/100;

end

-s svm类型:SVM设置类型(默认0)
    0 — C-SVC; 1 –v-SVC; 2 – 一类SVM; 3 — e-SVR; 4 — v-SVR
-t 核函数类型:核函数设置类型(默认2)
    0 – 线性核函数:u’v
    1 – 多项式核函数:(ru’v + coef0)^degree
    2 – RBF(径向基)核函数:exp(-r|u-v|^2)
    3 – sigmoid核函数:tanh(r
u’v + coef0)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gamma):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/k,k为总类别数)
-r coef0:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认0)
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)
-p p:设置e -SVR 中损失函数p的值(默认0.1)
-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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值