由上篇LR模型已知我们分类的思想就是找到一条直线可以将两个类分隔开来。那进一步想一想,如果想要使两个类不仅是区分开来,而且是要使最难分的点都能以足够大的确信度将它们分开,我们需要不仅仅是一条分解线,还要让这两个类在分界线两边可能的远离开来,就像两个类之间有一条沟一样,这样对未知数据也会有更好的分类预测能力。
支持向量机SVM实际上就在做这样一件事情,它就是一个在特征空间上的使分类间隔最大的线性分类器,他的核技巧使其也能进行非线性分类。按其模型的由简至繁,可分为三种:
- 线性可分支持向量机:适用于训练数据线性可分的情况,通过硬间隔最大化来学习模型。
- 线性支持向量机:适用于训练数据近线性可分的情况,通过软间隔最大化来学习模型。
- 非线性支持向量机:适用于训练数据线性不可分的情况,通过核技巧和软间隔最大化来学习模型。
关于硬间隔和软间隔最大化的概念后文详述。本文不涉及最优化问题如何解,只给出如何得到这三种模型的最优化问题。从最理想的线性可分的情况开始。
线性可分支持向量机
顾名思义,使用本模型的前提是假设训练数据集是线性可分的,而我们的学习目标是在特征空间中(这里也就是输入空间)找到一个分割超平面,能将实例分到到不同的类中。
易知,线性可分支持向量机使用的分割超平面的方程为
使用的分类决策函数为
如下图所示,A、B都是这个训练集的分离超平面,我们训练的目的就是想要确定的就是A和B两条线中,谁能让这两个类别的分类间隔更大。
函数间隔&几何间隔
为了使分类间隔最大化,我们需要定义任意样本点到超平面的距离,同时一个点距离分离超平面的远近也可以用来表示分类预测的确信程度。
在超平面 θx+b=0 确定的情况下, |θx+b| 可以相对的表示点与超平面的带符号距离,点若落在正类一侧,这个距离为正,若落在负类一侧,距离为负,因此可以用距离与类标记y的符号是否一致表示分类是否正确。这个距离被称为函数间隔。
超平面关于样本i的函数间隔表示为
对于给定的训练集和超平面,超平面关于样本点i的几何间隔为
因此定义超平面关于训练集的几何间隔为所有样本点中的几何间隔的最小值
硬间隔最大化
最大化几何(函数)间隔用数学方式可以表示为下述的约束最优化问题:
得到线性可分支持向量机学习的最优化问题:
上述模型只在训练集严格线性可分的情况下适用,实际的训练集若近似可分,会包含很多噪声和异点,上述不等式的约束不能都成立。因此需要将硬间隔最大化扩展到软间隔最大化以适应这种情况。
线性支持向量机&软间隔最大化
为了解决在训练集近似线性可分时,某些样本点不能满足函数间隔大于1的约束条件,可以对每个样本点引入一个松弛变量,使得最优化问题变为:
- C很大时,对误分类惩罚重,因此分类很准,但间隔小,易导致过拟合
- C不太大时,分类准确度下降,但间隔大,易导致欠拟合
考虑软间隔最大化下的支持向量
- 当支持向量在间隔边界上,其 ξ 为0,点距超平面的间隔为1
- 当支持向量在间隔边界与分割超平面之间,如点4点2,分类正确, 0<ξ<1 ,点距超平面的间隔在0-1之间
- 当支持向量在分割超平面误分的一侧,如点1点3,分类错误, ξ>1 ,点距超平面的间隔<0
合页损失函数 – 另一种解释
由上面支持向量的分析,可知目标函数中的
ξ
可以理解为分类的经验损失,用于弥补错分的样本点对模型造成的影响。这个经验损失函数称为合页损失函数,有如下形式:
目标函数中另一项是系数为 λ 的 L2 范式,为正则化项,通过允许一定数据的分错,来避免过拟合情况的发生。
因此软间隔的目标函数也可以像LR那样理解是最小化二阶范数正则化的合页损失函数。
由上图可以看出,相较于LR的误差函数,合页损失函数不仅要求分类正确,而且需要确信度足够高时损失才为0(要求|z|>1),因此分类更加准确。
非线性支持向量机
对于非线性分类问题,可以通过非线性变换将他转为某个高维特征空间的线性分类问题,从而可以在高维特征空间中学习线性支持向量机。
常用的核函数有多项式核函数和高斯径向基核函数。高斯核函数如下: