SVM分类器设计

SVM分类器设计
SVM分类器设计

SVM分类器设计

1.引言

支撑矢量机(SVM)是90年代中期发展起来的基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。SVM分类器在推广性和经验误差两方面能达到平衡,是目前比较盛行的分类器。

1.1 什么是SVM分类器

所谓支持向量机,顾名思义,分为两个部分了解,一什么是支持向量,简单来说,就是支持或者是支撑平面上把两类类别划分开来的超平面的向量点;二这里的“机”是什么意思。“机(machine,机器)”便是一个算法。在机器学习领域,常把一些算法看做是一个机器,如分类机(当然,也叫做分类器),而支持向量机本身便是一种监督式学习的方法它广泛的应用于统计分类以及回归分析中。

SVM的主要思想可以概括为两点:⑴它是针对线性可分情况进行分析;(2)对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。

1.2 SVM分类器的优点和缺点

优点:

(1)由于核函数隐含一个复杂映射,经验误差小,因此针对小样本数据利用支持向量能够完成线性或非线性规划问题;推广性和经验误差平衡。

(2)SVM 的最终决策函数只由靠近边界的少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

(3)少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:①增、删非支持向量样本对模型没有影响;②支持向量样本集具有一定的鲁棒性; ③有些成功的应用中,SVM 方法对核的选取不敏感

缺点:

(1)在训练分类器时 ,SVM的着眼点在于两类的交界部分 ,那些混杂在另一类中的点往往无助于提高分类器的性能 ,反而会大大增加训练器的计算负担 ,同时它们的存在还可能造成过学习 ,使泛化能力减弱 .为了改善支持向量机的泛化能力。

(2)SVM算法对大规模训练样本难以实施。由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。

(3)用SVM解决多分类问题存在困难。经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器1.3 SVM分类器当前研究热点

(1)针对大样本数据训练难度问题,对SVM算法的改进。例如J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法。

(2)如何降低边界混杂点(即所谓统计误差导致的“不干净”点)导致的不必要的训练计算负担,增强泛化能力。这种思路聚焦于样本数据预处理的探索,例如NN-SVM。

(3)分类器设计思想之间的融合以及取长补短。例如[2]采样支撑矢量机和最近邻分类相

结合的方法,在提高支撑矢量机的精度的同时,也较好的解决了核参数的问题。

1.4 本文所解决的问题

本文对所给的二类样本,随机生成等容量的训练样本和测试样本,利用训练样本使用三种核函数生成最优决策超平面,对测试样本进行判决,将测试结果与训练目标进行比较。使用“特异性”和“敏感度”两个指标评估不同核函数的下支撑矢量机的性能。

2.SVM 方法论述

支持向量机中对于非线性可分的情况,可使用一个非线性函数)(x ?把数据映射到一个高维特征空间,在高维特征空间建立优化超平面,判决函数变为:

??

?

???+><=∑=n i i i i b x x y Sgn x f 1)(),()(??α

一般无法知道)(x ?的具体表达,也难以知晓样本映射到高维空间后的维数、分布等情况,不能再高维空间求解超平面。由于SVM 理论只考虑高维特征空间的点积运算

>

<)(),(j i x x ??,而点积运算可由其对应的核函数直接给出,即

=),(j i x x K ><)(),(j i x x ??,用内积

)

,(j i x x K 代替最优分类面中的点积,就相当于把原

特征空间变换到了某一新的特征空间,得到新的优化函数:

Max: ),(21)(1,1

j l

j i i i j i l

i i x x K y W ∑∑==-=αααα

Subject to C i ≤≤α0,0=∑i i

i y α l i i ,,2,1,0 =≥α

求解上述问题后得到的最优分类函数是:

??

?

???+=∑=n i i i i b x x K y Sgn x f 1),()(α

b 是分类阀值,可以用任一个支持向量求得,或通过两类中任意一对支持向量取中值求得。其中核函数

)

,(x x K i 可以有多种形式,常用的有:

(1)线性核,Linear :>?=

d

i i x x x x K )1,(),(+><=,d 是自然数;

(3)径向基核,Radial Basis Fuction(RBF)核

0),gp ex p(),(2

2

>--

=gp x x x x K j i i

(4)sigmoid 核:

d

T i y k x x K )x tanh(),(j δ-=,其中k, δ均是常数

3.实验及验证

3.1流程图及其解释

Fig1 支撑矢量机训练以及测试设计流程图

实验步骤:

1.将数据随机分为两组,一组用来训练一组用来测试;

2.分别使用三种核函数对训练样本进行SVM 训练;

3.将三种核函数的结果分别针对测试集测试;

4.分析测试的结果。

3.2实验衡量指标

本文使用三个指标定义参数的影响:敏感度(sensitivity)、特异性(specificity ),耗

时长(time-consumption )。

1.敏感度:%100*d

s +=c c

ensitivity

2.特异性: %100*b

a

+=

a y specificit

3.耗时长: start end T T n consumptio time -=-

数据读取并随机分组

训练样本测试样本

SVM 训练

多项式核高斯核反曲核

3种决策超平面

训练结果分析

测试结果分析

判别

其中,a定义为类1判定为类1的样本数目,b为类1判定为类2的样本数目,c为类2判定为类1的样本数目,d为类2判定为类2的样本数目。

T start为程序自二次优化开始的时间,T end为程序计算出所有参数后的时间。

3.3实验结果分析

Fig2 训练集得到的决策超平面,红色‘O’标定支撑矢量

Fig3对应利用决策平面对测试集的分类效果

红色‘O’标定错误分类样本

Fig2和Fig3是在定义拉格朗日乘子上界为C=100,径向基核参数gp=2的分

类效果。

那么涉及到径向基核参数gp和拉格朗日乘子上界C最优问题,本实验以这两者为自变量,以敏感度,特异性,耗时长为因变量。在gp]

