转载自https://blog.csdn.net/sunflower_sara/article/details/81228112
支持向量机的理论基础(凸二次规划)决定了它最终求得的为全局最优值而不是局部最优值,也保证了它对未知样本的良好泛化能力。
支持向量机是建立在统计学习理论基础之上的新一代机器学习算法,支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。
低维映射到高维
对于核技巧我们知道,其目的是希望通过将输入空间内线性不可分的数据映射到一个高纬的特征空间内,使得数据在特征空间内是可分的,我们定义这种映射为ϕ(x),那么我们就可以把求解约束最优化问题变为
但是由于从输入空间到特征空间的这种映射会使得维度发生爆炸式的增长,因此上述约束问题中内积ϕi⋅ϕj的运算会非常的大以至于无法承受,因此通常我们会构造一个核函数
从而避免了在特征空间内的运算,只需要在输入空间内就可以进行特征空间的内积运算。
要想构造核函数κ,我们首先要确定输入空间到特征空间的映射,但是如果想要知道输入空间到映射空间的映射,我们需要明确输入空间内数据的分布情况,但大多数情况下,我们并不知道自己所处理的数据的具体分布,故一般很难构造出完全符合输入空间的核函数,
构造出一个具有良好性能的SVM,核函数的选择是关键.核函数的选择包括两部分工作:一是核函数类型的选择,二是确定核函数类型后相关参数的选择.
线性核,主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,
在原始空间中寻找最优线性分类器,具有参数少速度快的优势。对于线性可分数据,其分类效果很理想,
因此我们通常首先尝试用线性核函数来做分类,看看效果如何,如果不行再换别的
多项式核函数可以实现将低维的输入空间映射到高纬的特征空间
多项式核适合于正交归一化(向量正交且模为1)数据。
属于全局核函数,允许相距很远的数据点对核函数的值有影响。参数d越大,映射的维度越高,计算量就会越大。
但是多项式核函数的参数多,当多项式的阶数d比较高的时候,由于学习复杂性也会过高,易出现“过拟合"现象,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。
也叫高斯核(Gaussian Kernel),因为可以看成如下核函数的领一个种形式:
径向基函数是指取值仅仅依赖于特定点距离的实值函数,也就是。
任意一个满足特性的函数 Φ都叫做径向量函数,标准的一般使用欧氏距离,尽管其他距离函数也是可以的。所以另外两个比较常用的核函数,幂指数核,拉普拉斯核也属于径向基核函数。此外不太常用的径向基核还有ANOVA核,二次有理核,多元二次核,逆多元二次核。
高斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。
径向基核函数属于局部核函数,当数据点距离中心点变远时,取值会变小。高斯径向基核对数据中存在的噪声有着较好的抗干扰能力,由于其很强的局部性,其参数决定了函数作用范围,随着参数σ的增大而减弱。
幂指数核(Exponential Kernel)
拉普拉斯核(Laplacian Kernel)
ANOVA核(ANOVA Kernel)
二次有理核(Rational Quadratic Kernel)
多元二次核(Multiquadric Kernel)
逆多元二次核(Inverse Multiquadric Kernel)
Sigmoid核函数来源于神经网络,被广泛用于深度学习和机器学习中
采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络。
核函数不仅可以定义在欧氏空间上,还可以定义在离散数据的集合上。字符串核函数是定义在字符串集合上的核函数,可以直观地理解为度量一对字符串的相似度,在文本分类、信息检索等方面都有应用。
少见
K ( x , x i ) = 1 − q 2 2 ( 1 − 2 q cos ( x − x i ) + q 2 )
少见
K ( x , x i ) = B 2 n + 1 ( x − x i )
一是利用专家的先验知识预先选定核函数;
二是采用Cross-Validation方法,即在进行核函数选取时,分别试用不同的核函数,归纳误差最小的核函数就是最好的核函数.如针对傅立叶核、RBF核,结合信号处理问题中的函数回归问题,通过仿真实验,对比分析了在相同数据条件下,采用傅立叶核的SVM要比采用RBF核的SVM误差小很多.
三是采用由Smits等人提出的混合核函数方法,该方法较之前两者是目前选取核函数的主流方法,也是关于如何构造核函数的又一开创性的工作.将不同的核函数结合起来后会有更好的特性,这是混合核函数方法的基本思想
关于SVM学到的参数,大家都知道是w和b,但是只有在使用线性核函数的时候才能得到w,使用其他核函数只能得到偏置b
这是因为我们最终只能得到和b,我们还知道设置的核函数k,But因为无法得知的形式故无法得知W。
曾经给出过一系列的选择核函数的方法,Andrew的说法是:
1.当样本的特征很多时,特征的维数很高,这时往往样本线性可分,可考虑用线性核函数的SVM或LR(如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的)。
2.当样本的数量很多,但特征较少时,可以手动添加一些特征,使样本线性可分,再考虑用线性核函数的SVM或LR。
3.当样特征维度不高时,样本数量也不多时,考虑用高斯核函数(RBF核函数的一种,指数核函数和拉普拉斯核函数也属于RBF核函数)。
https://blog.csdn.net/xiaowei_cqu/article/details/35993729
https://blog.csdn.net/weixin_37141955/article/details/78266710
https://blog.csdn.net/w5688414/article/details/79343542
https://blog.csdn.net/lihaitao000/article/details/51173459
https://blog.csdn.net/batuwuhanpei/article/details/52354822
(转载自https://blog.csdn.net/lin_limin/article/details/81135754)
为什么说高斯核对应的映射函数将原始特征空间映射成了无限维空间?高斯核函数的参数σσ如何选择?惩罚因子C的加入有何意义?C的取值大小对于SVM的模型有何影响?后文将围绕这几个问题进行探讨。
1 理解高斯核函数
1.1 为什么要有核函数
当数据集在原始特征中不是线性可分的时候,支持向量机采用了引入映射函数Φ(⋅)Φ(⋅)的策略:通过映射函数将原始特征空间映射为更高维的空间,在原始空间中不可分的数据在高维空间中可能变成线性可分,此时再在高维空间中运用SVM。
用一张图片直观地解释这一思想。
图1 映射函数示意
那么要实现非线性SVM模型,我们就找出一个合适的映射函数Φ(⋅)Φ(⋅),把特征空间映射到高维空间,在高维空间对样本分类!!So easy!!
可是仔细想想,每次都要显式地找到一个映射函数有没有必要?我们不是要在高维空间中对样本分类嘛?如果样本Φ(xi)Φ(xi)与样本Φ(xj)Φ(xj)的距离∥Φ(xi)−Φ(xj)∥‖Φ(xi)−Φ(xj)‖很近,我们就把样本xixi和xjxj分为同一类不就好了吗?那我们不知道映射函数Φ(⋅)Φ(⋅)的基础上能不能计算∥Φ(xi)−Φ(xj)∥‖Φ(xi)−Φ(xj)‖呢?核函数说:我来。
核函数的诀窍在于解决了映射后高维空间中样本距离∥Φ(xi)−Φ(xj)∥‖Φ(xi)−Φ(xj)‖的计算,但又不显式地展示出映射函数Φ(⋅)Φ(⋅)。
通常表示为:
(x1,x2)=<Φ(x1),Φ(x2)>(1)(1) (x1,x2)=<Φ(x1),Φ(x2)>
从而有:
∥Φ(xi)−Φ(xj)∥2=<Φ(x1)−Φ(x2),Φ(x1)−Φ(x2)>=<Φ(x1),Φ(x1)>−2<Φ(x1),Φ(x2)>+<Φ(x2),Φ(x2)>=κ(x1,x1)−2κ(x1,x2)+κ(x2,x2)(2)
(2)‖Φ(xi)−Φ(xj)‖2=<Φ(x1)−Φ(x2),Φ(x1)−Φ(x2)>=<Φ(x1),Φ(x1)>−2<Φ(x1),Φ(x2)>+<Φ(x2),Φ(x2)>=κ(x1,x1)−2κ(x1,x2)+κ(x2,x2)
不得不感叹核函数简直是一个完美的设计!
1.2 为什么说高斯核函数将原始特征空间映射成了无限维空间
先看一个多项式核的例子。
取κ(x,z)=
κ(x,z)=
(3)κ(x,z)=
取Φ(x)=(x21, x1x2, x22)Φ(x)=(x12, x1x2, x22),则有κ(x,z)=<Φ(x),Φ(z)>κ(x,z)=<Φ(x),Φ(z)>成立。也就是说此时映射函数将二维特征空间(x1x2)(x1x2)映射成了三维空间⎛⎝⎜x21x1x2x22⎞⎠⎟(x12x1x2x22),即Φ:R2→R3Φ:R2→R3。
然后再回过头来看高斯核函数:
κ(x,z)=exp(−∥x−z∥22σ2)(4)(4)κ(x,z)=exp(−‖x−z‖22σ2)
高等数学中,我们学过,应用泰勒展开,有:
ex=1+x1!+x22!+x33!+… =∑n=0∞xnn!(5)(5)ex=1+x1!+x22!+x33!+… =∑n=0∞xnn!
所以我们有:
κ(x,z)=exp(−∥x−z∥22σ2)=exp[−12σ2
(6)κ(x,z)=exp(−‖x−z‖22σ2)=exp[−12σ2
其中:
exp(γ∥x∥2)=∑n=0∞(γ∥x∥2)nn!=∑n=0∞γn(x21+x22+...x2k)nn!,x=(x1,x2...xk)T(7)
(7)exp(γ‖x‖2)=∑n=0∞(γ‖x‖2)nn!=∑n=0∞γn(x12+x22+...xk2)nn!,x=(x1,x2...xk)T
也就是说,exp(γ∥x∥2)exp(γ‖x‖2)含有了无穷多项的多项式,对应的映射函数Φ(⋅)Φ(⋅)将k维空间映射成了无限维空间,即: Φ:Rk→R∞Φ:Rk→R∞。
1.3 高斯核中的参数σσ的理解
由式子(2)和式子(4)我们可知:
情况①:
σ→0,−∥x−z∥22σ2→−∞,κ(x,z)→0(8)
(8)σ→0,−‖x−z‖22σ2→−∞,κ(x,z)→0
|Φ(x)−Φ(z)|2=κ(x,x)−2κ(x,z)+κ(z,z) =2−2κ(x,z) =2(9)(9)|Φ(x)−Φ(z)|2=κ(x,x)−2κ(x,z)+κ(z,z) =2−2κ(x,z) =2
情况②:
σ→∞,−∥x−z∥22σ2→0,κ(x,z)→1(10)
(10)σ→∞,−‖x−z‖22σ2→0,κ(x,z)→1
|Φ(x)−Φ(z)|2=κ(x,x)−2κ(x,z)+κ(z,z) =2−2κ(x,z) =0(11)(11)|Φ(x)−Φ(z)|2=κ(x,x)−2κ(x,z)+κ(z,z) =2−2κ(x,z) =0
式子(9)表明:σσ很小的情况下,所有映射后的点彼此之间的距离均相等(为2–√2),即不存在聚类现象(聚类直观上理解就是各个点聚在一起,之间的距离较小)。这样一来每个样本点将被单独形成一个分类。
式子(11)表明:σσ很大的情况下,两个不同的点经过映射后,成为高维空间上的同一个点(相互之间距离为0)。这样一来,所有的样本点将被划分成同一个类,无法区分开来。
总结:参数σσ越小,分的类别会越细,也就是说越容易导致过拟合;参数σσ越大,分的类别会越粗,导致无法将数据区分开来。
2 对于惩罚因子C的理解
加入松弛因子ξ(i)ξ(i)后,支持向量机优化的目标函数和约束条件为;
min12∥w∥2+C∑i=1nξ(i)s.t.y(i)(wTΦ(x(i))+b)≥1−ξ(i),i=1,2...n(12)
(12)min12‖w‖2+C∑i=1nξ(i)s.t.y(i)(wTΦ(x(i))+b)≥1−ξ(i),i=1,2...n
为了最小化目标函数:①当C很大时,ξ(i)ξ(i)只能趋近于0,也就是说对处于边界之间的样本(只有处于两条边界之间的样本对应的松弛因子ξ(i)ξ(i)不为0,边界上(支持向量)和边界内(正确划分的样本)的样本对应的松弛因子ξ(i)ξ(i)均为0)的容忍度很低,错分较少,对样本的拟合性较好,但不一定预测效果好;②C的取值小的时候,处于两条边界之间的样本变多,错分的可能性变大,对样本的拟合性下降,但却可能更合理,因为样本之间往往可能带有噪声。
从风险的角度来看,C权衡了经验风险(对样本的拟合能力)和结构风险(对测试样本的预测能力):为使目标函数越小,C越大时,正则化项(ξ(i)ξ(i) )越小,说明结构风险越大,经验风险越小,容易出现过拟合;反之,C越小,模型的复杂度越低,结构风险越小。
3 总结
① 高斯核的参数σσ取值与样本的划分精细程度有关:σσ越小,低维空间中选择的曲线越复杂,试图将每个样本与其他样本都区分开来;分的类别越细,容易出现过拟合;σσ越大,分的类别越粗,可能导致无法将数据区分开来,容易出现欠拟合。
② 惩罚因子C的取值权衡了经验风险和结构风险:C越大,经验风险越小,结构风险越大,容易出现过拟合;C越小,模型复杂度越低,容易出现欠拟合。