机器学习技法第四课——Soft-Margin SVM

此文是本人学习林轩田老师的机器学习技法第四课——Soft-Margin Support Vector Machine——的课堂笔记。

前几节课的 SVM 不能容忍错误——包括不可分错误及可分分却在 margin 内的错误,这节课要解决这个问题,推导出 Soft Margin SVM。

参考

松弛变量

引入松弛变量 $xi$,放宽条件,同时避免过度放宽,在最小化公式中也加入 $xi$:
$$ min{b,mathbf{w},xi} frac{1}{2}mathbf{w^Tw} + C sum{n=1}^{N}xi_n \
s.t. y_n(mathbf{w^Tz_n} + b) ge 1 - xi_n \
s.t. xi_n ge 0
$$
此处 $C$ 是一个常量,作为平衡“large margin”与”margin violation”的参数。
$xi$ 在限制条件中确实减小了下限,放宽了条件,但至于这背后为何能使 SVM 容忍错误,这可能要从头开始推导了。很明显,这已经可以用二次规划求解。

对偶问题

转换成对偶问题,用前面课程 Dual Support Vector Machine 中同样的方法。

拉格朗日乘数

$$ L(b,mathbf{w},alpha,beta) = frac{1}{2}mathbf{w^Tw} + C sum_{n=1}^{N}xin + sum{n=1}^N alpha_n(1-xi_n-y_n(mathbf{w^T zn} + b)) + sum{n=1}^N beta_n (-xin)
$$
求解:
$$ max
{alpha_n ge 0, betan ge 0} (min{b,mathbf{w},xi} L(b,mathbf{w},alpha,beta))
$$

求导化简成关于 $alpha$ 的函数

$$ frac{partial L}{partial xi_n} = C - alpha_n - beta_n\
let beta_n= C -alpha_n
$$
因为条件中有 $alpha_n ge 0$,故 $C ge alphan ge 0$。如此原式变换为:
$$ max
{$0 le alpha_n le C, beta_n=C-alphan} (min{b,mathbf{ 大专栏  机器学习技法第四课——Soft-Margin SVMw},xi} frac{1}{2} mathbf{w^T w} + sum_{n=1}^{N}alpha_n(1 - y_n(mathbf{w^T mathbf{z_n}} + b)))
$$
这一步增加了限制条件,但消去了 $beta, xi, C$。接下来与 Dual Support Vector Machine 的过程相同,令 $frac{partial L}{partial b} = 0, frac{partial L}{partial wi} = 0$ 化简得:
$$
min
{alphan} (frac{1}{2}sum{m=1}^{N} sum_{n=1}^{N} y_m y_n mathbf{z_m^T} mathbf{z_n} alpha_m alphan - sum{n=1}^{N}alphan) \
s.t. sum
{n=1}^N y_n alpha_n = 0, all 0 le alpha_n le C
$$
看上去与之前的差别只有对 $alpha$ 加上上限 C。

求解 $b$

部分 KKT 条件:
$$ alpha_n(1-xi_n-y_n(mathbf{w^T z_n} + b)) = 0 \
(C - alpha_n) xi_n = 0 $$
因为除 $xi, b$ 其他都是已知量,所以只要求解方程组就能得到解。而多数情况下,当 $0 lt alpha_n lt C$ 时,被称为 free Support Vector,可推导出
$$ b = y_s - mathbf{w^T z_s}
$$
之后的求解过程与前面课程没什么不同。

$alpha_n$ 与向量角色

根据 KKT 条件,当 $alpha_n = 0$ 时,松弛变量 $xi_n=0$,没有错误,被称为非支持向量,non SV,处于 margin 外界;

当 $0 lt alpha lt C$ 时,$xi_n=0$,没有错误,而且可以求解 $b$,被称为 free SV,位于 margin 上;

当 $alpha = C$ 时, $xi_n ne 0$,有错误,同样可以帮助求解,被称为 bounded SV,位于 margin 内部或越过了超平面。

LOOC 帮助模型选择

模型选择时,可以用 Cross Validation 做参考,其中特别的有 Leave-One-Out CV,即只留一个数据点做验证。

扫描二维码关注公众号,回复: 7529175 查看本文章

将 Leave-One-Out CV 与全数据集(不留验证数据)的训练做比较。如果验证数据是一个 non-SV,那么,2 者的错误是相同的,而如果验证数据是一个 SV,那么有可能分类错误。所以有
$$ E_{loocv} le frac{num(SV)}{N} $$
这里存在疑问的是,如果验证数据是一个很关键的 SV,可能极大地影响超平面的训练结果,这个 bound 是否成立。

这个上限可以用做安全检查,在训练模型之后便能得到 $E_{loocv}$ 的上限,可以排除一些结果太差的模型,节省时间,但它的作用有限,不能断定一个模型的好坏。

猜你喜欢

转载自www.cnblogs.com/sanxiandoupi/p/11712767.html