机器学习实战(五)支持向量机SVM(Support Vector Machine)

目录

0. 前言

1. 寻找最大间隔

2. 拉格朗日乘子法和KKT条件

3. 松弛变量

4. 带松弛变量的拉格朗日乘子法和KKT条件

5. 序列最小优化SMO(Sequential Minimal Optimization)

6. 高斯核函数(Gaussian Kernel)

7. 实战案例

7.1. 简化版SMO算法案例

7.2. 完整版SMO算法案例

7.3. 高斯核函数案例


学习完机器学习实战的支持向量机,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。

本篇综合了先前的文章,如有不理解,可参考:

吴恩达机器学习(十)支持向量机

所有代码和数据可以访问 我的 github

如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

0. 前言

支持向量机(Support Vector Machine)是一类监督学习的二分类算法。

通过构建超平面,将数据分割开来,超平面一边的数据属于同一类别。

支持向量是指距离分割超平面最近的那些点,支持向量机目的是使得支持向量到超平面的间隔最大

  • 优点:泛化错误率低,结果易于解释
  • 对参数调节和核函数的选择敏感
  • 适用数据类型:数值型和标称型数据

如下图所示(图源:百度百科):

H 为分割超平面,在超平面上下方各建立一个界面 H_1 和 H_2 ,在 H_1 之上的为一类,在 H_2 之下的为一类。

SVM的目的是为了最大化间隔,即 H_1 到 H_2 的距离。 

1. 寻找最大间隔

在SVM中,定义正类 y=1 ,定义反类 y=-1 ,这是为了方便后面计算。

通过 w^Tx+b=0 拟合数据的分界线,即超平面,则可定义上界面为 w^Tx+b=1 ,下界面为 w^Tx+b=-1 。因可以通过改变系数的倍数表示距离,所以可粗略定义为 1 。

上界面以上的点表示为 w^Tx+b\geqslant 1,\ y=1 ,下界面以下的点表示为 w^Tx+b\leqslant -1,\ y=-1 ,所以综合可得 y(w^Tx+b)\geqslant 1 。

需最大化上界面到下界面的距离:

d=\frac{\left|c_2-c_1\right|}{\sqrt{w_1^2+...+w_n^2}}=\frac{2}{\left\|w\right\|}

\max\ d\Rightarrow \min\ \frac{\left\|w\right\|}{2}\Rightarrow \min\ \frac{\left\|w\right\|^2}{2}\Rightarrow \min\ \frac{1}{2}w^Tw

所以,可得目标函数和约束条件:

\left\{\begin{align*} &\min\ \frac{1}{2}w^Tw\\ &s.t.\ y^{(i)}(w^Tx^{(i)}+b)\geqslant 1 \end{align*}\right.

2. 拉格朗日乘子法和KKT条件

  • 拉格朗日乘子法:求在约束条件下,函数的极值问题
  • KKT条件:若约束条件为不等式,则需满足一定条件

在拉格朗日乘子法中,引入了其他的参数,并将原问题转换为对偶问题(求最小值转换为求最大值)。

首先修改目标函数和约束条件为:

\left\{\begin{align*} &\min\ \frac{1}{2}w^Tw\\ &s.t.\ y^{(i)}(w^Tx^{(i)}+b)\geqslant 1 \end{align*}\right. \Rightarrow \left\{\begin{align*} &\min\ \frac{1}{2}w^Tw\\ &s.t.\ 1-y^{(i)}(w^Tx^{(i)}+b)\leqslant 0\end{align*}\right.

应用拉格朗日乘子法:

\begin{align*} L(w,b,\alpha) &= \frac{1}{2}w^Tw+\alpha_1g_1(x)+...+\alpha_ng_n(x) \\ &= \frac{1}{2}w^Tw -\alpha_1(y^{(1)}(w^Tx^{(1)}+b)-1)-...-\alpha_n(y^{(n)}(w^Tx^{(n)}+b)-1) \\ &= \frac{1}{2}w^Tw -\sum_{i=1}^{m}\alpha_iy^{(i)}(w^Tx^{(i)}+b)+\sum_{i=1}^{m}\alpha_i \end{align*}

应满足的KKT条件为:

\begin{align*} &\frac{\partial L}{\partial w} = w-\sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)}=0 \Rightarrow w=\sum_{i=1}^{m}\alpha_iy^{(i)}x^{(i)} \\ &\frac{\partial L}{\partial b} = -\sum_{i=1}^{m}\alpha_iy^{(i)}=0 \Rightarrow \sum_{i=1}^{m}\alpha_iy^{(i)}=0 \\ &\alpha \geqslant 0 \end{align*}

将KKT条件代回拉格朗日乘子法:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值