KSVM

  1. 关于SVM
    在机器学习中,支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络[1])是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。
    除了进行线性分类之外,SVM还可以使用所谓的核技巧有效地进行非线性分类,将其输入隐式映射到高维特征空间中。

在SSVM实验中,我们提到将在本实验继续推导涉及核函数的部分。
4. 核函数
至此,我们都是假设训练样本是线性可分的。即,存在一个划分超平面能将属于不同标记的训练样本分开。但在很多任务中,这样的划分超平面是不存在的。支持向量机通过核技巧 (kernel trick) 来解决样本不是线性可分的情况 [1]。
4.1 非线性可分问题
既然在原始的特征空间不是线性可分的,支持向量机希望通过一个映射,使得数据在新的空间是线性可分的。
引理 18. 当 d 有限时,一定存在,使得样本在空间中线性可分.
证明. 此证明已超出本文范围,感兴趣的读者可参考计算学习理论中打散 (shatter) 的相应部分 [16]。
令 φ(x) 代表将样本 x 映射到中的特征向量,参数 w 的维数也要相应变为维,则支持向量机的基本型和对偶型相应变为:
在这里插入图片描述
其中,基本型对应于+ 1 个优化变量,m 项约束的二次规划问题;对偶型对应于 m 个优化变量,m + 2 项约束的二次规划问题。
4.2 核技巧
注意到,在支持向量机的对偶型中,被映射到高维的特征向量总是以成对内积的形式存在,即
在这里插入图片描述
如果先计算特征在空间
在这里插入图片描述
的映射,再计算内积,复杂度是在这里插入图片描述。当特征被映射到非常高维的空间,甚至是无穷维空间时,这将会是沉重的存储和计算负担。
核技巧旨在将特征映射和内积这两步运算压缩为一步, 并且使复杂度由在这里插入图片描述降为在这里插入图片描述。即,核技巧希望构造一个核函数 κ(xi,xj),使得在这里插入图片描述,并且 κ(xi,xj) 的计算复杂度是在这里插入图片描述
在这里插入图片描述
4.3 核函数选择
通过向高维空间映射及核技巧,我们可以高效地解决样本非线性可分问题。但面对一个现实任务,我们很 难知道应该具体向什么样的高维空间映射,即应该选什么样的核函数,而核函数选择的适合与否直接决定整体的性能。
表 1 列出了几种常用的核函数。通常,当特征维数 d 超过样本数 m 时 (文本分类问题通常是这种情况),使用线性核;当特征维数 d 比较小,样本数 m 中等时,使用 RBF 核;当特征维数 d 比较小,样本数 m 特别大时,支持向量机性能通常不如深度神经网络。
除此之外,用户还可以根据需要自定义核函数,但需要满足 Mercer 条件 [5]。
在这里插入图片描述
反之亦然。
新的核函数还可以通过现有核函数的组合得到,使用多个核函数的凸组合是多核学习 [9] 的研究内容。
在这里插入图片描述
4.4 核方法
上述核技巧不仅使用于支持向量机,还适用于一大类问题。
在这里插入图片描述
即 Φα 比 w 有更小的目标函数值,说明 w 不是最优解,与假设矛盾。因此,最优解必定是样本的线性组合。
此外,原版表示定理适用于任意单调递增正则项 Ω(w)。此证明已超出本文范围,感兴趣的读者可参考 [13]。
表示定理对损失函数形式没有限制,这意味着对许多优化问题,最优解都可以写成样本的线性组合。更进 一步,
在这里插入图片描述
将可以写成核函数的线性组合
在这里插入图片描述
通过核函数,我们可以将线性模型扩展成非线性模型。这启发了一系列基于核函数的学习方法,统称为核方法 [8]。