10

,1[∈

∈C

],

1000

,

100

[

的范围内寻找最优点,结果画图如下。

Fig4.敏感度随拉格朗日乘子上界C和径向基核参数gp的变化

Fig5.特异性随拉格朗日乘子上界C和径向基核参数gp的变化

Fig6.耗时长随拉格朗日乘子上界C和径向基核参数gp的变化

敏感度(sensitivity):反应实际为真(训练目标表征为1)且检测出来也为真的概率,值越大说明分类器越灵敏。从Fig4我们可以很明显看出,固定核参数gp,当上界为400时,敏感度达到谷底,故朗格朗日乘子上界C应该尽量偏离这个值。

特异性(specificity):反应实际为假(训练目标表征为-1)检测也为假的概率,此值越大说明分类越精确。从图Fig5可以看出,固定核参数时gp时,在100<=C<=800时候,特异性较强,而大于800的时候,有明显的快速下降趋势。

耗时长(Time-consumption):反应算法的运行时间。由图Fig6可以很清楚的看出固定径向基参数,耗时长波动较大。

综上所述,径向基核的核参数gp对分类器影响并不是最直观的,相反,朗格朗日乘子的上界对于分类效果有着很大的影响。对于本次分类实验,设定径向基参数gp=2,C=800效果较好。

3.3实验不足

实际上,本次实验并没能利用多项式核和sigmoid核获得较好的分类效果,其中多项式核尚能出现分类决策面,而sigmiod核完全无法获得优化效果。其中

利用多项式核获得的结果如下:

Fig7 训练集得到的决策超平面,红色‘O’标定支撑矢量

Fig8对应利用决策平面对测试集的分类效果

红色‘O’标定错误分类样本

如上所述,利用sigmoid核并未获得期望的结果,故此处未说明并展示。

4.实验结论以及后期探索

本次实验有分别利用三种核函数对训练集训练得到SVM分类器,继而对测试集进行测试,其中定义了敏感度、特异性和耗时长三种指标定义分类器性能。结论如下:

1.本实验的样本集近似于高斯分布,采用径向基核(RBF)取得了较满意的效果;其次是多项式核,sigmoid核并未展示出较好的性能。

2.对于径向基核函数。相较于核参数,朗格朗日乘子上界对敏感度、特异性、耗时长有较为大的影响。实验证明,当朗格朗日乘子上界C=800,核参数gp=2;时,三个衡量指标能够达到平衡。

3.核函数对于实验结果影响较大,核函数参数的设定需要一定的工作量。

本次实验最大失败是未能对多项式核和sigmiod核的性能作出探索,未达到预期的效果,未来的探索应该集中在:

1.SVM分类器的改进与加强,如样本的预处理;

2.核函数的本质与最新发展。

附录1 主函数

%function [sensitivity,specificity,time]=svm(x,y,xtest,gp,C)

clc;

clear all;

%*************************************************************%

% 获得数据

%*************************************************************%

[X1,X2]=getdata();

m=length(X1);

n=length(X2);

%*************************************************************%

% 将数据的1,2类样本随机分为2组,一组训练一组测试

%*************************************************************%

x1=zeros(2,m/2);x2=zeros(2,n/2);%存储训练样本

x3=zeros(2,m/2);x4=zeros(2,n/2);%存储测试样本

temp1=randperm(m);%随机将数据分为两组,一组用于训练一组测试

temp2=randperm(n);

for i=1:m/2

x1(:,i)=X1(:,temp1(i));%训练用

x3(:,i)=X1(:,temp1(i+m/2));%测试用

end

for j=1:n/2

x2(:,j)=X2(:,temp2(j));%训练用

x4(:,j)=X2(:,temp2(j+n/2));%测试用

end

y1=ones(1,m/2);y2=-ones(1,n/2);

Y = [y1,y2];%训练目标1*n矩阵,n为样本个数,值为+1或-1

X = [x1,x2];%训练样本2*n矩阵

Xtest=[x3,x4];

%*************************************************************%

% 获得训练结果并对测试样本分类

%*************************************************************%

t1=clock;

%四种核函数的调用格式:

%调用格式中的参数解释:

% degree - Degree d of polynomial kernel (positive scalar).

% offset - Offset c of polynomial and tanh kernel (scalar, negative for tanh). % width - Width s of Gauss kernel (positive scalar).

% gamma - Slope g of the tanh kernel (positive scalar).

% ker = struct('type','linear');

%ker = struct('type','ploy','degree',2,'offset',1);

%ker = struct('type','gauss','width',2);

ker = struct('type','tanh','gamma',2,'offset',0);

%相应的核函数产生训练结果

svm=svmtrain(ker,X,Y,800);

%利用训练样本对测试样本分类

Ytest=svmtest(svm,Xtest);

g=Ytest-Y;

t2=clock;

%*************************************************************% % 性能指标计算

%*************************************************************% fp=length(find(g==2));

fn=length(find(g==-2));

tp=length(find(g(1:50)==0));

tn=length(find(g(51:105)==0));

sensitivity=tp/(tp+fn);

specificity=tn/(tn+fp);

time=etime(t2,t1);

%*************************************************************% % 显示

%*************************************************************% %显示训练样本

figure(1);

plot(x1(1,:),x1(2,:),'b*',x2(1,:),x2(2,:),'g+')

xlabel('Training Set with SV Maked by "red O"');

hold on;

%标记支撑矢量

a=svm.a;e=1e-8;

sv=find(abs(a)>e);

plot(X(1,sv),X(2,sv),'ro');

grid on;

%画出决策面

drawing(svm);

figure(2);%画出错误分类的测试样本

temp=find(abs(g)>0);

plot(x3(1,:),x3(2,:),'*',x4(1,:),x4(2,:),'+');

hold on;

plot(Xtest(1,temp),Xtest(2,temp),'ro');

xlabel('The Test Result with Error Dots marked by"O"');

%标记决策面

drawing(svm);

其中调用的子函数说明,子函数见压缩包

gedata.m 读取样本数据子函数

smtrain.m 训练SVM分类器子函数

svmtest.m 使用已经训练出的分类器对测试样本进行测试子函数kernel.m 使用结构体变量为参数返回不同的kernel矩阵子函数

支持向量机(SVM)算法推导及其分类的算法实现

支持向量机算法推导及其分类的算法实现 摘要:本文从线性分类问题开始逐步的叙述支持向量机思想的形成,并提供相应的推导过程。简述核函数的概念,以及kernel在SVM算法中的核心地位。介绍松弛变量引入的SVM算法原因,提出软间隔线性分类法。概括SVM分别在一对一和一对多分类问题中应用。基于SVM在一对多问题中的不足,提出SVM 的改进版本DAG SVM。 Abstract:This article begins with a linear classification problem, Gradually discuss formation of SVM, and their derivation. Description the concept of kernel function, and the core position in SVM algorithm. Describes the reasons for the introduction of slack variables, and propose soft-margin linear classification. Summary the application of SVM in one-to-one and one-to-many linear classification. Based on SVM shortage in one-to-many problems, an improved version which called DAG SVM was put forward. 关键字:SVM、线性分类、核函数、松弛变量、DAG SVM 1. SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力。 对于SVM的基本特点,小样本,并不是样本的绝对数量少,而是与问题的复杂度比起来,SVM算法要求的样本数是相对比较少的。非线性,是指SVM擅长处理样本数据线性不可分的情况,主要通过松弛变量和核函数实现,是SVM 的精髓。高维模式识别是指样本维数很高,通过SVM建立的分类器却很简洁,只包含落在边界上的支持向量。

SVM分类器原理(分享借鉴)

SVM分类器原理 SVM定义 ?SVM是一种基于统计学习理论的机器学习方法,它是由Boser,Guyon, Vapnik在 COLT-92上首次提出,从此迅速发展起来。 ?Vapnik V N. 1995. The Nature of Statistical Learning Theory. Springer-Verlag, New York. ?Vapnik V N. 1998. Statistical Learning Theory. Wiley-Interscience Publication, John Wiley&Sons, Inc. ?SVM在解决小样本、非线性及高维模式识别问题中表现出许多特有的优势,并能够 推广应用到函数拟合等其他机器学习问题中.目前已经在许多智能信息获取与处理领域都取得了成功的应用。 SVM方法的特点 ?SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的 数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。 ?少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余 样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在: ?①增、删非支持向量样本对模型没有影响; ?②支持向量样本集具有一定的鲁棒性; ?③有些成功的应用中,SVM 方法对核的选取不敏感。 SVM 应用 ?近年来SVM 方法已经在图像识别、信号处理和基因图谱识别等方面得到了成功的 应用,显示了它的优势。 ?SVM 通过核函数实现到高维空间的非线性映射,所以适合于解决本质上非线性的分 类、回归和密度函数估计等问题。 ?支持向量方法也为样本分析、因子筛选、信息压缩、知识挖掘和数据修复等提供了 新工具。 SVM训练算法 ?传统的利用标准二次型优化技术解决对偶问题的方法,是SVM训练算法慢及 受到训练样本集规模制约的主要原因。 ?目前已提出了许多解决方法和改进算法,主要是从如何处理大规模样本集的

SVM分类器设计

SVM分类器设计 1.引言 支撑矢量机(SVM)是90年代中期发展起来的基于统计学习理论的一种机器学习方法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。SVM分类器在推广性和经验误差两方面能达到平衡,是目前比较盛行的分类器。 1.1 什么是SVM分类器 所谓支持向量机,顾名思义,分为两个部分了解,一什么是支持向量,简单来说,就是支持或者是支撑平面上把两类类别划分开来的超平面的向量点;二这里的“机”是什么意思。“机(machine,机器)”便是一个算法。在机器学习领域,常把一些算法看做是一个机器,如分类机(当然,也叫做分类器),而支持向量机本身便是一种监督式学习的方法它广泛的应用于统计分类以及回归分析中。 SVM的主要思想可以概括为两点:⑴它是针对线性可分情况进行分析;(2)对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能。 1.2 SVM分类器的优点和缺点 优点: (1)由于核函数隐含一个复杂映射,经验误差小,因此针对小样本数据利用支持向量能够完成线性或非线性规划问题;推广性和经验误差平衡。 (2)SVM 的最终决策函数只由靠近边界的少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。 (3)少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:①增、删非支持向量样本对模型没有影响;②支持向量样本集具有一定的鲁棒性; ③有些成功的应用中,SVM 方法对核的选取不敏感 缺点: (1)在训练分类器时 ,SVM的着眼点在于两类的交界部分 ,那些混杂在另一类中的点往往无助于提高分类器的性能 ,反而会大大增加训练器的计算负担 ,同时它们的存在还可能造成过学习 ,使泛化能力减弱 .为了改善支持向量机的泛化能力。 (2)SVM算法对大规模训练样本难以实施。由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。 (3)用SVM解决多分类问题存在困难。经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。可以通过多个二类支持向量机的组合来解决。主要有一对多组合模式、一对一组合模式和SVM决策树;再就是通过构造多个分类器的组合来解决。主要原理是克服SVM固有的缺点,结合其他算法的优势,解决多类问题的分类精度。如:与粗集理论结合,形成一种优势互补的多类问题的组合分类器1.3 SVM分类器当前研究热点 (1)针对大样本数据训练难度问题,对SVM算法的改进。例如J.Platt的SMO算法、T.Joachims的SVM、C.J.C.Burges等的PCGC、张学工的CSVM以及O.L.Mangasarian等的SOR算法。 (2)如何降低边界混杂点(即所谓统计误差导致的“不干净”点)导致的不必要的训练计算负担,增强泛化能力。这种思路聚焦于样本数据预处理的探索,例如NN-SVM。 (3)分类器设计思想之间的融合以及取长补短。例如[2]采样支撑矢量机和最近邻分类相

支持向量机SVM分类算法

支持向量机SVM分类算法 SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]。 支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14](或称泛化能力)。 以上是经常被有关SVM 的学术文献引用的介绍,我来逐一分解并解释一下。 Vapnik是统计机器学习的大牛,这想必都不用说,他出版的《Statistical Learning Theory》是一本完整阐述统计机器学习思想的名著。在该书中详细的论证了统计机器学习之所以区别于传统机器学习的本质,就在于统计机器学习能够精确的给出学习效果,能够解答需要的样本数等等一系列问题。与统计机器学习的精密思维相比,传统的机器学习基本上属于摸着石头过河,用传统的机器学习方法构造分类系统完全成了一种技巧,一个人做的结果可能很好,另一个人差不多的方法做出来却很差,缺乏指导和原则。所谓VC维是对函数类的一种度量,可以简单的理解为问题的复杂程度,VC维越高,一个问题就越复杂。正是因为SVM关注的是VC维,后面我们可以看到,SVM解决问题的时候,和样本的维数是无关的(甚至样本是上万维的都可以,这使得SVM很适合用来解决文本分类的问题,当然,有这样的能力也因为引入了核函数)。 结构风险最小听上去文绉绉,其实说的也无非是下面这回事。 机器学习本质上就是一种对问题真实模型的逼近(我们选择一个我们认为比较好的近似模型,这个近似模型就叫做一个假设),但毫无疑问,真实模型一定是不知道的(如果知道了,我们干吗还要机器学习?直接用真实模型解决问题不就可以了?对吧,哈哈)既然真实模型不知道,那么我们选择的假设与问题真实解之间究竟有多大差距,我们就没法得知。比如说我们认为宇宙诞生于150亿年前的一场大爆炸,这个假设能够描述很多我们观察到的现象,但它与真实的宇宙模型之间还相差多少?谁也说不清,因为我们压根就不知道真实的宇宙模型到底是什么。 这个与问题真实解之间的误差,就叫做风险(更严格的说,误差的累积叫做风险)。我们选择了一个假设之后(更直观点说,我们得到了一个分类器以后),真实误差无从得知,但我们可以用某些可以掌握的量来逼近它。最直观的想法就是使用分类器在样本数据上的分类的结果与真实结果(因为样本是已经标注过的数据,是准确的数据)之间的差值来表示。这个差值叫做经验风险Remp(w)。以前的机器学习方法都把经验风险最小化作为努力的目标,但后来发现很多分类函数能够在样本集上轻易达到100%的正确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或泛化能力差)。此时的情况便是选择了一个足够复杂的分类函数(它的VC维很高),能够精确的记住每一个样本,但对样本之外的数据一律分类错误。回头看看经验风险最小化原则我们就会发现,此原则适用的大前提是经验风险要确实能够逼近真实风险才行(行话叫一致),但实际上能逼近么?答案是不能,因为样本数相对于现实世界要分类的文本数来说简直九牛

