背景 函数
上一讲从对偶问题的角度描述了SVM问题,可是始终须要计算原始数据feature转换后的数据。这一讲,经过一个kernel(核函数)技巧,能够省去feature转换计算,可是仍然能够利用feature转换的特性。 spa
什么是kernel 调试
Kernel的其实就是将向量feature转换与点积运算合并后的运算,以下, blog
概念上很简单,可是并非全部的feature转换函数都有kernel的特性。 io
Kernel化的SVM 效率
在对偶化的SVM解中,有三个地方会使用到kernel 技巧
使用了kernel,w的具体值都无需计算,由于没有地方会直接使用w。这也是为何上一讲花了那么大的精力描述对偶化的SVM解。 im
常见kernel d3
常见kernel有多项式,高斯和线性,各有利弊。 总结
线性kernel
不作feature转换,直接使用。不须要使用对偶技巧,直接使用linear hard SVM解。
优势:计算效率高;结果解释性好。
缺点:须要数据线性可分
多项kernel
对x进行多项式展开,通常的形式为
其中a,b,Q为常量。
优势:相比线性kernel,对数据要求没有那么严格
缺点:须要选择的系数较多;Q太大会超出一些计算机的精度,通常Q<=3。
高斯Kernel
有些资料也称为RBF(Radial Base Function),通常形式为
其中a(>0)是常量。高斯kernel厉害的地方是能够将原始数据x映射到无线维度空间中,x下面取a=1的例子
上面的变化采用了Taylor展开,接着
其中特征转化为
这样,就完成了向无线维度转换,RBF是否是很厉害!
优势:调试的系数较少;比线性和多项式更强大,几乎能够适应全部数据;不容易出现计算精度问题
缺点:无线维度没法解释;太强大,容易过拟合;计算开销大。
总结
我的感受,核函数是SVM画龙点睛之笔,真的很佩服发现kernel的科学家。在实际使用SVM的过程当中,很大一部分精力可能就是选择kernel和相关系数。Kernel还能够自定义,可是须要知足一些条件,具体能够参考讲义相关部分。