关于支持向量机(SVM)的高斯核和惩罚因子C的理解(简单易懂)

时间:2024-03-23 22:46:09

  跟小伙伴探讨了支持向量机(Support Vector Machine, SVM),不自觉地就将话题拉向了高斯核函数和惩罚因子C。本文用简单易懂的形式呈现了自己对于高斯核函数和惩罚因子C的理解。
  为什么说高斯核对应的映射函数将原始特征空间映射成了无限维空间?高斯核函数的参数σ如何选择?惩罚因子C的加入有何意义?C的取值大小对于SVM的模型有何影响?后文将围绕这几个问题进行探讨。

1 理解高斯核函数

1.1 为什么要有核函数

  当数据集在原始特征中不是线性可分的时候,支持向量机采用了引入映射函数Φ()的策略:通过映射函数将原始特征空间映射为更高维的空间,在原始空间中不可分的数据在高维空间中可能变成线性可分,此时再在高维空间中运用SVM。
  用一张图片直观地解释这一思想。

关于支持向量机(SVM)的高斯核和惩罚因子C的理解(简单易懂)
图1 映射函数示意

  那么要实现非线性SVM模型,我们就找出一个合适的映射函数Φ(),把特征空间映射到高维空间,在高维空间对样本分类!!So easy!!
  可是仔细想想,每次都要显式地找到一个映射函数有没有必要?我们不是要在高维空间中对样本分类嘛?如果样本Φ(xi)与样本Φ(xj)的距离Φ(xi)Φ(xj)很近,我们就把样本xixj分为同一类不就好了吗?那我们不知道映射函数Φ()的基础上能不能计算Φ(xi)Φ(xj)呢?核函数说:我来。
  核函数的诀窍在于解决了映射后高维空间中样本距离Φ(xi)Φ(xj)的计算,但又不显式地展示出映射函数Φ()
  通常表示为:
(1)κ(x1,x2)=<Φ(x1),Φ(x2)>
  从而有:

(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>2,这里x=(x1 x2),z=(z1z2)R2,故有:

(3)κ(x,z)=<x,z>2=(x1z1+x2z2)2=(x1z1)2+2x1x2z1z2+(x2z2)2

  取Φ(x)=(x12, x1x2, x22),则有κ(x,z)=<Φ(x),Φ(z)>成立。也就是说此时映射函数将二维特征空间(x1x2)映射成了三维空间(x12x1x2x22),即Φ:R2R3
  然后再回过头来看高斯核函数:
(4)κ(x,z)=exp(xz22σ2)
  高等数学中,我们学过,应用泰勒展开,有:
(5)ex=1+x1!+x22!+x33!+ =n=0xnn!
  所以我们有:
(6)κ(x,z)=exp(xz22σ2)=exp[12σ2<xz,xz>]=exp[12σ2(x2+z22xTz)]=exp(γx2)exp(γz2)exp(2γxTz),γ=12σ2

  其中:
(7)exp(γx2)=n=0(γx2)nn!=n=0γn(x12+x22+...xk2)nn!,x=(x1,x2...xk)T

  也就是说,exp(γx2)含有了无穷多项的多项式,对应的映射函数Φ()将k维空间映射成了无限维空间,即: Φ:RkR

1.3 高斯核中的参数σ的理解

  由式子(2)和式子(4)我们可知:
  情况①:

(8)σ0,xz22σ2,κ(x,z)0

(9)|Φ(x)Φ(z)|2=κ(x,x)2κ(x,z)+κ(z,z) =22κ(x,z) =2
  情况②:
(10)σ,xz22σ20,κ(x,z)1

(11)|Φ(x)Φ(z)|2=κ(x,x)2κ(x,z)+κ(z,z) =22κ(x,z) =0

  式子(9)表明:σ很小的情况下,所有映射后的点彼此之间的距离均相等(为2),即不存在聚类现象(聚类直观上理解就是各个点聚在一起,之间的距离较小)。这样一来每个样本点将被单独形成一个分类。
  式子(11)表明:σ很大的情况下,两个不同的点经过映射后,成为高维空间上的同一个点(相互之间距离为0)。这样一来,所有的样本点将被划分成同一个类,无法区分开来。
  总结:参数σ越小,分的类别会越细,也就是说越容易导致过拟合;参数σ越大,分的类别会越粗,导致无法将数据区分开来。

2 对于惩罚因子C的理解

  加入松弛因子ξ(i)后,支持向量机优化的目标函数和约束条件为;

(12)min12w2+Ci=1nξ(i)s.t.y(i)(wTΦ(x(i))+b)1ξ(i),i=1,2...n

  为了最小化目标函数:①当C很大时,ξ(i)只能趋近于0,也就是说对处于边界之间的样本(只有处于两条边界之间的样本对应的松弛因子ξ(i)不为0,边界上(支持向量)和边界内(正确划分的样本)的样本对应的松弛因子ξ(i)均为0)的容忍度很低,错分较少,对样本的拟合性较好,但不一定预测效果好;②C的取值小的时候,处于两条边界之间的样本变多,错分的可能性变大,对样本的拟合性下降,但却可能更合理,因为样本之间往往可能带有噪声。
  从风险的角度来看,C权衡了经验风险(对样本的拟合能力)和结构风险(对测试样本的预测能力):为使目标函数越小,C越大时,正则化项(ξ(i) )越小,说明结构风险越大,经验风险越小,容易出现过拟合;反之,C越小,模型的复杂度越低,结构风险越小。

3 总结

  ① 高斯核的参数σ取值与样本的划分精细程度有关:σ越小,低维空间中选择的曲线越复杂,试图将每个样本与其他样本都区分开来;分的类别越细,容易出现过拟合;σ越大,分的类别越粗,可能导致无法将数据区分开来,容易出现欠拟合。
  ② 惩罚因子C的取值权衡了经验风险和结构风险:C越大,经验风险越小,结构风险越大,容易出现过拟合;C越小,模型复杂度越低,容易出现欠拟合。