SVM入门(十)将SVM用于多类分类

SVM入门(十)将SVM用于多类分类 从SVM的那几张图可以看出来,SVM是一种典型的两类分类器,即它只回答属于正类还是负类的问题。而现实中要解决的问题,往往是多类的问题(少部分例外,例如垃圾邮件过滤,就只需要确定“是”还是“不是”垃圾邮件),比如文本分类,比如数字识别。如何由两类分类器得到多类分类器,就是一个值得研究的问题。 还以文本分类为例,现成的方法有很多,其中一种一劳永逸的方法,就是真的一次性考虑所有样本,并求解一个多目标函数的优化问题,一次性得到多个分类面,就像下图这样: 多个超平面把空间划分为多个区域,每个区域对应一个类别,给一篇文章,看它落在哪个区域就知道了它的分类。 看起来很美对不对?只可惜这种算法还基本停留在纸面上,因为一次性求解的方法计算量实在太大,大到无法实用的地步。 稍稍退一步,我们就会想到所谓“一类对其余”的方法,就是每次仍然解一个两类分类的问题。比如我们有5个类别,第一次就把类别1的样本定为正样本,其余2,3,4,5的样本合起来定为负样本,这样得到一个两类分类器,它能够指出一篇文章是还是不是第1类的;第二次我们把类别2 的样本定为正样本,把1,3,4,5的样本合起来定为负样本,得到一个分类器,如此下去,我们可以得到5个这样的两类分类器(总是和类别的数目一致)。到了有文章需要分类的时候,我们就拿着这篇文章挨个分类器的问:是属于你的么?是属于你的么?哪个分类器点头说是了,文章的类别就确定了。这种方法的好处是每个优化问题的

