机器学习(四):支持向量机
支持向量机
\hspace{1.68em}SVM 作为一种目标中就考虑到泛化能力的模型,在很多分类场景中并不亚于后面说到的 RF,XGBoost。提出用超平面将不同的分类进行分隔,在超平面一边的样本的标签为 1,另一边样本的标签为 -1,用超平面两侧的支持向量到超平面的距离之和来表示当前模型对样本分类的 “分隔程度”,距离越大,间隔越大,分隔程度越好。
算法过程
线性可分情况
\hspace{1.68em}在这一节中介绍一个超平面进行二分类的场景。给定训练集 D={(x1,y1),(x2,y2),…,(xn,yn)}D = \{(\textbf{x}_1, y_1), (\textbf{x}_2, y_2), \dots, (\textbf{x}_n, y_n)\}D={(x1,y1),(x2,y2),…,(xn,yn)},其中 xi∈Rd\textbf{x}_i \in \mathbb{R}^dxi∈Rd,yi∈{−1,+1}y_i \in \{-1, +1\}yi∈{−1,+1}。 假设存在超平面 wTx+b=0w^T x + b = 0wTx+b=0 能完全正确分类所有样本,即:
{wTxi+b≥+1,若 yi=+1,wTxi+b≤−1,若 yi=−1.
\begin{cases}
\textbf{w}^T \textbf{x}_i + b \geq +1, & \text{若 } y_i = +1, \\
\textbf{w}^T \textbf{x}_i + b \leq -1, & \text{若 } y_i = -1.
\end{cases}
{wTxi+b≥+1,wTxi+b≤−1,若 yi=+1,若 yi=−1.
\hspace{1.68em}可以用一个不等式就描述模型中超平面和不同分类样本的标签之间的关系:
yi(wTxi+b)≥1,∀i=1,2,…,n.y_i (\textbf{w}^T \textbf{x}_i + b) \geq 1, \quad \forall i=1,2,\dots,n.yi(wTxi+b)≥1,∀i=1,2,…,n.
\hspace{1.68em}值得注意的是:那些穿过样本中点的决策边界总满足:wTxi+b=1\textbf{w}^T \textbf{x}_i + b =1wTxi+b=1 或 wTxi+b=−1\textbf{w}^T \textbf{x}_i + b =-1wTxi+b=−1
分隔程度
\hspace{1.68em}在文章的一开始就提到:SVM 用超平面两侧的支持向量到超平面的距离之和来表示当前模型对样本分类的 “分隔程度”,距离越大,间隔越大,分隔程度越好。 这种间隔可以通过两种方式求出来。
方式一:
\hspace{1.68em}点到平面的距离公式:向量 x\textbf{x}x 到超平面 wTx+b=0\textbf{w}^T \textbf{x} + b = 0wTx+b=0 的几何距离为: ∣wTx+b∣∥w∥.\frac{|\textbf{w}^T \textbf{x} + b|}{\|w\|}.∥w∥∣wTx+b∣. 那么不同分类的支持向量到超平面的距离之和为:∣wTxl+ b∣∥w∥+∣wTxr+ b∣∥w∥=2∥w∥\frac{|\textbf{w}^T \textbf{x}_l +\;b|}{\|w\|} + \frac{|\textbf{w}^T \textbf{x}_r + \;b|}{\|\textbf{w}\|}=\frac{2}{\|\textbf{w}\|}∥w∥∣wTxl+b∣+∥w∥∣wTxr+b∣=∥w∥2
方式二:
\hspace{1.68em}向量投影定理:一个向量 a\textbf{a}a 在另一个向量 b\textbf{b}b 方向上的投影长度 d 为:|a⋅b∥b∥|.\textbf{|}\textbf{a}\cdot\frac{\textbf{b}}{\|\textbf{b}\|}\textbf{|}.|a⋅∥b∥b|.
那么不同分类的支持向量到超平面的距离之和为:(xl−xr)⋅w∥w∥=|wTxl+ b − wTxr+ b∥w∥|=2∥w∥(\textbf{x}_l-\textbf{x}_r)\cdot\frac{\textbf{\textbf{w}}}{\|\textbf{\textbf{w}}\|}=\textbf{|}\frac{\textbf{w}^T \textbf{x}_l +\;b\;-\;\textbf{w}^T \textbf{x}_r +\;b}{\|\textbf{\textbf{w}}\|}\textbf{|}=\frac{2}{\|w\|}(xl−xr)⋅∥w∥w=|∥w∥wTxl+b−wTxr+b|=∥w∥2
最大化分隔程度
\hspace{1.68em}SVM 的目标是找到超平面 (w,b)(w, b)(w,b),使得 几何间隔 最大,即: maxw,b2∥w∥subject toyi(wTxi+b)≥1, ∀i.\max_{\textbf{w}, b} \frac{2}{\|\textbf{w}\|} \quad \text{subject to} \quad y_i (\textbf{w}^T x_i + b) \geq 1, \, \forall i.w,bmax∥w∥2subject toyi(wTxi+b)≥1,∀i.
等价于:minw,b12∥w∥2subject toyi(wTxi+b)≥1, ∀i.\min_{\textbf{w}, b} \frac{1}{2}\|\textbf{w}\|^2 \quad \text{subject to} \quad y_i (\textbf{w}^T x_i + b) \geq 1, \, \forall i.minw,b21∥w∥2subject toyi(wTxi+b)≥1,∀i.
引入拉格朗日乘子
构造拉格朗日函数:
L(w,b,α)=12∥w∥2−∑i=1nαi[yi(wTxi+b)−1],
\mathcal{L}(w, b, \alpha) = \frac{1}{2}\|w\|^2 - \sum_{i=1}^n \alpha_i \left[ y_i (w^T x_i + b) - 1 \right],
L(w,b,α)=21∥w∥2−i=1∑nαi[yi(wTxi+b)−1],
其中 αi≥0\alpha_i \geq 0αi≥0 是拉格朗日乘子。
对偶问题推导
-
求极小值(对 www 和 bbb)
分别对 www 和 bbb 求偏导并令其为 0:
∂L∂w=w−∑i=1nαiyixi=0⇒w=∑i=1nαiyixi. \frac{\partial \mathcal{L}}{\partial w} = w - \sum_{i=1}^n \alpha_i y_i x_i = 0 \quad \Rightarrow \quad w = \sum_{i=1}^n \alpha_i y_i x_i. ∂w∂L=w−i=1∑nαiyixi=0⇒w=i=1∑nαiyixi.∂L∂b=−∑i=1nαiyi=0⇒∑i=1nαiyi=0. \frac{\partial \mathcal{L}}{\partial b} = -\sum_{i=1}^n \alpha_i y_i = 0 \quad \Rightarrow \quad \sum_{i=1}^n \alpha_i y_i = 0. ∂b∂L=−i=1∑nαiyi=0⇒i=1∑nαiyi=0. -
代入拉格朗日函数
将 w=∑i=1nαiyixiw = \sum_{i=1}^n \alpha_i y_i x_iw=∑i=1nαiyixi 代入 L\mathcal{L}L,化简后得到对偶问题:
maxα∑i=1nαi−12∑i=1n∑j=1nαiαjyiyjxiTxj \max_{\alpha} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i^T x_j αmaxi=1∑nαi−21i=1∑nj=1∑nαiαjyiyjxiTxj
subject to∑i=1nαiyi=0andαi≥0, ∀i. \text{subject to} \quad \sum_{i=1}^n \alpha_i y_i = 0 \quad \text{and} \quad \alpha_i \geq 0, \, \forall i. subject toi=1∑nαiyi=0andαi≥0,∀i.
对偶问题
SVM 的目标函数(对偶形式)为:
minα12∑i=1n∑j=1nαiαjyiyj⟨xi,xj⟩−∑i=1nαisubject to∑i=1nαiyi=0,αi≥0,∀i=1,2,…,n. \begin{aligned} \min_{\alpha} \quad & \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j \langle x_i, x_j \rangle - \sum_{i=1}^n \alpha_i \\ \text{subject to} \quad & \sum_{i=1}^n \alpha_i y_i = 0, \\ & \alpha_i \geq 0, \quad \forall i=1,2,\dots,n. \end{aligned} αminsubject to21i=1∑nj=1∑nαiαjyiyj⟨xi,xj⟩−i=1∑nαii=1∑nαiyi=0,αi≥0,∀i=1,2,…,n.
其中 ⟨xi,xj⟩\langle x_i, x_j \rangle⟨xi,xj⟩ 表示内积 xiTxjx_i^T x_jxiTxj。
求解该优化问题后,最终的分类超平面为:
f(x)=sign(∑i=1nαi∗yi⟨xi,x⟩+b∗), f(x) = \text{sign} \left( \sum_{i=1}^n \alpha_i^* y_i \langle x_i, x \rangle + b^* \right), f(x)=sign(i=1∑nαi∗yi⟨xi,x⟩+b∗),
其中 αi∗\alpha_i^*αi∗ 是最优解,b∗b^*b∗ 通过支持向量计算得到。
线性不可分情况
软间隔
\hspace{1.68em}在给定标签的训练集中,可能会出现线性不可分的情况,此时就需要引入软间隔这个概念,此时容忍小部分训练误差,通过罚函数法将松弛变量罚到目标函数中,下面引入的 C 实际上是一个超参数,C∑i=1nξiC \sum_{i=1}^n \xi_iC∑i=1nξi 也可称为正则化项。目标函数变为:
minw,b,ξ12∥w∥2+C∑i=1nξisubject toyi(wTxi+b)≥1−ξi, ξi≥0.
\min_{w, b, \xi} \frac{1}{2}\|w\|^2 + C \sum_{i=1}^n \xi_i \quad \text{subject to} \quad y_i (w^T x_i + b) \geq 1 - \xi_i, \, \xi_i \geq 0.
w,b,ξmin21∥w∥2+Ci=1∑nξisubject toyi(wTxi+b)≥1−ξi,ξi≥0.
核函数扩展
核函数(处理非线性问题)
将内积 ⟨xi,xj⟩\langle x_i, x_j \rangle⟨xi,xj⟩ 替换为核函数 K(xi,xj)K(x_i, x_j)K(xi,xj),目标函数变为:
minα12∑i=1n∑j=1nαiαjyiyjK(xi,xj)−∑i=1nαi.
\min_{\alpha} \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j K(x_i, x_j) - \sum_{i=1}^n \alpha_i.
αmin21i=1∑nj=1∑nαiαjyiyjK(xi,xj)−i=1∑nαi.
通过上述步骤,SVM 从最大化几何间隔出发,推导出最终的凸二次规划问题,确保全局最优解的存在性。