支持向量机(非线性SVM、软间隔)
非线性SVM
对于输入空间中的非线性分类问题,可以通过非线性变换将非线性问题从原始的特征空间映射至更高维的希尔伯特空间,从而转化为高维度特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。如下图所示,先对二维非线性数据进行升维,这样对于一个三维特征数据就可以用平面超平面(决策边界)进行切分。
对非线性数据升维后进行线性划分,非线性数据的线性决策边界如下所示:
非线性SVM损失函数
为了能够找出非线性数据的线性决策边界,我们需要将数据从原始的空间投射到新空间中。是一个映射函数,它代表了某种非线性的变换,使用这种变换,线性SVM的原理可以被很容易推广到非线性情况下,其推导过程和逻辑都与线性SVM一模一样,只不过在定义决策边界之前,我们必须先对数据进行升维度,即将原来的转换为。
非线性SVM的损失函数初始形态为:
非线性SVM拉格朗日函数为:
当满足KKT条件时,进行对偶函数转换为:
核函数
李航在《统计学习方法》中对核函数的定义为:
设为特征空间(希尔伯特空间),如果存在一个从到的映射
对原始特征维度进行了高维映射
降低了高维度向量点积的计算量
具体实例
SVM常用核函数
核函数在不同数据集上表现对比
上面我们说了常用的四种核函数,下面我们用四种不同核函数在不同数据集上的对比情况来分析四种核函数的优劣情况。
线性可分型
月亮型
环型
杂乱无章型
总结
不难看出线性核函数(linear)和多项式核函数(poly)在线性可分数据集上的表现是不错的,但在环型和月亮型这种非线性数据集上表现不太好,而径向基核函数(rbf)在线性可分数据集和非线性数据集上表现都是最优的,就算在杂乱无章数据集上也有78%的准确率,反观双曲正切核函数(sigmoid)则在这四种数据集上表现都不怎么好。
但径向基核函数计算速度慢,而且容易过拟合。在我们实际业务场景中建议还是对所有核函数都去尝试一遍,说不定会有意外惊喜,并且要对参数进行调参,在不考虑松弛系数的情况下,例如径向基核函数只有一个超参数gamma,可利用学习曲线方式调参,而多项式核函数有三个超参数,则可利用网格搜索方式进行调参。而且在实际业务中数据预处理和特征工程显得尤为重要。对于SVM需要求距离而且需要升维的算法,数据的无量纲化是非常重要的,一方面可以增加模型的泛化能力,另一方面又可以加快模型的收敛速度,在咱们的数据预处理篇对数据预处理有详细讲述。
软间隔与松弛系数
如上图所示,如若把数据集全部分类正确,会选择这条决策边界,这条决策边界虽有三个样本点分类错误,但其拥有更大的边际距离,对于在测试集上新样本而言拥有更好的泛化能力,也就是说不容易过拟合,但的误差并不是0,这就要引入软间隔的概念。
当两组数据是完全线性可分,我们可以找出一个决策边界使得训练集上的分类误差为0,这两种数据就被称为是存在”硬间隔“的。当两组数据几乎是完全线性可分的,但决策边界在训练集上存在较小的训练误差,这两种数据就被称为是存在”软间隔“。
我们可以通过调整我们对决策边界的定义,将硬间隔时得出的数学结论推广到软间隔的情况上,让决策边界能够忍受一小部分训练误差。这个时候,我们的决策边界就不是单纯地寻求最大边际了,因为对于软间隔数据来说,边际越大被分错的样本也就会越多,因此我们需要找出一个”最大边际“与”被分错的样本数量“之间的平衡。
如上图所示,原始的虚线超平面和决策边界一样有效,原始判别函数为:
由于点使该数据集在原始决策边界上存在误差,则需要变换原始决策边界使分类正确,假如上图中的绿色超平面是通过这条虚线超平面往下平移得到,使用这条新的虚线超平面就可以将绿色点完全分正确,于是引入松弛因子来优化原始判别函数:
绿色虚线超平面是由这条虚线超平面往下平移得到,所以红色直线的长度为,则点到的距离为,具体推导在第一节SVM中讲到过,由于单位向量是固定的,所以可以作为点 在原始的决策边界上的分类错误的程度的表示,隔得越远,分得越错。
让作为新的决策超平面存在一定问题,绿色点全部分类正确,但是红色点分错了很多,所以我们必须在我们求解最大边际的损失函数中加上一个惩罚项,用来惩罚我们具有巨大松弛系数的决策超平面。损失函数为:
其中C是用来控制惩罚项的惩罚力度的系数。
拉格朗日函数为:
满足的KKT条件为:
拉格朗日对偶函数为:
然后再通过SMO进行求解。
重要参数C
参数C作为松弛系数的重要惩罚系数,在SVM算法调参过程中尤为重要,当C的值设置较小时,那SVM会尽量最大化边界,此时容易欠拟合,当C 设置较大时容易过拟合,一般在实际应用中,松弛系数惩罚系数C会和核函数中的参数联合调参,利用网格搜索方式寻找泛化能力最强的一组参数。