规模比较小,而且分类的时候速度很快(只需要调用5个分类器就知道了结果)。但有时也会出现两种很尴尬的情况,例如拿一篇文章问了一圈,每一个分类器都说它是属于它那一类的,或者每一个分类器都说它不是它那一类的,前者叫分类重叠现象,后者叫不可分类现象。分类重叠倒还好办,随便选一个结果都不至于太离谱,或者看看这篇文章到各个超平面的距离,哪个远就判给哪个。不可分类现象就着实难办了,只能把它分给第6个类别了……更要命的是,本来各个类别的样本数目是差不多的,但“其余”的那一类样本数总是要数倍于正类(因为它是除正类以外其他类别的样本之和嘛),这就人为的造成了上一节所说的“数据集偏斜”问题。 因此我们还得再退一步,还是解两类分类问题,还是每次选一个类的样本作正类样本,而负类样本则变成只选一个类(称为“一对一单挑”的方法,哦,不对,没有单挑,就是“一对一”的方法,呵呵),这就避免了偏斜。因此过程就是算出这样一些分类器,第一个只回答“是第1类还是第2类”,第二个只回答“是第1类还是第3类”,第三个只回答“是第1类还是第4类”,如此下去,你也可以马上得出,这样的分类器应该有5 X 4/2=10个(通式是,如果有k个类别,则总的两类分类器数目为k(k-1)/2)。虽然分类器的数目多了,但是在训练阶段(也就是算出这些分类器的分类平面时)所用的总时间却比“一类对其余”方法少很多,在真正用来分类的时候,把一篇文章扔给所有分类器,第一个分类器会投票说它是“1”或者“2”,第二个会说它是“1”或者“3”,让每一个都投上自己的一票,最后统计票数,如果类别“1”得票最多,就判这篇文章属于第1类。这种方法显然也会有分类重叠的现象,但不会有不可分类现象,因为总不可能所有类别的票数都是0。看起来够好么?其实不然,想想分类一篇文章,我们调用了多少个分类器?10个,这还是类别数为5的时候,类别数如果是1000,要调用的分类器数目会上升至约500,000个(类别数的平方量级)。这如何是好? 看来我们必须再退一步,在分类的时候下功夫,我们还是像一对一方法那样来训练,只是在对一篇文章进行分类之前,我们先按照下面图的样子来组织分类器(如你所见,这是一个有向无环图,因此这种方法也叫做DAG SVM)

