支持向量机
//个人学习记录,如有错误请指正
//大部分图片公式来源于《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比较困难,可以直接采用如下方法进行预测