目录

一.SVM数学模型

二.Python实现

一.SVM数学模型

首先,什么是SVM?英文全称support vector machine.

我们知道vector是向量的意思,在高维空间中的每一个点就是一个向量。(由一组基构成的向量)

support是支持支撑的意思,machine意为机器,就是分类器

支持向量机就是这三个单词连在一起的直接翻译。换个名字,支撑向量分类器,可能更易于理解。

看完上述,可能你还是觉得非常茫然。接下来看一幅图

​ 平面上有两种球,蓝色和红色,我们的目标是将蓝色球和红色球分开(SVM解决分类问题)

​ 当训练样本是线性可分的时候,如上图所示。我们可以用超平面将两堆球分开。那么问题来了,分开的标准是什么,在上图中,我们可以画出无数条直线将两堆小球分开。于是,SVM提出基于间隔最大化的原理,找到最优的分类器(machine)。

用来划分的超平面用以下的线性方程来描述

​ w是超平面的法向量,x就是vector(一组坐标),b是截距(位移项)

此时再来理解所谓支持向量分类器,支持向量是指位于最大间隔边界上的向量(即样本点)。

任意点到超平面距离公式推导:

为什么我们使用超平面来进行分类,请看下图

最下面的平面是我们的训练样本在平面上的分布,可以看出,红色球和蓝色球的分布并非线性可分,此时我们将该平面“扭曲”为超上图所示(有点像抛物面),然后找到一个分类器,使得仍然能够满足最大间隔原理。

二.Python实现

在Python中,scikit- learn是一个广泛使用的用于实现机器学习算法的库,SVM也可以在scikit- learning库中找到并使用。

1
#Import Library 
2
from sklearn import svm 
3
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset 
4
# Create SVM classification object 
5
model = svm.svc(kernel='linear', c=1, gamma=1)
6
 # there is various option associated with it, like changing kernel, gamma and C value. Will discuss more # about it in next section.Train the model using the training sets and check score 
7
 model.fit(X, y) model.score(X, y) 
8
 #Predict Output predicted= model.predict(x_test)