支持向量机(四)-- 核函数

一、核函数的引入

问题1:

SVM显然是线性分类器,但数据如果根本就线性不可分怎么办?

解决方案1:

数据在原始空间(称为输入空间)线性不可分,但是映射到高维空间(称为特征空间)后很可能就线性可分了。

问题2:

映射到高维空间同时带来一个问题:在高维空间上求解一个带约束的优化问题显然比在低维空间上计算量要大得多,这就是所谓的“维数灾难”。

解决方案2:

于是就引入了“核函数”,核函数的价值在于它虽然也是讲特征进行从低维到高维的转换。

二、实例说明

例如图中的两类数据,分别分布为两个圆圈的形状,不论是任何高级的分类器,只要它是线性的,就没法处理,SVM 也不行。因为这样的数据本身就是线性不可分的。

从上图我们可以看出一个理想的分界应该是一个“圆圈”而不是一条线(超平面)。如果用 X1 和 X2 来表示这个二维平面的两个坐标的话,我们知道一条二次曲线(圆圈是二次曲线的一种特殊情况)的方程可以写作这样的形式:

a1X1+a2X21+a3X2+a4X22+a5X1X2+a6=0

注意上面的形式,如果我们构造另外一个五维的空间,其中五个坐标的值分别为 Z1=X1, Z2=X21, Z3=X2, Z4=X22, Z5=X1X2,那么显然,上面的方程在新的坐标系下可以写作:

∑i=15aiZi+a6=0

关于新的坐标 Z ,这正是一个超平面 的方程!也就是说,如果我们做一个映射 ?:R2→R5 ,将 X 按照上面的规则映射为 Z ,那么在新的空间中原来的数据将变成线性可分的,从而使用之前我们推导的线性分类算法就可以进行处理了。这正是
Kernel 方法处理非线性问题的基本思想。

三、详细分析

还记得之前我们用内积这里是二维模型,但是现在我们需要三维或者更高的维度来表示样本。这里我们假设是维度是三;

那么首先需要将特征x扩展到三维,然后寻找特征和结果之间的模型。我们将这种特征变换称作特征映射(feature
mapping)。映射函数称作,在这个例子中

我们希望将得到的特征映射后的特征应用于SVM分类,而不是最初的特征。这样,我们需要将前面公式中的内积从,映射到

为什么需要映射后的特征而不是最初的特征来参与计算,一个重要原因是样例可能存在线性不可分的情况,而将特征映射到高维空间后,往往就可分了。

核函数的定义:

将核函数形式化定义,如果原始特征内积是,映射后为,那么定义核函数(Kernel)为

现在有了以上的概念,我们现在要计算K(x,z)只要简单的计算,然后计算,在求出它们的内积。但是现在有一个问题,那是计算K(x,z)的时间复杂度是提高了。即使是计算也是很复杂的。那现在怎么解决呢?

现在我们假设:x,z都是n维,同时有

展开

发现我们可以只计算原始特征x和z内积的平方(时间复杂度是O(n)),就等价与计算映射后特征的内积。也就是说我们不需要花时间了。

现在看一下映射函数(n=3时),根据上面的公式,得到

也就是说核函数只能在选择这样的作为映射函数时才能够等价于映射后特征的内积。

再看一个核函数

对应的映射函数(n=3时)是

更一般地,核函数对应的映射后特征维度为

四、如何映射到核函数

现在介绍了核函数之后那到底怎么来使用核函数到样本了?

设超平面实际的方程是这个样子(圆心在 X2 轴上的一个正圆):

a1X21+a2(X2?c)2+a3=0

因此我只需要把它映射到 Z1=X21, Z2=X22, Z3=X2 这样一个三维空间中即可,下图是映射之后的结果,将坐标轴经过适当的旋转,就可以很明显地看出,数据是可以通过一个平面来分开的:

现在让我们再回到 SVM 的情形,假设原始的数据时非线性的,我们通过一个映射 ?(?) 将其映射到一个高维空间中,数据变得线性可分了,这个时候,我们就可以使用原来的推导来进行计算,只是所有的推导现在是在新的空间,而不是原始空间中进行。

我们上一次得到的最终的分类函数是这样的:

现在则是在映射过后的空间,即:

而其中的 α 也是通过求解如下
dual 问题而得到的:

回到我们之前构造的一个五维的空间:到现在貌似我们还没有用到核函数,但是现在我们可以看出,数据映射到新空间后,因为新空间是多维的,计算量肯定是增加了不少了,现在就只能用核函数来解决了。

不妨还是从最开始的简单例子出发,设两个向量和  ,而?(*) 即是到前面说的五维空间的映射,

五个坐标的值分别为 Z1=X1, Z2=X21, Z3=X2, Z4=X22, Z5=X1X2,

因此映射过后的内积为:

根据我们之前简介的核函数的实现,具体来说,上面这个式子的计算结果实际上映射了

这样一来计算的问题就算解决了,避开了直接在高维空间中进行计算,而结果却是等价的。

五、高斯核函数

再看另外一个核函数

这时,如果x和z很相近(),那么核函数值为1,如果x和z相差很大(),那么核函数值约等于0。由于这个函数类似于高斯分布,因此称为高斯核函数,也叫做径向基函数(Radial
Basis Function 简称RBF)。它能够把原始特征映射到无穷维。

既然高斯核函数能够比较x和z的相似度,并映射到0到1,回想logistic回归,sigmoid函数可以,因此还有sigmoid核函数等等。