看不懂的话,只要看看下面比较简略的核映射和核函数的前置知识就可以。
通过核函数,支持向量机可以将特征向量映射到更高维的空间中,使得原本线性不可分的数据在映射之后的空间中变得线性可分。假设原始向量为x,映射之后的向量为z,这个映射为:
在这里插入图片描述
在实现时不需要直接对特征向量做这个映射,而是用核函数对两个特征向量的内积进行变换,这样做等价于先对向量进行映射然后再做内积:
在这里插入图片描述
在这里K为核函数。常用的非线性核函数有多项式核,高斯核(也叫径向基函数核,RBF)。下表列出了各种核函数的计算公式:
在这里插入图片描述
其中 ,在这里插入图片描述b,d为人工设置的参数,d是一个正整数,在这里插入图片描述为正实数,b为非负实数。
使用核函数后,支持向量机在训练时求解的对偶问题为:
在这里插入图片描述
其中为在这里插入图片描述训练样本,在这里插入图片描述 为样本的特征向量, 在这里插入图片描述为类别标签,取值为在这里插入图片描述 ,分别对应正样本和负样本,l为训练样本数。C为惩罚因子,用于对于违反约束条件的训练样本进行惩罚,是一个人工设定的参数。在训练时,如果使用多项式核,需要指定的参数为核函数参数在这里插入图片描述,b,以及d。如果选用高斯核,需要指定的参数为在这里插入图片描述。无论使用哪种核函数,训练时都要指定惩罚因子C,这是一个大于0的实数。预测时的分类判别函数为:
在这里插入图片描述
其中sgn为符号函数,定义为:
在这里插入图片描述

本次使用的数据集为著名的iris dataset,它根据四个属性预测植物所属的类别:萼片宽度,萼片长度,花瓣宽度和花瓣长度。
前期的步骤和SSVM都是一样的。
首先导入库
在这里插入图片描述
加载数据集
在这里插入图片描述
预处理
在这里插入图片描述
切割训练集和测试集
在这里插入图片描述
为了训练Kernel SVM,我们使用Scikit-Learn的svm库的SVC类。 与SSVM不同之处在于SVC类的内核参数的值。 在SSVM的情况下,我们使用“linear”作为内核参数的值。 但是,对于内核SVM,我们可以使用Gaussian,polynomial,sigmoid等。 我们下面类分别实现Gaussian,polynomial,sigmoid内核,这样一方面可以全面学习,一方面有可以由此查看哪一个kernel更适合我们的问题。

第一个是Polynomial Kernel
在这里插入图片描述
多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。

在Polynomial Kernel的情况下,还必须传递SVC类的degree参数的值,这是多项式的次数。看看我们如何使用Polynomial Kernel来实现KSVM:
在这里插入图片描述
然后做出预测
在这里插入图片描述
接着对Polynomial Kernel做出评估
在这里插入图片描述
输入结果如下
在这里插入图片描述
针对另外两个函数函数也是相同的步骤

第二个是Gaussian Kernel
在这里插入图片描述
高斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。
同样,显示给kernel参数赋相应的值
在这里插入图片描述
这里rbf就是代表Gaussian Kernel
预测
在这里插入图片描述
评估
在这里插入图片描述
输出如下
在这里插入图片描述

第三个是sigmoid Kernel
在这里插入图片描述
采用sigmoid核函数,支持向量机实现的就是一种多层神经网络。
同样,还是先给kernel参数赋值
在这里插入图片描述
预测
在这里插入图片描述
评估
在这里插入图片描述
输出如下
在这里插入图片描述
如果我们比较不同类型Kernel的性能,我们可以清楚地看到sigmoid内核执行效果最差。这是因为sigmoid函数这是返回两个值0和1,因此它更适合二分类问题。但是在我们的例子中,我们有三个输出类。
在高斯核和多项式核中,我们可以看到高斯核实现了完美的100%预测率。因此,高斯内核表现稍好一些。
所以,在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最下的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:
如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。

参考:
2. 机器学习(西瓜书)
3. 论文:张皓.从零推导支持向量机.南京大学软件新技术国家重点实验室
4. https://stackabuse.com/
5. https://blog.csdn.net/batuwuhanpei/article/details/52354822
6. https://zh.wikipedia.org/wiki/支持向量机

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值