SVM分类器的原理及应用

SVM分类器的原理及应用 姓名:苏刚学号:1515063004学院:数学与计算机学院 一、SVM分类器的原理 SVM法即支持向量机(Support Vector Machine)法,由Vapnik等人于1995年提出,具 有相对优良的性能指标。该方法是建立在统计学习理论基础上的机器学习方法。通过学习算法,SVM可以自动寻找出那些对分类有较好区分能力的支持向量,由此构造出的分类器可以 最大化类与类的间隔,因而有较好的适应能力和较高的分准率。该方法只需要由各类域的边 界样本的类别来决定最后的分类结果。支持向量机算法的目的在于寻找一个超平面H(d),该 超平面可以将训练集中的数据分开,且与类域边界的沿垂直于该超平面方向的距离最大,故SVM法亦被称为最大边缘(maximum margin)算法。待分样本集中的大部分样本不是支持向量,移去或者减少这些样本对分类结果没有影响,SVM法对小样本情况下的自动分类有着较好的 分类结果. SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性 可分的问题。简单地说,就是升维和线性化。升维,就是把样本向高维空间做映射,一般情 况下这会增加计算的复杂性,甚至会引起“维数灾难”,因而人们很少问津。但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以 通过一个线性超平面实现线性划分(或回归)。一般的升维都会带来计算的复杂化,SVM方 法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复 杂性,而且在某种程度上避免了“维数灾难”。这一切要归功于核函数的展开和计算理论。 选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种: ⑴线性核函数K(x,y)=x·y; ⑵多项式核函数K(x,y)=[(x·y)+1]^d; ⑶径向基函数K(x,y)=exp(-|x-y|^2/d^2); ⑷二层神经网络核函数K(x,y)=tanh(a(x·y)+b);

SVM的常用多分类算法概述

SVM的常用多分类算法概述 摘要:SVM方法是建立在统计学习理论基础上的机器学习方法,具有相对优良的分类性能,是一种非线性分类器。最初SVM是用以解决两类分类问题,不能直接用于多类分类,当前已经有许多算法将SVM推广到多类分类问题,其中最常用两类:OAA和OAO算法,本文主要介绍这两类常用的多分类算法。 关键词:SVM;多分类;最优化 自从90年代初V. Vapnik提出经典的支持向量机理论(SVM),由于其完整的理论框架和在实际应用中取得的很多好的效果,在模式识别、函数逼近和概率密度估计领域受到了广泛的重视。SVM方法是建立在统计学习理论基础上的机器学习方法,具有相对优良的分类性能。SVM是一种非线性分类器。它的基本思想是将输入空间中的样本通过某种非线性函数关系映射到一个特征空间中,使两类样本在此特征空间中线性可分,并寻找样本在此特征空间中的最优线性区分平面。它的几个主要优点是可以解决小样本情况下的机器学习问题,提高泛化性能,解决高维问题、非线性问题,可以避免神经网络结构选择和局部极小点问题。 1. SVM方法 若样本集Q={(x i,y i)|i=1,……,L}∈R d*{-1,+1}是线性可分的。则存在分类超平面w T x+b=0,x∈R d对样本集Q中任一(x i,y i)都满足: 在空间R d中样本x=(x1,…, x d)r到分类超平面的距离d=|w T*x+b|/||w||,其中 ||w||= . 当存在x 使得w T x i+b=±1, 则图1中超平面的分类间隔 margin = 2/ ‖w ‖。 使分类间隔margin 最大的超平面即为最优分类超平面。寻找最优分类超平面的问题将转化为求如下一个二次规划问题: minΦ( w) =1/2‖w ‖ 满足约束条件: y i ( w T x i + b) ≥1 , i = 1 ,2 , ?, L 采用Lagrange 乘子转换为一个对偶问题,形式如下: 满足约束条件:

20.ENVI4.3 支持向量机分类原理、操作及实例分析

ENVI4.3 支持向量机分类原理、操作及实例分析 一、支持向量机算法介绍 1.支持向量机算法的理论背景 支持向量机分类(Support Vector Machine或SVM)是一种建立在统计学习理论(Statistical Learning Theory或SLT)基础上的机器学习方法。 与传统统计学相比,统计学习理论(SLT)是一种专门研究小样本情况下及其学习规律的理论。该理论是建立在一套较坚实的理论基础之上的,为解决有限样本学习问题提供了一个统一的框架。它能将许多现有方法纳入其中,有望帮助解决许多原来难以解决的问题,如神经网络结构选择问题、局部极小点问题等;同时,在这一理论基础上发展了一种新的通用学习方法——支持向量机(SVM),已初步表现出很多优于已有方法的性能。一些学者认为,SLT和SVM正在成为继神经网络研究之后新的研究热点,并将推动机器学习理论和技术的重大发展。 支持向量机方法是建立在统计学习理论的VC维(VC Dimension)理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力。 支持向量机的几个主要优点有: (1)它是专门针对有限样本情况的,其目标是得到现有信息下的最优解而不仅仅是样本数趋于无穷大时的最优值; (2)算法最终将转化成为一个二次型寻优问题,从理论上说,得到的将是全局最优点,解决了在神经网络方法中无法避免的局部极值问题; (3)算法将实际问题通过非线性变换转换到高维的特征空间(Feature Space),在高维空间中构造线性判别函数来实现原空间中的非线性判别函数,特殊性质能保证机器有较 好的推广能力,同时它巧妙地解决了维数问题,其算法复杂度与样本维数无关; 2.支持向量机算法简介 通过学习算法,SVM可以自动寻找那些对分类有较大区分能力的支持向量,由此构造出分类器,可以将类与类之间的间隔最大化,因而有较好的推广性和较高的分类准确率。 最优分类面(超平面)和支持向量

SVM算法推导及其分类的算法实现

