支持向量机

//个人学习记录,如有错误请指正

//大部分图片公式来源于《hand on machine learning with scikit-learn and tensorflow》

//部分公式来源于互联网

支持向量机主要用于分类任务,从预测函数我们就能看出来:

预测函数

支持向量机

这里我们以二分类为例,可以看出,支持向量机的参数同样包括特征的权重和偏移量,这两个参数实际上在特征形成的空间中,形成了一个面,这个面将特征空间分为两半,也就是两个分类。而我们训练的目标就是让两个分类的数据离这两个面越远越好。因此支持向量机是一种最大间隔分类。同时,我们通常将分界面的两端的一定距离,视为一个没有实例的间隔,而刚好落在这个特定距离上的实例,我们称为支持向量。这是因为,这些向量以外的向量,无论他们是否靠近或者远离,其实都不影响分界面的位置。

训练函数

为了得到我们用以训练的函数,我们首秀按需要定义两个距离,第一个是函数距离:

支持向量机

可见,这是实例到分离平面的距离,但是我们也可以看见这个距离会随着参数的缩放而缩放,因此为了屏蔽参数缩放对距离的变化,我们引入了几何矩离,

支持向量机

可见此时,参数w,b缩放时,几何距离并不变化。我们更进一步,当我们固定函数距离为1时(固定函数距离,参数w、b任然可以构成任意超平面),几何距离就只与||w||有关,最大化几何距离,等价于最小化||w||。

同时为了求导的方便,我们采用 1/2 二阶范数代替一阶范数,得到我们需要优化的目标:

支持向量机

 

训练方法

这个优化目标实际上是一个凸二次约束规划问题,可以通过一下方式进行求解。

支持向量机

软间隔分类

从上面式子可知,它要求所有实例到分界面的距离均大于等于1,但是很多数据集可能并不是线性可分的,我们很难找到这样一条直线允许我们将两个分类完全切割开,因此我们引入软间隔分类(上述被称为硬间隔分类)。在硬间隔分类的训练目标上增加一个参数即可达到目的。如下:

支持向量机

 

对偶问题

对偶问题的优势在于,它可以将原问题转化为另一个等效的问题,这为我们的计算提供了新的选择。在支持向量机的应用中,我们可以看出,其对偶形式不再带有约束项,同时,还为使用核技巧提供了可能。

以下是将原式转换为对偶形式的过程

支持向量机

所以在支持向量机中我们首先写出原问题形式

支持向量机

接下来计算取驻点时,w的值

支持向量机

支持向量机

再将此关系带入原问题,此时我们得到的式子需要求关于α的最大值,因此我们将其反号,这样便是求最小值,便得到原问题的对偶形式。

支持向量机

在解的对偶性的a以后,我们可以计算得到w,b。

支持向量机

核技巧

因为我们的数据不一定是线性可分的,我们还需要多项式特征,如线性模型所做的一样,我们可以将多项式特征作为新特征插入到特征集中,但是这样会消耗很多资源。这里我们可以采用核技巧,在不需要真正插入新特征的前提下,达到具有多项式特征的效果。

核技巧需要对偶形式的支持,我们可以看见核技巧中关于实例的计算只有XTiXj,同时,计算发现

支持向量机

因此我们可以用(aTb)2代替Ф(a)Ф(b),达到包含多项式特征的数据集的效果。

因此(aTb)2称为二次多项式核,此外还有其他的核可以使用,他们分别能将数据映射到不同的维度的空间中。

支持向量机

因为维度过高,直接计算参数w,b比较困难,可以直接采用如下方法进行预测

支持向量机

支持向量机