注意,使用核函数后,怎么分类新来的样本呢?线性的时候我们使用SVM学习出w和b,新来样本x的话,我们使用来判断,如果值大于等于1,那么是正类,小于等于是负类。在两者之间,认为无法确定。如果使用了核函数后,就变成了,是否先要找到,然后再预测?答案肯定不是了,找很麻烦,回想我们之前说过的

只需将替换成,然后值的判断同上。

总结:对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(*)

,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。由于核函数的优良品质,这样的非线性扩展在计算量上并没有比原来复杂多少,这一点是非常难得的。当然,这要归功于核方法——除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。

参考文档:( 主要的参考文档来自4个地方)

1、支持向量机: Kernel

2、JerryLead关于核函数的讲解

3、支持向量机通俗导论(理解SVM的三层境界

4、斯坦福大学机器学习的公开课。

支持向量机(四)-- 核函数

时间: 2024-11-05 03:26:15

支持向量机(四)-- 核函数的相关文章

支持向量机原理(三)线性不可分支持向量机与核函数

支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理(待填坑) 支持向量机原理(五)线性支持回归(待填坑) 在前面两篇我们讲到了线性可分SVM的硬间隔最大化和软间隔最大化的算法,它们对线性可分的数据有很好的处理,但是对完全线性不可分的数据没有办法.本文我们就来探讨SVM如何处理线性不可分的数据,重点讲述核函数在SVM中处理线性不可分数据的作用. 1. 回顾多项式回归 在线

【机器学习算法-python实现】svm支持向量机(3)—核函数

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景知识 前面我们提到的数据集都是线性可分的,这样我们可以用SMO等方法找到支持向量的集合.然而当我们遇到线性不可分的数据集时候,是不是svm就不起作用了呢?这里用到了一种方法叫做核函数,它将低维度的数据转换成高纬度的从而实现线性可分. 可能有的人不明白为什么低维度的数据集转换成高维度的就可以实现线性可分,下面摘抄一个网上的例子解释一下.看下面这个图,我们设红色的区域是一组数据 ,而直线ab除了红色区域以

支持向量机原理(四)SMO算法原理

支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归(待填坑) 在SVM的前三篇里,我们优化的目标函数最终都是一个关于\alpha向量的函数.而怎么极小化这个函数,求出对应的\alpha向量,进而求出分离超平面我们没有讲.本篇就对优化这个关于\alpha向量的函数的SMO算法做一个总结. 1. 回顾SVM优化目标函数 我们首先回顾下我们的

学习Opencv2.4.9(四)---SVM支持向量机

作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 先来看一下什么是SVM(支持向量机) SVM是一种训练机器学习的算法,可以用于解决分类和回归问题,同时还使用了一种称之为kernel trick(支持向量机的核函数)的技术进行数据的转换,然后再根据这些转换信息,在可能的输出之中找到一个最优的边界(超平面).简单来说,就是做一些非常复杂的数据转换工作,然后根据预定义的标签或者输出进而计算出如何分离用户的数据. 支持向量机方法是建立在统计学习理论的

支持向量机原理(五)线性支持回归

支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 在前四篇里面我们讲到了SVM的线性分类和非线性分类,以及在分类时用到的算法.这些都关注与SVM的分类问题.实际上SVM也可以用于回归模型,本篇就对如何将SVM用于回归模型做一个总结.重点关注SVM分类和SVM回归的相同点与不同点. 1. SVM回归模型的损失函数度量 回顾下我们前面SV

支持向量机原理(二) 线性支持向量机的软间隔最大化模型

? ? ? ? ? ?支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 在支持向量机原理(一) 线性支持向量机中,我们对线性可分SVM的模型和损失函数优化做了总结.最后我们提到了有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分,本篇就对线性支持向量机如何处理这些异常点的原理方法做一个总结

支持向量机原理(一) 线性支持向量机

? ? ? ? ? ?支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五)线性支持回归 支持向量机(Support Vecor Machine,以下简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域,并牢牢压制了神经网络领域好多年.如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是

支持向量机(SVM:support vector machine)

传统机器学习分类任务中,我认为支持向量机是最难.最复杂.最有效的一种模型.可能是由于其是一种特殊的神经网络的缘故吧! 1.支持向量机简介 支持向量机(support vector machines,SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming,不怕,附录有解

支持向量机学习笔记--原理篇(二)

支持向量机学习笔记(二) 前言 在上一篇中,讲述了感知机是什么.接下来将叙述感知机的对偶形式,这在解决支持向量机问题中非常有用,因为直接求解存在困难时,我们往往会把它变换到其等价形式进行求解.这篇将继续上篇内容,把遗留的两个问题解释清楚. 感知机 感知机学习算法的对偶形式 现在考虑感知机学习算法的对偶形式.感知机学习算法的原始形式和对偶形式在支持向量机学习算法的原始形式和对偶形式相对应. 对偶形式的基本想法是,将w和b表示为实例xi和标记yi的线性组合的形式,通过求解其系数而求得w和b,不失一般

统计学习方法 李航---第7章 支持向量机

第7章 支持向量机 支持向量机(support vector machines, SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器:支持向量机还包括核技巧,这使它成为实质上的非线性分类器.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数的最小化问.支持向量机的学习算法是求解凸二次规划的最优化算法. 支持向量机学习模型:线性可分支持向量机(linear s