SVM推导
Posted 23oclock
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVM推导相关的知识,希望对你有一定的参考价值。
SVM(support vector machine)支持向量机.
1 间隔与支持向量
- 样本集 (D={(x_1, y_1), cdots, (x_m, y_m)}), 其中 (x_iin mathbb{R}^d, y_iin{-1, 1}, i=1,cdots,m).
- 划分超平面为
[ w^T x + b = 0, ]
其中(w=(w_1, cdots, w_d)^T). - 点 (x) 到平面的距离: 设 (x_0) 是平面上一点, 即它满足
[ w^T x_0 + b = 0, ]
则 (x) 到平面的距离即为向量 (x-x_0) 在平面法向 (frac{w}{lVert w Vert}) 上投影长度:
[ frac{lvert w^T(x-x_0) vert}{lVert w Vert} = frac{lvert w^T x + b vert}{lVert w Vert}. ]
由此我们还可以知道, 原点到平面距离为
[ frac{lvert w^T 0 + b vert}{lVert w Vert} = frac{lvert b vert}{lVert w Vert}. ] - 支持向量: 设超平面 ((w, b)) 能将样本分类正确, 即对 ((x_i, y_i)in D) 有
[ left{ egin{aligned} w^Tx_i + b &> 0 quad y_i = +1 w^Tx_i + b &< 0 quad y_i = -1 end{aligned} ight. ]
通过变换(w)以及(b)可以使得下式成立:
[ left{ egin{aligned} w^Tx_i + b &geq 1 quad y_i = +1 w^Tx_i + b &leq -1 quad y_i = -1 end{aligned} ight. ]
若(D)中样本使得上式等号成立, 则称其为支持向量. 两个异类支持向量到超平面的距离之和为
[ gamma = frac{2}{lVert w Vert}, ]
称其为间隔. - 目标: 寻找 ((w, b)) 使 (gamma) 最大, 即
[ egin{aligned} &max_{w, b} frac{2}{lVert w Vert} &s.t.left{ egin{aligned} w^Tx_i + b &geq 1 quad y_i = +1 w^Tx_i + b &leq -1 quad y_i = -1 end{aligned} ight. Leftrightarrow y_i(w^T x_i+b)geq 1, end{aligned} ]
转变为极小化问题:
[ egin{aligned} &min_{w, b} frac12 lVert w Vert^2 &s.t.quad y_i(w^T x_i+b)geq 1, quad i=1,cdots,m. end{aligned} ag{1.1} ]
这是个凸二次规划问题, 可以用相应的优化方法求解.
2 对偶问题
Lagrange 乘子法得到的 Lagrange 函数为
[
L(w, b, alpha) = frac12 lVert w
Vert^2 + sum_{i= 1}^{m} alpha_ileft(1-y_i(w^T x_i+b)
ight),
]
其中 (alpha = (alpha_1, cdots, alpha_m)^T). 将 (L) 对 (w) 和 (b) 的偏导置零, 有
[
egin{aligned}
frac{partial L(w, b, alpha)}{partial w} &= w - sum_{i=1}^{m}alpha_i y_i x_i = 0 Rightarrow w = sum_{i = 1}^{m}alpha_i y_i x_i, frac{partial L(w, b, alpha)}{partial b} &= sum_{i = 1}^{m}alpha_i y_i = 0.
end{aligned}
]
将上面第一式代入(L(w, b, alpha)), 再考虑上面第二式的约束, 得到对偶问题
[
egin{aligned}
&quad max_{alpha}frac12 sum_{i = 1}^{m}alpha_i y_i x_i^Tsum_{i = 1}^{m}alpha_i y_i x_i + sum_{i = 1}^{m}alpha_ileft( 1-y_i(sum_{i = 1}^{m}alpha_i y_i x_i^T x_i + b)
ight) & = max_{alpha} sum_{i = 1}^{m} alpha_i - frac12 sum_{i = 1}^{m}sum_{j = 1}^{m}alpha_ialpha_jy_iy_jx_i^Tx_i &qquad s.t. &qquadqquad
egin{aligned}
sum_{i = 1}^{m} alpha_i y_i &= 0 alpha_i &geq 0 qquad i=1,cdots,m.
end{aligned}
end{aligned}
]
求出这个问题的解 (alpha), 则可求出法向 (w=sum_{i = 1}^{m}alpha_i y_i x_i), 于是得到分类函数:
[
f(x) = sum_{i = 1}^{m}alpha_i y_i x_i^T x + b. ag{2.1}
]
另外, 因为 ((1.1)) 式有不等式约束, 所以上述过程还需满足 KKT(Karush-Kuhn-Tucker) 条件:
[
left{
egin{aligned}
alpha_i &geq 0 y_i(f(x_i) - 1) &geq 0 alpha_i(y_i f(x_i) - 1) &= 0
end{aligned}
ight.
]
分析:
- 若 (alpha_i = 0), 则对 ((2.1)) 式不起作用;
- 若 (alpha_i > 0), 则必有 (y_i f(x_i) = 1), 即 (x_i)是支持向量,
[ egin{aligned} &Rightarrow y(w^T x_i+b) = 1 &Rightarrow b = frac{1}{y_i} - w^T x_i. end{aligned} ]
因此, 我们有
[ egin{aligned} f(x) &= sum_{i = 1}^{m} alpha_i y_i x_i^T x + b &= sum_{x_i ext{为支持向量}} alpha_i y_i x_i^T x + b. end{aligned} ]
理论上, 我们只需任取一个正支持向量 (x_{i_0}), 即可计算出 (b=1-w^T x_{i_0}). 但现实中, 我们常用更鲁棒的方法计算
[ b = frac{1}{lvert S vert} sum_{sin S}left(frac{1}{y_s} - sum_{iin S}alpha_i y_i x_i^T x_s ight) ]
其中 (S={i: alpha_i > 0 }). 即有最终公式
[ f(x) = sum_{iin S} alpha_i y_i x_i^T x + frac{1}{lvert S vert} sum_{sin S}left(frac{1}{y_s} - sum_{iin S}alpha_i y_i x_i^T x_s ight). ]
3 求解对偶问题
[ egin{aligned} &max_{alpha} sum_{i = 1}^{m} alpha_i - frac12 sum_{i = 1}^{m}sum_{j = 1}^{m}alpha_ialpha_jy_iy_jx_i^Tx_i & s.t. &qquad egin{aligned} sum_{i = 1}^{m} alpha_i y_i &= 0 alpha_i &geq 0 qquad i=1,cdots,m. end{aligned} end{aligned} ag{3.1} ]
- SMO(sequential minimal optimization)算法: 利用约束 (sum_{i = 1}^{m}alpha_i y_i = 0), 不断执行以下步骤:
- 选取一对需更新的变量 (alpha_i), (alpha_j);
- 固定 (alpha_i) 和 (alpha_j) 以外的参数, 求解 ((3.1))更新 (alpha_i) 和 (alpha_j).
- 怎么开始第一步? 选取的 (alpha_i) 和 (alpha_j) 对应的两样本之间间隔最大. 分析:固定其他参数后, 仅优化两个参数的过程能做到非常高效. 仅考虑 (alpha_i) 和 (alpha_j), 约束条件可写为
[ alpha_i y_i + alpha_j y_j = c = -sum_{k eq i,j}alpha_k alpha_k qquad alpha_i, alpha_j geq 0, ]
用其消去 ((3.1)) 中变量 (alpha_j), 则得到一个关于 (alpha_i) 的单变量二次规划问题, 仅有的约束是 (alpha_i geq 0), 这样的二次规划问题具有闭式解(解析解), 于是不必调用数值优化算法, 即可高校计算出更新后的 (alpha_i) 和 (alpha_j).
4 参考文献
- 周志华,《机器学习》, 清华大学出版社
以上是关于SVM推导的主要内容,如果未能解决你的问题,请参考以下文章
支持向量机SVM原理解读,以及PyQt5融合SVM的代码实现,没有公式推导(已经很成熟,很难改公式,数学专业的可以推导学习)