支持向量机SVM
定义7.2中,对于整个训练集\(T\)来说,函数间隔为所有样本中函数间隔最小的那个函数间隔(判断性能当然是以最小的那个来确定)
如果函数间隔 \(y (w \cdot x + b) > 0\)则分类正确,否则分类错误,且 \(y (w \cdot x + b)\) 的值越大,其分类结果的确信程度越大
函数间隔是定性的判断分类的确信程度。对于\(w\cdot x +b=0\),当 \(w\) 和 \(b\) 成比例改变时得到 \(kw \cdot x+kb=0\) 经过约分后仍为\(w\cdot x +b=0\)
函数间隔与几何间隔的互换
对于样本点 \(x_i\) 有:\(\gamma_i=\frac{\widehat{\gamma_i}}{\left \| w \right \|}\)
对于数据集 \(T\) 有:\(\gamma=\frac{\widehat{\gamma}}{\left \| w \right \|}\)
当 \(\left \| w \right \|=1\) 时,几何间隔 = 函数间隔
\(w\) 和 \(b\) 成比例改变时,分离超平面是不变的,函数间隔改变,而几何间隔不变(分子分母会约掉)
间隔最大化:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信读对训练数据集进行分类
最大间隔分离超平面可以表示为约束最优化问题:
考虑几何间隔和函数间隔的关系式,可将这个问题改写为
函数间隔 $ \widehat{\gamma} $ 的取值并不影响最优化问题的解
又我们习惯把 \(max\) 问题转化为 \(min\) 的问题,最大化 \(\frac{1}{\left \| w \right \|}\) 等价于最小化 \(\frac{1}{2}\left \| w \right \|^2\),故问题转化为:
若训练数据集 \(T\) 线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一
存在性:由于训练数据集线性可分,所以最优化问题\((7.13)~(7.14)\)一定存在可行解。又由于目标函数有下界,所以最优化问题\((7.13)~(7.14)\)必有解,记作\((w^*,b^*)\)。由于训练数据集中既有正类点又有负类点,所以 \((w,b)=(0,b)\) 不是最优化的可行解,因而最优解 \((w^*,b^*)\) 必满足 \(w^* \neq 0\)。由此得知分离超平面的存在性
唯一性
将有约束的原始目标函数\((7.13~7.14)\)转换为无约束的新构造的拉格朗日目标函数:
\(L(w,b,\alpha)=\frac{1}{2}\left \| w \right \|^2-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i+b)-1) \qquad (7.15)\)
令 \(\theta (w) = \max_{ \alpha_i \geq 0}^{}{L(w,b,\alpha)} = \max_{\alpha_i \geq 0}^{}{[\frac{1}{2}\left \| w \right \|^2-\sum_{i=1}^{n}\alpha_i(y_i(w^Tx_i+b)-1)]}\)
现在,我们的问题变成了求新目标函数的最小值,即:
\(\min_{w,b}^{} \theta(w)=\min_{w,b}^{} \max_{\alpha_i \geq 0}^{}{L(w,b,\alpha)}=p^* \qquad \qquad (7,16)\)
我们看一下我们的新目标函数\((7.16)\),先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数 \(w\) 和 \(b\) 的方程,而 \(α_i\) 又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,即:
\(\max_{\alpha_i \geq 0}^{}\min_{w,b}^{}{L(w,b,\alpha )}=d^* \qquad \qquad \qquad \qquad \qquad (7.17)\)
凸优化问题的定义是:求取最小值的目标函数为凸函数的一类优化问题。目标函数是凸函数我们已经知道,这个优化问题又是求最小值。所以我们的最优化问题就是凸优化问题
根据\(《统计学习方法》P450\)的定理 \(C.3\) ,可知KKT条件成立
对偶问题求解即为对式 \((7.17)\) 进行求解
首先,求 \(\min_{w,b}^{}L(w,b,\alpha)\)
即对 \(L(w,b,\alpha)\) 分别对 $ w, b$ 求偏导数并令其等于0
解得:
将解代入 $(7.15) $得:
即:
其次,求解 \(\min_{w,b}^{}L(w,b,\alpha)\) 对 \(\alpha\) 的极大,即是对偶问题:
通过求解 对偶问题$(7.19)-(7.21) $ 的最优解 \(\alpha^*\) ,即可根据KKT条件求解原问题 \((7.13) - (7.14)\) 的最优解 \(w^*,b^*\)
对偶问题中的支持向量:考虑原始最优化问题\((7.13)~(7.14)\)及对偶最优化问题\((7.19)~(7.21)\),将训练数据集中对应于 \(\alpha_i^*>0\) 的样本点 \((x_i,y_i)\) 的实例\(x_iεR^n\)称为支持向量
线性可分问题的SVM学习方法对线性不可分训练数据集是不适用的,因为此时线性可分SVM的不等式约束无法成立
线性不可分意味着存在某些特异点 \((x_i,y_i)\) 不能满足函数间隔 \(y_i(x_i + b) \geq 1\) 的约束条件,因此,引入松弛变量 \(\xi_i\) 使得函数间隔加上松弛变量大于等于1,即不等式约束变为:\(y_i(w \cdot x_i + b) + \xi_i \geq 1, \quad \xi_i \geq 0\)
对于每个松弛变量 \(\xi_i\) 要支付一个代价 \(\xi_i\) ,使得原目标函数从 \(\frac{1}{2}\left \| w \right \|^2\) 变为新目标函数 \(\frac{1}{2}\left \| w \right \|^2 + C\sum_{i=1}^{N}\xi_i\)
所以,线性不可分的线性支持向量机的学习问题变为凸二次规划问题(原始问题):
现实数据集往往是线性不可分的,所以线性支持向量机比线性可分支持向量机更通用
同理,将问题 \(\min_{w,b,\xi}^{} \max_{\alpha_i}^{} L(w,b,\xi,\alpha,\mu)\) 转化为对偶问题 \(max_{\alpha}^{}\min_{w,b,\xi}^{}L(w,b,\xi,\alpha,\mu)\)
先求 \(min_{w,b,\xi}^{}L(w,b,\xi,\alpha,\mu)\) ,即求 \(L\) 对 \(w, b, \xi_i\) 的偏导数并等于0,得:
再对 \(min_{w,b,\xi}L(w,b,\xi,\alpha,\mu)\) 的极大值,即得到对偶问题:
利用 \((7.46)\) 的等式约束,将 \((7.46)-(7.48)\) 归结为 \(0 \leq \alpha_{i} \leq C\) 从而消去 \(\mu_i\) 的影响,只留下 \(\alpha_i\)
最终,目标优化问题为:
所以对于线性支持向量机学习方法:构建 $(7.49)-(7.51) $ 的凸二次规划问题,然后求得最优解 \(\alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T\) ,利用KKT条件 :
定义:在线性不可分的情况下,对偶问题 $(7.49)-(7.51) $ 的解 \(\alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*)^T\) 中对应于 $\alpha_i > 0 $ 的样本点 \((x_i,y_i)\) 的实例 \(x_i\) 称为支持向量(软间隔的支持向量)
图中分离超平面为实线表示,间隔边界由虚线表示,实例 \(x_i\) 到间隔边界的距离为 $ \frac{\xi_i}{\left | w \right |}$
\(x_i\) 到分离超平面的函数间隔为 \(\frac{1-\xi_i}{\left \| w \right \|}\)
支持向量到分离超平面的函数间隔 \(\frac{1}{\left \| w \right \|}\)
利用上面两个式子即可得到实例 \(x_i\) 到间隔边界的距离为 $ \frac{\xi_i}{\left | w \right |}$ ,注意向量方向问题
根据 $(7.51) $ 分类讨论:
写作逻辑不包括此部分
支持向量机的学习问题可以形式化为求解凸二次规划问题,该凸二次规划问题具有全局最优解,且有多种最优化算法,但是当训练样本容量很大时,这些算法十分低效,因此,Platt
提出了序列最小最优化算法( Sequential Minimal Optimization, SMO)
SMO算法要解如下凸优化问题的对偶问题:
SMO算法是启发式算法,其基本思路是:
选择两个变量时 ,固定其他变量,由 \((7.99)\) 有 \(\alpha_1=-y_1\sum_{i=2}^{N}\alpha_i y_i\) ,即如果 \(\alpha_2\) 确定则 \(\alpha_1\) 也确定,所以子问题中同时更新两个变量
SMO算法的主要部分:求解两个变量二次规划的解析方法、选择变量的启发式方法
SMO的最优化问题 \((7.98-7.100)\) 的子问题可以写成:
其中,\(K_{ij}=K(x_i,x_j), i,j=1,2,...,N\) ,\(\zeta\) 是常数,目标函数 \((7.101)\) 中省略了不包含 \(\alpha_1, \alpha_2\) 的常数项
根据 \((7.102)\) 可知为啥要优化两个变量,因为只改变一个变量无法使得改变后仍为 \(\zeta\)
子问题化简过程:
由于只有两个变量 \((\alpha_1, \alpha_2)\) ,约束可以用二维空间中的图形表示
假设问题 \((7.101)~(7.103)\) 的初始可行解为 \(\alpha_1^{old}, \alpha_2^{old}\),最优解为 \(\alpha_1^{new},\alpha_2^{new}\),并且假设在沿着约束方向未经剪辑时 $\alpha_2 $ 的最优解为 \(\alpha_2^{new,uncut}\)
由于需满足不等式约束 \((7.103)\) ,所以最优值 \(\alpha_2^{new}\) 的取值范围必须满足条件 \(L \leq \alpha_i^{new} \leq H\)
推导过程:
记分离超平面为 \(g(x)=\sum_{i=1}^{N}\alpha_iy_iK(x_i,x) + b\)
定义误差 \(E_i\) :函数 $ g(x)$ 对输入 \(x_i\) 的预测值与真实值输出 $ y_i $ 之差
所以 \(\alpha_1\) 和 \(\alpha_2\) 的优化过程为定理7.6
通过利用KKT条件求得:
在每次完成两个变量的优化之后,还必须更新对应的 \(E_i\) 值,并将它们保存在列表中。 \(E_i\) 值的更新要用到\(b^{new}\)值,以及所有支持向量对应的 \(a_j\):
write by zhgqcn
原文:https://www.cnblogs.com/zgqcn/p/15092351.html