感想

今天做了几道SVM的题目,发现自己还做错了,想当年我还是手推过SVM公式的人,看来SVM的理论我还是没有学全,变了样子之后我就不怎么会了,前几个月写过一些简单的关于SVM的最大间隔的博客,这次总结一下SVM的核函数。

problem

下列不是SVM核函数的是:


A 多项式核函数


B logistic核函数


C 径向基核函数


D Sigmoid核函数

正确答案是:B

analysis

支持向量机是建立在统计学习理论基础之上的新一代机器学习算法,支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。


构造出一个具有良好性能的SVM,核函数的选择是关键.核函数的选择包括两部分工作:一是核函数类型的选择,二是确定核函数类型后相关参数的选择.因此如何根据具体的数据选择恰当的核函数是SVM应用领域遇到的一个重大难题,也成为科研工作者所关注的焦点,即便如此,却依然没有得到具体的理论或方法来指导核函数的选取.

经常使用的核函数


核函数的定义并不困难,根据泛函的有关理论,只要一种函数 K ( x i , x j ) 满足Mercer条件,它就对应某一变换空间的内积.对于判断哪些函数是核函数到目前为止也取得了重要的突破,得到Mercer定理和以下常用的核函数类型:

  1. 线性核函数

线性核函数是最简单的核函数,是径向基核函数的一个特例,公式为:

K(x,z)=<x,z>

主要用于线性可分的情形,对应线性可分支持向量机与线性支持向量机。它在原始空间中寻找最优线性分类器,具有参数少速度快的优势。

2.  多项式核函数

多项式核适合于正交归一化(向量正交且模为1)数据,公式为:

SVM核函数_数据

多项式核函数属于全局核函数,允许相距很远的数据点对核函数的值有影响。参数d越大,映射的维度越高,计算量就会越大。当d过大时,由于学习复杂性也会过高,易出现“过拟合现象。

3.  径向基核函数( Radial basis function)&高斯核函数

径向基核函数属于局部核函数,当数据点距离中心点变远时,取值会变小。公式为:

SVM核函数_核函数_02

高斯核函数可以看作是径向基核函数的另一种形式:

SVM核函数_数据_03

高斯径向基核对数据中存在的噪声有着较好的抗干扰能力,由于其很强的局部性,其参数决定了函数作用范围,随着参数σ的增大而减弱。

4.  Sigmoid核函数 

Sigmoid核函数来源于神经网络,被广泛用于深度学习和机器学习中。公式为:

SVM核函数_数据_04

采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络。支持向量机的理论基础(凸二次规划)决定了它最终求得的为全局最优值而不是局部最优值,也保证了它对未知样本的良好泛化能力。

5  字符串核函数

核函数不仅可以定义在欧氏空间上,还可以定义在离散数据的集合上。字符串核函数是定义在字符串集合上的核函数,可以直观地理解为度量一对字符串的相似度,在文本分类、信息检索等方面都有应用。

参考答案里面还给出了傅立叶核和样条核,我查了一下,这两个核函数好像很少见,资料很少,我这里只列出其公式,

6  傅立叶核:

K ( x , x i ) = 1 − q 2 2 ( 1 − 2 q cos ( x − x i ) + q 2 )

7 样条核

K ( x , x i ) = B 2 n + 1 ( x − x i )


核函数的选择


在选取核函数解决实际问题时,通常采用的方法有:

一是利用专家的先验知识预先选定核函数;

二是采用Cross-Validation方法,即在进行核函数选取时,分别试用不同的核函数,归纳误差最小的核函数就是最好的核函数.如针对傅立叶核、RBF核,结合信号处理问题中的函数回归问题,通过仿真实验,对比分析了在相同数据条件下,采用傅立叶核的SVM要比采用RBF核的SVM误差小很多.

三是采用由Smits等人提出的混合核函数方法,该方法较之前两者是目前选取核函数的主流方法,也是关于如何构造核函数的又一开创性的工作.将不同的核函数结合起来后会有更好的特性,这是混合核函数方法的基本思想

在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:    


    如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;


    如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;


    如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。

参考文献

[2].牛客网. https://www.nowcoder.com/questionTerminal/732300dcca8d49bca7183c5dc28d3236