SVM算法推导及其分类的算法实现 摘要:本文从线性分类问题开始逐步的叙述支持向量机思想的形成,并提供相应的推导过程。简述核函数的概念,以及kernel在SVM算法中的核心地位。介绍松弛变量引入的SVM算法原因,提出软间隔线性分类法。概括SVM分别在一对一和一对多分类问题中应用。基于SVM在一对多问题中的不足,提出SVM 的改进版本DAG SVM。 Abstract:This article begins with a linear classification problem, Gradually discuss formation of SVM, and their derivation. Description the concept of kernel function, and the core position in SVM algorithm. Describes the reasons for the introduction of slack variables, and propose soft-margin linear classification. Summary the application of SVM in one-to-one and one-to-many linear classification. Based on SVM shortage in one-to-many problems, an improved version which called DAG SVM was put forward. 关键字:SVM、线性分类、核函数、松弛变量、DAG SVM 1. SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力。 对于SVM的基本特点,小样本,并不是样本的绝对数量少,而是与问题的复杂度比起来,SVM算法要求的样本数是相对比较少的。非线性,是指SVM擅长处理样本数据线性不可分的情况,主要通过松弛变量和核函数实现,是SVM 的精髓。高维模式识别是指样本维数很高,通过SVM建立的分类器却很简洁,只包含落在边界上的支持向量。

电子科技大学DSP作业SVM分类器设计

SVM分类器设计 (控制工程XXXXXXXX) 一、问题表述 对“data3.m”数据,用其中一半的数据采用非线性SVM算法设计分类器并画出决策面,另一半数据用于测试分类器性能。比较不同核函数的结果。(注意讨论算法中参数设置的影响。) 二、方法描述 SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题.简单地说,就是升维和线性化.升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起“维数灾难”,因而人们很少问津.但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归).一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难这一切要归功于核函数的展开和计算理论. 选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种: ⑴线性核函数K(x,y)=x·y; ⑵多项式核函数K(x,y)=[(x·y)+1]^d; ⑶径向基函数K(x,y)=exp(-|x-y|^2/d^2) ⑷二层神经网络核函数K(x,y)=tanh(a(x·y)+b). SVM的主要思想可以概括为两点:⑴它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则。其原理也从线性可分说起,然后扩展到线性不可分的情况。甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机(Support Vector Machine,简称SVM)。支持向量机的提出有很深的理论背景。 三、算法实现 X =load('data.txt'); n = length(X);%总样本数量 y = X(:,4);%类别标志 X = X(:,1:3); TOL = 0.0001;%精度要求 C = 1;%参数,对损失函数的权重 b = 0;%初始设置截距b Wold = 0;%未更新a时的W(a) Wnew = 0;%更新a后的W(a) for i = 1 : 50%设置类别标志为1或者-1 y(i) = -1;

SVM习题集

SVM 1.判断题 (1) 在SVM训练好后,我们可以抛弃非支持向量的样本点,仍然可以对新样本进行分类。(T) (2) SVM对噪声(如来自其他分布的噪声样本)鲁棒。(F) 2.简答题 现有一个点能被正确分类且远离决策边界。如果将该点加入到训练集,为什么SVM的决策边界不受其影响,而已经学好的logistic回归会受影响? 答:因为SVM采用的是hinge loss,当样本点被正确分类且远离决策边界时,SVM给该样本的权重为0,所以加入该样本决策边界不受影响。而logistic回归采用的是log损失,还是会给该样本一个小小的权重。 3.产生式模型和判别式模型。(30分,每小题10分) 图2:训练集、最大间隔线性分类器和支持向量(粗体) (1)图中采用留一交叉验证得到的最大间隔分类器的预测误差的估计是多少(用样本数表示即可)? 从图中可以看出,去除任意点都不影响SVM的分界面。而保留所有样本时,所有的样本点都能被正确分类,因此LOOCV的误差估计为0。 (2)说法“最小结构风险保证会找到最低决策误差的模型”是否正确,并说明理由。(F) 最小结构风险(SRM)只能保证在所有考虑的模型中找到期望风险上界最小的模型。 (3)若采用等协方差的高斯模型分别表示上述两个类别样本的分布,则分类器的VC维是多少?为什么? 等协方差的高斯模型的决策边界为线性,因为其VC维维D+1。题中D=2.

