跟小伙伴探讨了支持向量机(Support Vector Machine, SVM),不自觉地就将话题拉向了高斯核函数和惩罚因子C。本文用简单易懂的形式呈现了自己对于高斯核函数和惩罚因子C的理解。
为什么说高斯核对应的映射函数将原始特征空间映射成了无限维空间?高斯核函数的参数 σ σ 如何选择?惩罚因子C的加入有何意义?C的取值大小对于SVM的模型有何影响?后文将围绕这几个问题进行探讨。
1 理解高斯核函数
1.1 为什么要有核函数
当数据集在原始特征中不是线性可分的时候,支持向量机采用了引入映射函数 Φ(⋅) Φ ( ⋅ ) 的策略:通过映射函数将原始特征空间映射为更高维的空间,在原始空间中不可分的数据在高维空间中可能变成线性可分,此时再在高维空间中运用SVM。
用一张图片直观地解释这一思想。
图1 映射函数示意
那么要实现非线性SVM模型,我们就找出一个合适的映射函数 Φ(⋅) Φ ( ⋅ ) ,把特征空间映射到高维空间,在高维空间对样本分类!!So easy!!
可是仔细想想,每次都要显式地找到一个映射函数有没有必要?我们不是要在高维空间中对样本分类嘛?如果样本 Φ(xi) Φ ( x i ) 与样本 Φ(xj) Φ ( x j ) 的距离 ∥Φ(xi)−Φ(xj)∥ ‖ Φ ( x i ) − Φ ( x j ) ‖ 很近,我们就把样本 xi x i 和 xj x j 分为同一类不就好了吗?那我们不知道映射函数 Φ(⋅) Φ ( ⋅ ) 的基础上能不能计算 ∥Φ(xi)−Φ(xj)∥ ‖ Φ ( x i ) − Φ ( x j ) ‖ 呢?核函数说:我来。
核函数的诀窍在于解决了映射后高维空间中样本距离 ∥Φ(xi)−Φ(xj)∥ ‖ Φ ( x i ) − Φ ( x j ) ‖ 的计算,但又不显式地展示出映射函数 Φ(⋅) Φ ( ⋅ ) 。
通常表示为:
κ(x1,x2)=<Φ(x1),Φ(x2)>(1) (1) κ ( x 1 , x 2 ) =< Φ ( x 1 ) , Φ ( x 2 ) >
从而有: