机器学习算法之SVM(3)核函数
1、映射
想象一下,一个三维空间的立方体,一个顶点与x、y平面接触,其余点z都大于0。现在,想要把立方体的上下各四个点分开,只需要沿着从边的中间画一个超平面即可。
但是如果,将这些点直接投影到x、y平面上,那么刚刚还可以分开的两组各四个点就有可能犬牙交错,完全非线性不可分了。
把刚刚的过程逆过来,就是非线性不可分情况下的分类方法了:
支持向量机首先在低维空间中完成计算,然后通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身不好分的非线性数据分开。
2、核函数
由SVM(1):
那么:
将x替换为H(x),那么:
此时,一旦维数过高,那么就会产生维数灾难,对于计算而已实在是难以想象。
于是,核函数应运而生:
它可以让x 不用通过H()映射到高维空间再计算内积,而是直接在低维空间里计算。
三、几个核函数
1、线性核:
已知问题是线性可分的,就可以直接使用线性核。
2、多项式核:
3、高斯核:
指数函数的泰勒展开式本身就是可以扩展到n维,高斯核只是参数换成了
如果
4、sigmod核
与权重点积后再经过一个**函数,与神经网络有点相似吧?
其实这两者都基于感知机理论,
但是神经网络是个“黑匣子”,优化目标是基于经验风险最小化,易陷入局部最优;
支持向量机有严格的理论和数学基础,基于结构风险最小化原则,结果具有全局最优性。