机器学习 03:线性可分支持向量机
主要思想
支持向量机(SVM)的基本模型线性支持支持向量机是定义在特征空间上的间隔最大的线性分类器,这使它有别于感知机。适用于高维小样本,且线性可分的数据。
寻找最大间隔
距离
距离是一种映射关系,满足:
这里我们使用 2 范数来计算距离
间隔
距超平面最近的点到平面的距离的两倍。由此我们可以推出间隔的计算公式:
而其中距超平面最近的点的间隔是 $\gamma = \min\limits_{i=1,2,3\cdots}\gamma_i$
我们要寻找合适的 $(\vec w,b)$,使得间隔最大,也就是
但是寻找的过程非常的麻烦,所以我们要对此进行优化。
优化目标函数
支持向量机的缩放引理:假设找到一组 $(\vec w,b)$,对于$\forall r>0$,$(r\vec {w},rb)$ 仍是解
令引理中的 $r=\gamma$:
其中 $\parallel\vec w\parallel$ 和 $\gamma$ 都是标量,所以令:
于是有:
也就是说,我们总能通过放缩使得间隔为 1 并且解为 $(\vec w^*,b^*)$
由于 $(\vec w^*,b^*)$ 和 $(\vec w,b)$ 是倍数关系,于是我们的目标就变成了:
取倒数使得求最大值变成求最小值,方便起见,我们把 $(\vec w^*,b^*)$ 写为 $(\vec w,b)$,此时,目标函数变成了:
带有约束的最值问题,可以想到使用拉格朗日乘子法来求目标函数。
拉格朗日乘子法
令 $\theta(\vec w)=\max\limits_{\alpha_i\ge0}L(\vec w,b,\vec\alpha)$
于是原约束问题就等价于:
这样我们就把一个带有约束的最值问题转化成了无约束最值问题。但是求解这个新的约束问题过程非常复杂,所以我们需要使用拉格朗日函数的对偶性。
拉格朗日函数的对偶性
设:
把 $\min$ 和 $\max$ 互换一下:
通常情况下,$p^*\ge d^*$,要使等号成立,需要满足两个条件:
优化问题是凸优化问题
满足 $KKT$ 条件
凸优化问题
凸优化问题 (Convex optimization problem) 要求目标函数为凸函数,而且定义域为凸集
凸函数:
若 $f^{\prime\prime}(x)\ge0$,则 $f(x)$ 为凸函数。
显然 $\theta(\vec w)$ 是凸函数
凸集:
当集合 $C$ 中任意两点之间的线段上的点也在 $C$ 内,则这个集合是凸集。
所以 $\theta(\vec w)$ 的定义域是一个凸集。
$KKT$ 条件
主问题可行: $y_i(\vec w\cdot\vec x_i+b)-1\ge0$
对偶问题可行: $\alpha_i\ge0$
互补松弛: $\alpha_i(y_i(\vec w\cdot\vec x_i+b)-1)=0$
等号成立,所以可以计算 $d^*$,令 $L(\vec w,b,\vec\alpha)$ 对 $\vec w$ 和 $b$ 的偏导为 0 可得:
代回 $L(\vec w,b,\vec\alpha)$:
对上式求最大值,即:
对于上式,可以使用序列最小最优化算法(SMO)求解 $\vec\alpha^*$,进而求出 $\vec w,b$。
通过以下条件:
由于 $\vec w\ne0$,可以推知至少存在一个 $\alpha_i^*>0$ 且对于此 $i$ 有
也就是说,对于任意训练样本 $(\vec x_i,y_i)$,总有 $\alpha_i=0$ 或者 $y_i(\vec w\cdot\vec x_i+b)=1$ 。而 $y_i(\vec w\cdot\vec x_i+b)=1$ 表示该点位于最大间隔边界上,也就是说它是一个支持向量。
这显示出了支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。