首页 > 其他分享 >SVM推导

SVM推导

时间:2022-10-13 22:13:37浏览次数:33  
标签:SVM frac 推导 sum right end lambda left

image

如图,对于一个可分并且没有异常数据的二分问题,通过原始的感知机算法能够得到正确分类。如果靠近直线的蓝点再往上移动一点,就回被错误预测,算法的泛化能力并不好。支持向量机是一种讲样本与分界面之间间隔最大化的算法,所以用SVM可以或者更好的划分。

Hard Margin SVM(硬间隔支持向量机)

为了方便我们使\(y = \begin{cases}& 1 \ \ \ \ \text{if 正确分类}\\ & -1 \ \text{if 错误分类}\\ \end{cases}\),这时,我们要求的为如下公式

\[\left\{\begin{matrix} & \arg \max_{w,b} \min_x \frac{\left|w^{T} x+b\right|}{\|w\|} \\ & \text{s.t.}\ \ \ \ \ \ \left(w^{T} x+b\right) > 0 \end{matrix}\right. \]

即在正确分类的情况下使到分界线的距离最小的点最大化。
前文中\(y\in \{ 1,-1\}\),所以可以写作

\[\left\{\begin{matrix} & \arg \max_{w,b} \min_x \frac{y\left(w^{T} x+b\right)}{\|w\|} \\ & \text{s.t.}\ \ \ \ \ \ \left(w^{T} x+b\right) > 0 \end{matrix}\right. \]

首先将由于多个(w,b)对应一个分界面,为了使最小值最大化分界面到两边最近的点距离一样,我们就可以通过缩放得出\(min_x|w^Tx+b|=1\)。即:

\[\begin{array}{l} & \arg \max_{w,b} \min_x \frac{y\left(w^{T} x+b\right)}{\|w\|}\\ =&\arg \max_{w,b} \frac{\min_x y\left(w^{T} x+b\right)}{\|w\|}\\ =&\arg \max_{w,b} \frac{1}{\|w\|}\\ =&\arg \min_{w,b} \|w\|\\ =&\arg \min_{w,b} \frac{1}{2}w^Tw\\ \end{array} \]

两边最小值一定存在且一定是\(\pm1\),所以可以写作

\[\left\{\begin{matrix} & \arg \min_{w,b} \frac{1}{2}w^Tw\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ & \text{s.t.}\ \ 1 - y_i\left(w^{T} x_i+b\right) \leq 0\\ \end{matrix}\right. \]

通过拉格朗日乘子法,我们可以去掉对(w,b)的约束。设\(\mathcal{L}(w,b,\lambda) = \frac{1}{2}w^Tw + \sum_{i=0}^n \lambda\left(1 - y_i\left(w^{T} x_i+b\right)\right)\),可得

\[\left\{\begin{matrix} & \min_{w,b} max_{\lambda} \mathcal{L}(w,b,\lambda)\\ & \text{s.t.}\ \ \lambda_i \geq 0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ \end{matrix}\right. \]

由于强对偶,得

\[\left\{\begin{matrix} & max_{\lambda} \min_{w,b} \mathcal{L}(w,b,\lambda)\\ & \text{s.t.}\ \ \lambda_i \geq 0 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ \end{matrix}\right. \]

分别对w、b求导并令偏导为零

\[\begin{array}{l} \frac{\partial L}{\partial w}=w-\sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}=0 \\ \frac{\partial L}{\partial b}=\sum_{i=1}^{n} \lambda_{i} y_{i}=0 \end{array} \]

得:

\[\begin{array}{c} w^* = \sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}\\ \sum_{i=1}^{n} \lambda_{i} y_{i}=0 \end{array} \]

将条件带入,得:

\[\begin{aligned} \mathcal{L}(w, b, \lambda) &=\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{n} \lambda_{i}-\sum_{i=1}^{n} \lambda_{i} y_{i}\left(\sum_{j=1}^{n} \lambda_{j} y_{j}\left(x_{i} \cdot x_{j}\right)+b\right) \\ &=\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{n} \lambda_{i}-\sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{n} \lambda_{i} y_{i} b \\ &=\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right) \end{aligned} \]

\[\left\{\begin{array}{rl} max_{\lambda}&\sum_{j=1}^{n} \lambda_{i}-\frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)\\ \text{s.t.} &\ \ \lambda_i \geq 0\\ & \sum_{i=1}^{n} \lambda_{i} y_{i}=0 \end{array}\right. \]

又由于KKT条件,可得

\[\begin{aligned} \nabla_{w} \mathcal{L} &=0\\ \nabla_{b} &=0 \\ g(\mathbf{x}) & \leq 0 \\ \lambda & \geq 0 \\ \lambda g(\mathbf{x}) &=0 \end{aligned} \]

即\(\lambda \neq 0\)时,\(\left(1 - y_i\left(w^{T} x_i+b\right)\right)=0\)。
最终得

\[\begin{array}{rl} w^* &= \sum_{i=1}^{n} \lambda_{i} x_{i} y_{i}\\ b^* &= \sum_{s\in S}y_s-w^Tx_s\\ &= \sum_{s\in S}y_s-(\sum_{i=1}^{n} \lambda_{i} x_{i} y_{i})x_s\\ \end{array} \]

其中\(\lambda_{i}\)未知可以通过SMO算法求出
这是可以通过\(y^* = \text{sign}(w^*{^T}x+b^*)\)
这便是Hard Margin SVM(硬间隔支持向量机)。Hard Margin SVM是一个硬分类算法,所以对于存在异常数据和不可分的问题,效果不好,如果我们允许少量的样本跨过分界会有更好的效果,即Soft Margin SVM(软间隔支持向量机)。

Soft Margin SVM(软间隔支持向量机)

如何量化那条线更好呢?我们可以用过一个损失函数,最简单的就是穿过分界线的个数\(J = \text{count}_{s \in SS} (s) \ \ (S = \{(x,y) | y(W^Tx+b)<1\})\),但此函数不连续。另一种连续的函数跨过分界线距离之和\(J = \sum_{s \in S}1-y_s(W^Tx_s+b)\ \ (S = \{(x,y) | y(W^Tx+b)<1\})\)

每个样本的损失为\(loss = \max(0, 1-y_s(W^Tx_s+b))\),这时,我们得到了hinge loss(铰链损失)\(loss = max(0,1-z)\)

image
这时候我们就可以通过,将原来改写成下列公式。

\[\left\{\begin{array}{rl} & \arg \min_{w,b} & \frac{1}{2}w^Tw+C\sum_{i=1}^n\max(0, 1-y_s(W^Tx_s+b))\\ & \text{s.t.}\ \ & 1 - y_i\left(w^{T} x_i+b\right) \leq 0\\ \end{array}\right. \]

通常情况下引入变量\(\xi\),来简写这个式子

\[\left\{\begin{array}{rll} & \arg \min_{w,b} & \frac{1}{2}w^Tw+C\sum_{i=1}^n\xi_i\\ & \text{s.t.}\ \ & y_i\left(w^{T} x_i+b\right) \geq 1-\xi_i\\ & & \xi_i \geq 0 \end{array}\right. \]

通过这两个式子限制损失项最小值为0。如何实现的呢?
通过这种方式求最小值,使得\(\xi\)不能太大,也就是满足下面两个条件的最小值,如果\(y_i\left(w^{T} x_i+b\right) \geq 1\),正确分类,这时候损失应为0,\(\xi\)最小值为0,否则迫使等号成立,即\(\xi_i = 1-y_i\left(w^{T} x_i+b\right)\)。经过化简即可求出(w,b)。

标签:SVM,frac,推导,sum,right,end,lambda,left
From: https://www.cnblogs.com/RanX2018/p/16789913.html

相关文章