SVM可以用于解决二分类或者多分类问题,此处以二分类为例。SVM的目标是寻找一个最优化超平面在空间中分割两类数据,这个最优化超平面需要满足的条件是:离其最近的点到其的距离最大化,这些点被称为支持向量
SVM只和分类界限上的支持向量点有关,换而言之只和局部数据有关
推导过程:
核函数:
对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个维特征空间中的线性分类问题,在高维特征空间中学习线性支持向量机。由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例和实例之间的内积,所以不需要显式地指定非线性变换,而是用核函数替换当中的内积。
SVM中用到的核函数有线性核'linear'、多项式核函数pkf以及高斯核函数rbf。
当训练数据线性可分时,一般用线性核函数,直接实现可分;
当训练数据不可分时,需要使用核技巧,将训练数据映射到另一个高维空间,使再高维空间中,数据可线性划分
但需要注意的是,
- 若样本n和特征m很大时,且特征m>>n时,需要用线性核函数,因为此时考虑高斯核函数的映射后空间维数更高,更复杂,也容易过拟合,此时使用高斯核函数的弊大于利,选择使用线性核会更好;
- 若样本n一般大小,特征m较小,此时进行高斯核函数映射后,不仅能够实现将原训练数据再高维空间中实现线性划分,而且计算方面不会有很大的消耗,因此利大于弊,适合用高斯核函数;
- 若样本n很大,但特征m较小,同样难以避免计算复杂的问题,因此会更多考虑线性核。
软间隔和硬间隔:
硬间隔
软间隔,引入松弛变量
C是调节间隔与准确率的因子,C值越大,越不愿放弃那些离群点;c值越小,越不重视那些离群点。
- 当C趋于无穷大时,这个问题也就是不允许出现分类误差的样本存在,那这就是一个hard-margin SVM问题(过拟合)
- 当C趋于0时,我们不再关注分类是否正确,只要求间隔越大越好,那么我们将无法得到有意义的解且算法不会收敛。(欠拟合)