支持向量机(SVM)

68 阅读1分钟

支持向量机

最大化间隔

原始代价函数

max2w s.t.   yi(wxi+b)1max\frac{2}{||w||} \\ \ \\ s.t.\ \ \ y_i(wx_i+b) \ge 1

约束条件表示所有样本都在两条线外

image.png

拉格朗日函数

要计算最大化间隔, 可以转成拉格朗日乘子法求极值

L=w22+i=1mαi(1yi(wxi+b))L = \frac{||w||^2}{2} + \sum_{i=1}^m\alpha_i(1-y_i(wx_i+b))

其中 经验风险

i=1mαi(1yi(wxi+b))\sum_{i=1}^m\alpha_i(1-y_i(wx_i+b))

结构风险

w22\frac{||w||^2}{2}

经验风险用来度量预测模型与训练数据的误差, 结构风险用来避免 过拟合

判决函数

拉格朗日法求得模型参数 wb 后得到判决函数

f(xi,w)={1wxi+b11wxi+b1f(x_i, w) = \begin{cases} 1 & wx_i + b \ge 1 \\ -1 & wx_i + b \le -1 \end{cases}

SVM 优化

将拉格朗日函数转换成计算(称为原始代价函数的 最大最小对偶 )

maxα(minw,bL)\underset{\alpha}{max} (\underset{w,b}{min} L)

先对 wb 求导

Lw=wi=1mαiyixi=0\frac{\partial L}{\partial w} = w - \sum_{i=1}^m \alpha_iy_ix_i = 0
Lb=i=1mαiyi=0\frac{\partial L}{\partial b} = - \sum_{i=1}^m \alpha_iy_i = 0

计算得到 w 代入拉格朗日函数中

minw,bL=12i=1mj=1mαiαjyiyjxixji=1mαiyi((j=1mαjyjxj)xi+b)+i=1mαi=i=1mαi12i=1mj=1mαiαjyiyjxixj\begin{aligned} \underset{w,b}{min} L &= \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_ix_j-\sum_{i=1}^m\alpha_iy_i\left(\left(\sum_{j=1}^m\alpha_jy_jx_j\right)x_i+b\right)+\sum_{i=1}^m\alpha_i \\ &= \sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_ix_j \end{aligned}

再利用拉格朗日乘子法求 α 极大 (又称为 αi\alpha_i二次规划 )

maxαL s.t.   i=1mαiyi=0\underset{\alpha}{max} L \\ \ \\ s.t. \ \ \ \sum_{i=1}^m \alpha_iy_i = 0

计算得到 w 的最优解

w=i=1mαiyixiw^* = \sum_{i=1}^m \alpha^*_i y_i x_i

再选择一个 αi>0\alpha_i^* > 0 来计算 bb^*

b=yii=1mαiyixixjb^* = y_i - \sum_{i=1}^m \alpha_i^* y_i x_i x_j

得到判决函数

f(x)=sign(wx+b)=sign(i=1mαiyixix+b)f(x) = sign(wx+b) = sign\left(\sum_{i=1}^m \alpha_i y_i x_i x + b\right)

软间隔

没办法完美的区分在两条线外时

max2w+Ci=1mξi s.t.   yi(wxi+b)1ξimax\frac{2}{||w||} + C\sum_{i=1}^m\xi_i \\ \ \\ s.t.\ \ \ y_i(wx_i+b) \ge 1 - \xi_i

image.png

Hinge 损失

{ξi=1yi(wxi+b)ξi0\begin{cases} \xi_i = 1 - y_i(wx_i + b) \\ \xi_i \ge 0 \end{cases}

yi=1y_i = 1 (正例) 时, wx+b1wx+b \le 1, 则 01yi(wx+b)10 \le 1-y_i(wx+b) \le 1

image.png

wx+b1wx+b\ge1 时, ξi=0\xi_i=0 , 表示惩罚(误差)为 0

ξ=max(0,1yi(wx+b))\xi = max(0, 1-y_i(wx+b))

拉格朗日函数

L=w22+i=1mαi(1yi(wxi+b))+Ci=1mξii=1mμiξiL = \frac{||w||^2}{2} + \sum_{i=1}^m\alpha_i(1-y_i(wx_i+b))+C\sum_{i=1}^m\xi_i - \sum_{i=1}^m\mu_i\xi_i

代价函数

minθCi=1m[y(i)cost1(θx(i))+(1y(i))cost0(θx(i))]+12i=1nθj2\underset{\theta}{min} C\sum_{i=1}^m \left[ y^{(i)}cost_1(\theta x^{(i)}) + (1-y^{(i)})cost_0(\theta x^{(i)}) \right] +\frac{1}{2}\sum_{i=1}^n\theta_j^2

image.png

核函数

将非线性可分问题转变为 线性可分 问题

image.png

高斯径向基函数

K(x,y)=exp(xy22σ2)=exp(k=1n(xkyk)22σ2)K(x,y) =exp\left(\frac{-||x-y||^2}{2\sigma^2}\right) =exp\left(-\frac{\sum_{k=1}^n(x_k - y_k)^2}{2\sigma^2}\right)

image.png

s = sum((x1 - x2).^2);
sim = exp(-s / 2 / sigma^2);

支持向量回归(SVR)

f(x)y 的差异大于 e 时才计算损失

minw,b12w2+Ci=1mmax(0,f(xi)ye)\underset{w,b}{min}\frac{1}{2}||w||^2 + C\sum_{i=1}^m max(0, |f(x_i) - y| - e)