#前言
本人是一个本科到研究生都坚持本专业的人,但是,本科时间被狗吃了,目前还是小白一只,曾经以为考研之后要继续学习一技之长找个工作养活自己,当然,现在发现这都是自己想太多了,哈哈哈,读研之后才知道基础不好的人学习起来是多么困难,但是,既然选择了,哭着也要拿到毕业证啊。
因为被老师安排讲解SVM算法并且推到公式,于是花了一些时间来研究和推到了SVM算法的公式。可能写的不够全,也可能由一些错的地方,第一次写博客,望多多指教。哈哈哈,说太多没用的,开始来看一下SVM吧!!
今天的内容:
- 间隔与支持向量机
- 对偶问题
- 核函数
- 软间隔
- 支持向量回归
# 间隔与支持向量机
支持向量机(support vector machines,SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。
给定训练数据集D=D=D={ (x1,y1),(x2,y2),...,(xm,ym)(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})(x1,y1),(x2,y2),...,(xm,ym)},yi∈y_{i}∈yi∈{-1,+1},分类学习器最基本的想法就是基于训练集D在空间中找到一个划分平面,能够将不同的样本分开。如下图所示【图片来源网络】,在一个这个样本空间中,我们可以找到很多条划分平面能够将两类样本正确的分开,那么我们应该选择哪一条呢?或许你会说,当然是正中间那一条了,没错,如果你这么想,那么你已经知道SVM是用来干什么的了。

(1)wTx+b=0\bm{w^Tx}+b=0\tag{1}wTx+b=0(1)
其中,w=\bm{w}=w=(w1,w2,...,wd)(w_{1},w_{2},...,w_{d})(w1,w2,...,wd)为法向量,决定超平面的方向,b为偏移项,决定超平面与原点之间的距离。划分超平面可记为(wT,b)(\bm{w^T},b)(wT,b),样本空间中任意一点x到超平面的距离可写为:
(2)r=∣wTx+b∣∣∣w∣∣.r=\frac{|\bm{w^Tx}+b|}{||w||}.\tag{2}r=∣∣w∣∣∣wTx+b∣.(2)
这个距离怎么得到的呢?下面请看我的推导:其中x是样本空间中任意一个样本,x0x_{0}x0是x再超平面上的投影,因此有wTx0+b=0\bm{w^Tx_{0}}+b=0wTx0+b=0,r为x到超平面的距离。

(3){ wTx+b≥+1,yi=+1wTx+b≤−1,yi=−1 \left\{ \begin{aligned} \bm{w^Tx}+b ≥&+1 , y_{i}=+1\\ \bm{w^Tx}+b ≤&-1, y_{i}=-1 \\ \end{aligned} \right.\tag{3} { wTx+b≥wTx+b≤+1,yi=+1−1,yi=−1(3)
为什么可以这样写呢,而不是写成下面这样呢?
(4){
wTx+b≥0,yi=+1wTx+b≤0,yi=−1 \left\{ \begin{aligned} \bm{w^Tx}+b ≥&0 , y_{i}=+1\\ \bm{w^Tx}+b ≤&0, y_{i}=-1 \\ \end{aligned} \right.\tag{4} {
wTx+b≥wTx+b≤0,yi=+10,yi=−1(4)
其实我们也是为了解释SVM的原理,同时也易于后面的计算和理解,下面来看一下下图【图片来源网络】:

我们可以从图中看出,式(3)表示的是,当样本属于正例时,样本就落在直线wTx+b=1\bm{w^Tx}+b=1wTx+b=1上方;当样本属于反列时,样本就落在直线wTx+b=−1\bm{w^Tx}+b=-1wTx+b=−1下方。我们要找的不是中间那条超平面吗,为什么还要这两条直线呢?这里,我先引入两个概念。
在样本空间中,总会有一些正例样本和反例样本距离超平面是最近的,这些样本点我们就称为”支持向量“(support vector),而过这些支持向量且平行于超平面的直线就是我们我们图中的两条直线wTx+b=1\bm{w^Tx}+b=1wTx+b=1和wTx+b=−1\bm{w^Tx}+b=-1wTx+b=−1。两个异类支持向量到超平面的距离之和为
(5)r=2∣∣w∣∣r=\frac{2}{||w||}\tag{5}r=∣∣w∣∣2(5)
它被称为”间隔“(margin)。
你可能还有疑问,为什么支持向量间隔边界为什么就一定是wTx+b=1\bm{w^Tx}+b=1wTx+b=1和wTx+b=−1\bm{w^Tx}+b=-1wTx+b=−1呢?这里原则上说,这两条直线可以是wTx+b=k\bm{w^Tx}+b=kwTx+b=k和wTx+b=−k\bm{w^Tx}+b=-kwTx+b=−k,这里我们的可以两边同时乘以1k\frac{1}{k}k1,然后令wT=1kwT\bm{w^T}=\frac{1}{k}\bm{w^T}wT=k1wT,再令b=1kbb=\frac{1}{k}{b}b=k1b,这时候我们就得到图中的边界直线wTx+b=1\bm{w^Tx}+b=1wTx+b=1和wTx+b=−1\bm{w^Tx}+b=-1wTx+b=−1,而超平面依然是wTx+b=0\bm{w^Tx}+b=0wTx+b=0,因此在这里,我们只是对w和b进行变换了。
公式(5)我们怎么得到的呢?在前面我们就知道,我们需要找一个在两个异类正中间的超平面,这里我们就知道,两个异类的支持向量到超平面的距离是相等的,而对任意支持向量xi,都有x_{i},都有xi,都有∣wTx+b∣=1|\bm{w^Tx}+b|=1∣wTx+b∣=1,将其带入式(2),得到支持向量到超平面的距离都为:r=1∣∣w∣∣r=\frac{1}{||w||}r=∣∣w∣∣1,间隔等于支持向量到超平面的2倍,也就是式(5)。
支持向量机的目标就是找到”最大间隔“(maximum margin)的划分超平面,也就是找到能够找到满足式(3)中约束的参数w\bm{w}w和b,使得rrr最大,即
(6)maxw,b2∣∣w∣∣s.t      yi(wTxi+b)≥1,i=1,2,...,m{\max_{w,b} \frac{2}{||w||}}\\ s.t \,\,\,\,\,\, y_{i}(\bm{w^Tx_{i}}+b)≥1,i=1,2,...,m \tag{6}w,bmax∣∣w∣∣2s.tyi(wTxi+b)≥1,i=1,2,...,m(6)
为了最大化间隔,仅需要最大化∣∣w∣∣−1||\bm{w}||^{-1}∣∣w∣∣−1,这等价于最小化∣∣w∣∣2||\bm{w}||^2∣∣w∣∣2,于是目标方程写成
(7)maxw,b12∣∣w∣∣2s.t      yi(wTxi+b)≥1,i=1,2,...,m{\max_{w,b} \frac{1}{2}||\bm{w}||^2}\\ s.t \,\,\,\,\,\, y_{i}(\bm{w^Tx_{i}}+b)≥1,i=1,2,...,m \tag{7} w,bmax21∣∣w∣∣2s.tyi(wTx