支持向量机(SVM)(三)----核函数及正则化
2017-03-07 01:06
225 查看
上一节最后我们说到我们根据求得的
,可求得
,
,然后求出决策函数
,但是我们知道:
是
的函数,我们也许不必把
带入上式来求解
,我们直接把上式带入决策函数可有:
假如我们已经求得最优的
,在作出预测的时候,我们可以只进行输入数据x与训练样本的内积即可。在转化为对偶条件的时候,我们知道要满足KKT条件,KKT条件中有一个是:
其中:
由此可以知道,若
,则有函数间隔必然等于1,也就是说,只有支持向量满足
,而不是支持向量的样本点,必然有
。故而在计算下式的时候,我们只需考虑支持向量,而是支持向量的样本点有很少,所以这样会降低计算复杂度。这种形式也为引入核函数做出铺垫。
Kernels
我们上次最后说明了,如果遇到线性不可分的情况,根据现有的分类函数,可能解决不了,比如,下图(来源:知乎)
上图中的红点服从
,蓝点服从
,很明显红蓝点是不可分的,但是通过映射
,将其映射到三维空间后,便有:
映射到三维空间之后,红蓝点变得线性可分了。核函数作用其实就是通过一个映射,把低维线性不可分的样本点,映射到高维中,使之变得线性可分。
吴恩达老师说,“原始”的输入我们称之为问题的属性,当“原始”输入经过映射得到一个新的集合,而这个集合传递给学习算法,这样的一个新的集合称之为特征。SVM的输入就是特征而不是原始的输入属性。当低维线性不可分 的时候,我们把输入属性,映射到一个高维特征空间,并把映射后的特征作为新的输入,而新的决策函数,只是把原来的内积运算<x,z>简单替换为
即可。而接下我们探讨这个核函数。
核函数定义为:
其中的
为映射函数。
凭直觉来看,要求出
,我们需要求出
,然而要求
代价是很大的,因为
很难求得,另外当高维的维数很大的时候(这是很有可能的),我们的计算量也是很大的,这让我们很难承受,那么我们可不可以把
的值在低维求出呢?
我们先看一个例子:
我们可以把上式写成如下的形式:
假如当N=3时,那么
就是如下形式:
对于这个例子,我们在高维中计算
的时间复杂度为
,而在输入属性中计算
,只需
的时间,这样给了我们启发,对于高维中的内积,我们在低维中就可以解决。
对于kernel,我们有多项式kernel,Gaussian kernel等等,那么给定一个函数K,我们怎么知道他是不是有效的呢?也就是说对于所有的x,z是否存在一个映射
,使得
成立?
假如K是有效的,那么有
,因此K一定是对称的。另外我们令
表示向量
的第k个坐标,对于任意向量z有:
这就说明了如果K是有效的,那么其对应的核矩阵就是半正定的。这是一个充分必要条件,也是Mercer定理。好了到此我们也说明了什么是核函数。下一节我们将继续上一节的话题,怎么样求解对偶问题的解。请看:
支持向量机(SVM)(四)----SMO
,可求得
,
,然后求出决策函数
,但是我们知道:
是
的函数,我们也许不必把
带入上式来求解
,我们直接把上式带入决策函数可有:
假如我们已经求得最优的
,在作出预测的时候,我们可以只进行输入数据x与训练样本的内积即可。在转化为对偶条件的时候,我们知道要满足KKT条件,KKT条件中有一个是:
其中:
由此可以知道,若
,则有函数间隔必然等于1,也就是说,只有支持向量满足
,而不是支持向量的样本点,必然有
。故而在计算下式的时候,我们只需考虑支持向量,而是支持向量的样本点有很少,所以这样会降低计算复杂度。这种形式也为引入核函数做出铺垫。
Kernels
我们上次最后说明了,如果遇到线性不可分的情况,根据现有的分类函数,可能解决不了,比如,下图(来源:知乎)
上图中的红点服从
,蓝点服从
,很明显红蓝点是不可分的,但是通过映射
,将其映射到三维空间后,便有:
映射到三维空间之后,红蓝点变得线性可分了。核函数作用其实就是通过一个映射,把低维线性不可分的样本点,映射到高维中,使之变得线性可分。
吴恩达老师说,“原始”的输入我们称之为问题的属性,当“原始”输入经过映射得到一个新的集合,而这个集合传递给学习算法,这样的一个新的集合称之为特征。SVM的输入就是特征而不是原始的输入属性。当低维线性不可分 的时候,我们把输入属性,映射到一个高维特征空间,并把映射后的特征作为新的输入,而新的决策函数,只是把原来的内积运算<x,z>简单替换为
即可。而接下我们探讨这个核函数。
核函数定义为:
其中的
为映射函数。
凭直觉来看,要求出
,我们需要求出
,然而要求
代价是很大的,因为
很难求得,另外当高维的维数很大的时候(这是很有可能的),我们的计算量也是很大的,这让我们很难承受,那么我们可不可以把
的值在低维求出呢?
我们先看一个例子:
我们可以把上式写成如下的形式:
假如当N=3时,那么
就是如下形式:
对于这个例子,我们在高维中计算
的时间复杂度为
,而在输入属性中计算
,只需
的时间,这样给了我们启发,对于高维中的内积,我们在低维中就可以解决。
对于kernel,我们有多项式kernel,Gaussian kernel等等,那么给定一个函数K,我们怎么知道他是不是有效的呢?也就是说对于所有的x,z是否存在一个映射
,使得
成立?
假如K是有效的,那么有
,因此K一定是对称的。另外我们令
表示向量
的第k个坐标,对于任意向量z有:
这就说明了如果K是有效的,那么其对应的核矩阵就是半正定的。这是一个充分必要条件,也是Mercer定理。好了到此我们也说明了什么是核函数。下一节我们将继续上一节的话题,怎么样求解对偶问题的解。请看:
支持向量机(SVM)(四)----SMO
相关文章推荐
- Kernel SVM (核函数支持向量机)
- 支持向量机SVM(三)核函数
- SVM支持向量机原理(三)线性不可分支持向量机与核函数
- 机器学习之支持向量机SVM Support Vector Machine (二) 非线性SVM模型与核函数
- SVM(三)支持向量机,线性不可分和核函数
- 【机器学习】支持向量机SVM - 对SVM与核函数的理解及sklearn参数详解
- SVM支持向量机总结(不包括高维核函数等)
- 支持向量机SVM核函数的选择(七)
- SVM(三),支持向量机,线性不可分和核函数
- 学习笔记——支持向量机svm(3)kernel trick(核函数)
- SVM(三),支持向量机,线性不可分和核函数
- SVM(三),支持向量机,线性不可分和核函数
- 简单介绍支持向量机(SVM)与核函数
- SVM(三),支持向量机,线性不可分和核函数
- SVM(三),支持向量机,线性不可分和核函数
- 机器学习——支持向量机SVM之软间隔与正则化
- python机器学习案例系列教程——支持向量机SVM、核函数
- SVM(三)支持向量机,线性不可分和核函数
- 【机器学习算法-python实现】svm支持向量机(3)—核函数
- 支持向量机通俗导论(理解SVM的三层境界)