支持向量机

支持向量机(SVM)算法在分类问题中有着很重要的地位,其主要思想是最大化两类之间的间隔。按照数据集的特点:
1:线性可分问题,如之前的感知机算法处理的问题
2:线性可分,只有一点点错误点,如感知机算法发展出来的pocket算法处理的问题
3:非线性问题,完全不可分,如在感知机问题发展出来的多层感知机和深度学习
针对以上三种情况SVM有以下三种处理方式:
1:hard-margin SVM
2:soft-margin SVM
3:kernel Method

Hard-margin SVM

支持向量机也是一种硬分类模型,在之前的感知机模型中,我们在线性模型的基础上叠加了符号函数,在几个直观上,可以看到,如果两类分的很开的话,那么其实会存在无穷多条线可以将两类分隔开。在SVM中,我们引入最大化间隔这个概念,间隔指的是数据和之间的距离的最小值,因此最大化这个值反映了我们模型倾向。

分割的超平面可以写为:

支持向量机的五折_算法


那么最大化间隔(约束为分类任务的要求):

支持向量机的五折_算法_02


对于这个约束

支持向量机的五折_机器学习_03


不妨固定

支持向量机的五折_人工智能_04


这是由于分开两类的超平面的系数经过比例缩放不会改变这个平面,这个相当于给超平面的系数作出了约束。化简之后的式子可以表示为:

支持向量机的五折_机器学习_05


这就是一个包含N个约束的凸优化问题,有很多求解这种问题的软件。

但是,如果样本数量或者维度非常高,直接求解困难甚至不可解,于是需要对这个问题进一步处理。引入Lagrange函数:

支持向量机的五折_机器学习_06


原有问题就等价于:

支持向量机的五折_机器学习_07


我们交换最小和最大值的符号得到对偶问题:

支持向量机的五折_算法_08


由于不等式约束是仿射函数,对偶问题和原问题等价:

支持向量机的五折_支持向量机的五折_09


将上面两个参数带入:

支持向量机的五折_人工智能_10


因此,对偶问题就是:

支持向量机的五折_机器学习_11


从KKT条件得到超平面的参数:

原问题和对偶问题满足强对偶关系的充要条件为其满足KKT条件:

支持向量机的五折_人工智能_12


根据这个条件就得到了对应的最佳参数:

支持向量机的五折_支持向量机_13


于是这个超平面的参数w就是数据点的线性组合,最终的参数值就是部分满足

支持向量机的五折_算法_14


向量的线性组合(互补松弛条件给出),这些向量也称为支持向量。

Soft-margin SVM

Hard-margin的SVM只对可分数据分解,如果在不可分的情况,基本的思想是在损失函数中加入错误分类的可能性。错误分类的个数可以写成:

支持向量机的五折_机器学习_15


这个函数不连续,可以将其改写为:

支持向量机的五折_机器学习_16


求和符号中的式子又叫做Hinge Function。

将这个错误加入Hard-margin SVM中,于是:

支持向量机的五折_人工智能_17


这个式子中,常数C可以看做允许的错误水平,同时上式为了进一步消除max符号,对数据集中的每一个观测,我们可以认为其中大部分满足约束,但是其中部分约束变成:

支持向量机的五折_机器学习_18


其中:

支持向量机的五折_人工智能_19


化简为:

支持向量机的五折_支持向量机的五折_20