机器学习专题--07svm

298 阅读3分钟

这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战 SVM算法原理

支持向量机是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,您可能会疑惑什么是线性可分,我们会介绍这一概念。

线性可分

在二维空间上,两类点被一条直线完全分开叫做线性可分。

它的数学定义是:D0和D1是n维欧式空间的两个点集。如果存在n维向量w和实数b,使得所有属于D0的点Xi都有
而对于所有属于D1的点Xj则有
我们称D0和D1线性可分。
我们知道,在一个平面当中,能把两类点分开的直线可能有很多条,如下图所示

对于淡蓝色的点,如果这些点到分类直线的距离越大,再产生的新点的特性如果与淡蓝色点相似,也会与淡蓝色集合点分布在同一侧,表明与淡蓝色集合点属于同一个类别,分类更加精确。同理,对于黑色点来说,这条分类直线离他们的距离也越远越好。了解这个概念之后,我们能得到二维线性可分问题的目标函数:(关于目标函数的推导,我会放在附录,如果您感兴趣,可以查看)

核函数

1.线性核函数(Linear Kernel)

主要用于线性可分的情况。在原始空间中寻找最优线性分类器,具有参数少,速度快的优势。通常,我们首先采用线性核函数先进行分类尝试。

2.多项式核函数(Polynomial Kernel)

多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,属于全局核函数,参数d越大,映射的维度也越高,计算量就会越大,容易出现“过拟合”的现象

3.高斯核函数(Gaussian Kernel)

高斯核函数是一种局部性较强的函数,改函数是应用最广的一个,无论在大样本或者在小样本都有比较好的性能,且相对于多项式核函数来说参数更少。当数据点距离中心点变远时,取值会变小。高斯核函数对数据中存在的噪声有着较好的抗干扰能力,由于其很强的局部性,其参数决定了函数作用范围,随着参数σ的增大而减弱。

4.Sigmoid核函数(Sigmoid Kernel)

采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络,该核函数被广泛运用于深度学习和机器学习中。

5.如何选择

吴恩达教授曾经给出过一系列的选择核函数的方法:

  1. 当样本的特征很多时,特征的维数很高,这是往往样本线性可分,可考虑用线性核函数的SVM或LR
  2. 当样本的数量很多,但特征较少时,可以手动添加一些特征,使样本线性可分,再考虑用线性核函数的SVM或LR。
  3. 当样特征维度不高时,样本数量也不多时,考虑用高斯核函数

代码示例

以鸢尾花数据集为例。

1.导入鸢尾花数据集