SVM分类器-机器学习之python实现(1)

首先来介绍一下什么是SVM,Support Vector Machine,集支持向量机,这个机器可以得出两个类别中的最大边界,我把它理解为公平超平面,意思是对于每个类的边界距离都是相对来说比较大的(这样做的目的是将类别划分的更准确),之所以称之为公平超平面,是因为在偏向于某一类时就不符合我们SVM分类的宗旨了。
以一个平面坐标系为例,在这个平面坐标系中含有多种类别数据,我们先选定其中一种类别,然后将其他所有的类别都归为一类,首先从众多类中将这一目标类筛选出来,如果多分类SVM实现的话,我们就可以利用组合多个二分器进行实现。
支持向量机(SVM)的优势:
1、 样本较小,这里的样本笑并不是指样本的绝对数量少(对于任何算法,更多的样本总是可以带来更好的效果),而是指对于问题的复杂度,SVM算法要求的样本数是相对比较少的,SVM在解决问题的时候,和样本的维数是无关的(甚至于说样本的维数是上万维都可以,所以SVM很适合解决文本分类的问题,SVM的这种能力归功于引入了核函数)。
2、 结构风险较小,把对问题真实模型的逼近与问题真实解之间的误差叫做风险,误差的不断累计也是一种风险。
3、 非线性,是指SVM擅长应付样本数据线性不可分的情况,主要是通过松弛变量(惩罚变量)和核函数技术来实现,这一部分也是SVM的精髓所在,通常对于分类问题来说,究竟这个分类问题是否属于先行可分还没有准确界限定义,因此对于处理实际问题时不可以将其简单的认为是线性可分而简化处理,我们只好先将其当作时线性不可分来处理,毕竟线性可分是线性不可分的一种特例,在思考处理问题的思路时,我们向来不怕方法过于通用。

SVM的核函数:通常情况下,低维空间向量集是难于划分的,解决办法是将它们映射Z高维空间,但是其中带来的问题是其错综复杂的增长,而核函数恰好可以非常完美的解决这个问题,也就是说只要选择了恰当的核函数就可以获得高维空间的分类函数(超平面)。另外,在SVM理论中,采取不合的核函数将导致不合的SVM算法,在断定了核函数之后,因为断定核函数的已知数据也存在必然误差,所以引入败坏系数和处罚系数两个参变量来加以修订。
其实核函数的本质作用就可以概括为将低维空间的线形不可分问题转化为高维空间的线形可分问题,进而可以在高维空间找到分类的最优边界(超平面),如下图,可以将一个二维线形不可分(左图)转化为三维(右图),在这个三维空间内存在一个超平面可以将其分开即实现线性可分。
SVM分类器-机器学习之python实现(1)_第1张图片
SVM分类器-机器学习之python实现(1)_第2张图片

SVM核函数的分类:
(1)线性核函数,原始的内积运算就是核函数,关于内积:#在数学中,和,则它们的内积、数量积为一个实数:,内积越大说明两向量间的夹角越小#。对线形两侧的所有样本点进行求内积运算,垂直的除外(内积为0的)

SVM工具箱里的两个主要函数:
(1) model = svmtrain( train_label, train_matrix, [‘libsvm_options’]);
其中,train_label 表示的是训练集的标签。
train_matrix 表示的是训练集的属性矩阵。
libsvm_options 表示的是需要设置的一系列参数,网络上可以搜索到许多关于libsvm参数说明的文档,这里简单介绍一下几个常用的参数:
-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)
-p 设置e-SVR中损失函数p的值(默认为0.1)

model 表示的是训练得到的模型,是一个结构体(如果参数中用到了v,得到的就不是结构体;对于分类问题得到的是交叉检验下的平均分类准确率;对于回归问题,得到的是均方误差)。
(2)predict

classifier.fit()函数,用于根据给定的训练数据进行拟合SVM分类器,具体用法及参数为:
classifier.fit(X,y,sample_weight=none)
其中,X表示:阵列式(数组)、稀疏矩阵、形状训练向量(n_样本,n_特征),其中n_样本表示的是样本数量,n_特征表示的是特征数。当核函数为“precomputed”时,预期shape就为(n_samples,n_samples).
y: 表示阵列式(数组),shape(n_samples),是目标值(即分类中的类标签,回归中的实数)。
Sample_weight: 每个样品权重。用于重新缩放每个样本的惩罚值C。更高的权重迫使分类器更加重视这些点。

你可能感兴趣的:(SVM)