4、SVM 分类。(第1~5题各4分,第6题5分,共25分) 下图为采用不同核函数或不同的松弛因子得到的SVM 决策边界。但粗心的实验者忘记记录每个图形对应的模型和参数了。请你帮忙给下面每个模型标出正确的图形。 (1)、211min , s.t.2N i i C ξ=??+ ? ?? ∑w ()00, 1, 1,....,, T i i i y w i N ξξ≥+≥-=w x 其中0.1C =。 线性分类面,C 较小, 正则较大,||w||较小,Margin 较大, 支持向量较多(c ) (2)、211min , s.t.2N i i C ξ=??+ ? ?? ∑w ()00, 1, 1,....,, T i i i y w i N ξξ≥+≥-=w x 其中1C =。 线性分类面,C 较大, 正则较小,||w||较大,Margin 较小 支持向量的数目少(b ) (3)、()111 1max ,2N N N i i j i j i j i i j y y k ααα===??- ??? ∑∑∑x x 1 s.t. 0, 1,....,, 0N i i i i C i N y αα=≤<==∑ 其中()()2 ,T T k '''=+x x x x x x 。 二次多项式核函数,决策边界为二次曲线 (d)

SVM入门(六)线性分类器的求解——问题的转化,直观角度

SVM入门(六)线性分类器的求解——问题的转化,直观角度 让我再一次比较完整的重复一下我们要解决的问题:我们有属于两个类别的样本点(并不限定这些点在二维空间中)若干,如图, 圆形的样本点定为正样本(连带着,我们可以把正样本所属的类叫做正类),方形的点定为负例。我们想求得这样一个线性函数(在n维空间中的线性函数): g(x)=wx+b 使得所有属于正类的点x+代入以后有g(x+)≥1,而所有属于负类的点x-代入后有g(x-)≤-1(之所以总跟1比较,无论正一还是负一,都是因为我们固定了间隔为1,注意间隔和几何间隔的区别)。代入g(x)后的值如果在1和-1之间,我们就拒绝判断。 求这样的g(x)的过程就是求w(一个n维向量)和b(一个实数)两个参数的过程(但实际上只需要求w,求得以后找某些样本点代入就可以求得b)。因此在求g(x)的时候,w才是变量。

你肯定能看出来,一旦求出了w(也就求出了b),那么中间的直线H就知道了(因为它就是wx+b=0嘛,哈哈),那么H1和H2也就知道了(因为三者是平行的,而且相隔的距离还是||w||决定的)。那么w是谁决定的?显然是你给的样本决定的,一旦你在空间中给出了那些个样本点,三条直线的位置实际上就唯一确定了(因为我们求的是最优的那三条,当然是唯一的),我们解优化问题的过程也只不过是把这个确定了的东西算出来而已。 样本确定了w,用数学的语言描述,就是w可以表示为样本的某种组合: w=α1x1+α2x2+…+αn x n 式子中的αi是一个一个的数(在严格的证明过程中,这些α被称为拉格朗日乘子),而x i是样本点,因而是向量,n就是总样本点的个数。为了方便描述,以下开始严格区别数字与向量的乘积和向量间的乘积,我会用α1x1表示数字和向量的乘积,而用表示向量x1,x2的内积(也叫点积,注意与向量叉积的区别)。因此g(x)的表达式严格的形式应该是: g(x)=+b 但是上面的式子还不够好,你回头看看图中正样本和负样本的位置,想像一下,我不动所有点的位置,而只是把其中一个正样本点定为负样本点(也就是把一个点的形状从圆形变为方形),结果怎么样?三条直线都必须移动(因为对这三条直线的要求是必须把方形和圆形的点正确分开)!这说明w不仅跟样本点的位置有关,还跟样本的类别有关(也就是和样本的“标签”有关)。因此用下面这个式子表示才算完整: w=α1y1x1+α2y2x2+…+αn y n x n(式1) 其中的y i就是第i个样本的标签,它等于1或者-1。其实以上式子的那一堆拉格朗日乘子中,只有很少的一部分不等于0(不等于0才对w起决定作用),这部分不等于0的拉格朗日乘子后面所乘的样本点,其实都落在H1和H2上,也正是这部分样本(而不需要全部样本)唯一的确定了分类函数,当然,更严格

SVM分类原理

SVM 的分类原理 SVM 的主要思想可以概括为两点: (1) 它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能; (2) 它基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界。支持向量机的目标就是要根据结构风险最小化原理,构造一个目标函数将两类模式尽可能地区分开来,通常分为两类情况来讨论, (1) 线性可分,(2) 线性不可分。 1. 1 线性可分情况 在线性可分的情况下,就会存在一个超平面使得训练样本完全分开,该超平面可描述为: w ·x + b = 0 (1) 其中,“·”是点积, w 是n 维向量, b 为偏移量。 最优超平面是使得每一类数据与超平面距离最近的向量与超平面之间的距离最大的这样的平面. 最优超平面可以通过解下面的二次优化问题来获得: 满足约束条件: , i = 1 ,2 ,3 ,......, n. (3) 在特征数目特别大的情况,可以将此二次规划问题转化为其对偶问题: (4) (5) (6)

满足约束条件: (7) 这里是Lagrange 乘子, 是最优超平面的法向量, 是最优超 平面的偏移量,在这类优化问题的求解与分析中, KKT条件将起到很重要的作用,在(7) 式中,其解必须满足: (8) 从式(5) 可知,那些 = 0 的样本对分类没有任何作用,只有那些 > 0 的样本才对分类起作用,这些样本称为支持向量,故最终的分类函数为: (9) 根据f ( x) 的符号来确定X 的归属。 1. 2 线性不可分的情况 对于线性不可分的情况,可以把样本X 映射到一个高维特征空间H,并在此空间中运用原空间的函数来实现内积运算,这样将非线性问题转换成另一空间的线性问题来获得一个样本的归属. 根据泛函的有关理论,只要一种核函数满足Mercer 条件,它就对应某一空间中的内积,因此只要在最优分类面上采用适当的内积函数就可以实现这种线性不可分的分类问题. 此时的目标函数为: (10) 其相应的分类函数为: (11) 1. 3 内积核函数 目前有三类用的较多的内积核函数:第一类是 (12)

相关文档
最新文档