0%

【机器学习】支持向量机SVM

支持向量机

SVM(支持向量机)

参考文献链接:

2.1.1]—支持向量机(线性可分定义)_哔哩哔哩_bilibili (b站上 浙江大学胡浩基老师的讲解视频)

【机器学习】支持向量机 SVM(非常详细) - 知乎 (zhihu.com)

机器学习算法(一)SVM_yaoyz105的博客

【机器学习算法笔记系列】支持向量机(SVM)算法详解和实战_fpzRobert的博客

简介

机器学习的一般框架:
训练集 => 提取特征向量 => 结合一定的算法(分类器:比如决策树、KNN)=>得到结果

阐述

SVM是二分类模型,将实例的特征向量 映射成空间中的一些点,寻找一个超平面来对样本点进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解,若出现新的点,这个超平面也能做出很好的分类

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机
  • 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机
  • 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机

优缺点

优点

  • 决策函数只由少数的支持向量决定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了维数灾难。
  • 可进行小样本学习:支持向量机(SVM)本质上是非线性方法,在样本量比较少的时候,容易抓住数据与特征之间的非线性关系,因此可以解决非线性问题、可以避免神经网络结构选择和局部极小值点问题、可以提高泛化能力、可以解决高维问题。(分类鲁棒性高、全局最优解

缺点

  • 大规模训练样本难以实施,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间。
  • 原始分类器不加修改仅适用于处理二分类问题(改进:通过多个二类支持向量机的组合来解决等等)
  • 对缺失数据敏感,对参数调节和核函数的选择敏感。对非线性问题没有通用解决方案,必须谨慎选择核函数来处理。

线性可分、不可分

在二维空间下,

  • 线性可分Liner Separable

image.png

  • 非线性可分NonLinear Separable:不存在一条直线

    image.png

同理,在三维空间下,

image.png

接下来看下图,

image.png

用数学严格定义训练样本以及他们的标签,假设,有N个训练样本及其标签$\left\{\left(X_{1}, y_{1}\right),\left(X_{2}, y_{2}\right), \ldots,\left(X_{N}, y_{N}\right)\right\}$,其中

人为规定,如果$X_i$属于$C_1$,则$y_i$等于+1,若属于$C_2$,等于-1。

线性可分的严格定义:

​ 一个训练样本集$\left\{\left(X_{1}, y_{1}\right),\left(X_{2}, y_{2}\right), \ldots,\left(X_{N}, y_{N}\right)\right\}$,在$i=1 \to N$ 线性可分,是指存在$(w_1,w_2,b)$,使得

  1. 若 $y_i = +1$ ,则 $\omega_{1} \mathrm{x}_{i 1}+\omega_{2} \mathrm{x}_{i 2}+\mathrm{b}>0$
  2. 若 $y_i = -1$ ,则 $\omega_{1} \mathrm{x}_{i 1}+\omega_{2} \mathrm{x}_{i 2}+\mathrm{b}<0$

若用向量形式来定义,$X_{i}=\left[\begin{array}{l}
x_{i 1} \\
x_{i 2}
\end{array}\right]$,$\omega=\left[\begin{array}{l}
\omega_{1} \\
\omega_{2}
\end{array}\right]$,则有,

  1. 若 $y_i = +1$ ,则 $\omega^{T} X_{i}+\mathrm{b}>0$
  2. 若 $y_i = - 1$ ,则 $\omega^{T} X_{i}+\mathrm{b}<0$

最终线性可分的判定简化为

在二分类的情况下,如果一个数据集是线性可分的,即存在一个超平面将两个类别完全分开,那么一定存在无数多个超平面将这两个类别完全分开。

Q:为什么要叫作“超平面”呢?
A:样本的特征很可能是高维的,此时样本空间的划分就不是一条线

image.png

ヾ(,,・∇・,, 那么, 哪一个超平面最好呢?

Q:画线的标准是什么?/ 什么才叫这条线的效果好?/ 哪里好?
A:SVM 将会寻找可以区分两个类别并且能使间隔(margin)最大的划分超平面。比较好的划分超平面,样本局部扰动时对它的影响最小、产生的分类结果最鲁棒、对未见示例的泛化能力最强。

Q:间隔(margin)是什么?
A:对于任意一个超平面,其两侧数据点都距离它有一个最小距离(垂直距离),这两个最小距离的和就是间隔。

Q:为什么要让 margin 尽量大?
A:因为大 margin 犯错的几率比较小,也就是更鲁棒啦。

问题描述

1、解决线性可分问题

2、将线性可分问题中获得的结论推广到线性不可分情况

将位于 上下两边的这两条平行线上的样本,称为 “支持向量”

这两条平行线之间的距离,称为“间隔”(Margin)

我们要找的,就是使得 间隔最大 的那条直线

image.png

但是,使用“间隔最大”这条准则,并不能唯一的确定一条直线,因此,还需规定:这条线在上下两个平行线的中间

因此,SVM寻找的最优分类直线应该满足三个条件

  • 该直线分开了两类
  • 该直线最大化间隔
  • 该直线处于间隔的正中间,到所有支持向量距离相等

在线性可分的条件下,有且仅有唯一一条直线,满足上面三个条件。在高维空间中,直线就变成了超平面

优化问题(硬间隔)

用严格的数学,将寻找最优分类超平面的过程写成一个最优化问题

描述任意一个超平面:$w^{T} x+b=0$

$\omega=\left[\begin{array}{c}
\omega_{1} \\
\omega_{2} \\
\vdots \\
\omega_{m}
\end{array}\right]$,$|\omega|^{2}=\omega_{1}^{2}+\omega_{2}^{2} \ldots+\omega_{m}^{2}=\sum_{i=1}^{m} \omega_{i}^{2}$

点到直线距离

  • 二维空间:点 $(x,y)$ 到直线 $Ax+By+C=0$ 的距离:$\frac{|A x+B y+C|}{\sqrt{A^{2}+B^{2}}}$

  • n维空间:点$x=\left(x_{1}, x_{2} \ldots x_{n}\right)$,到直线$w^{T} x+b=0$的距离:$\frac{\left|w^{T} x+b\right|}{|w|}$,其中$|w|=\sqrt{w_{1}^{2}+\ldots w_{n}^{2}}$

因此,支持向量到超平面的距离 若为$r$,则其它点到超平面的距离必然大于$r$。因此,对于所有样本点$x$:

$|w|r$为正数,暂且令为$|w|r = 1$(方便推导,且对目标函数优化没有影响)

则为了$r$最大,则等价于:

使得

上面这个方程组合并,简写为:

SVM最优化问题总结为:

已知:训练样本集$\{(X_i,y_i)\},i=1\to m$

待求:$(w,b)$

则可以表示为:$\min \frac{1}{2}|w|^{2} \text { s.t. } \quad y_{i}\left(w^{T} x_{i}+b\right) \geq 1 \quad i\in[1,m]$

凸优化(Convex Optimization)中的二次规划问题:

(1)目标函数是二次项

(2)限制条件是一次项

凸优化问题只有唯一一个全局极值,可用梯度下降求得

🔸 利用拉格朗日乘子法转换为对偶问题 求解超平面

原问题 写成 拉格朗日函数:

转换为 对偶问题

同时要满足KKT条件(原问题可行、对偶问题可行、互补松弛):

求解对偶问题

  • 拉格朗日函数最小化

    然后把上述结果带回到拉格朗日函数中,得到

  • 最大化 最小拉格朗日函数

    通过序列最小优化SMO求解最优$\alpha^*$,则有:

    “有用的” $a^*>0$,根据KKT的互补松弛条件:

    可知$1-y^{(i)}\left(\left(w^{}\right)^{T} x^{(i)}+b^{}\right)=0$,$(x^{(i)},y^{(i)})$一定是约束边界上的点,记为:$(\tilde{x},\tilde{y})$,因此有:

    所以,SVM的决策函数为:

svm.png

  • 支持向量:满足$w^{T} x+b=1 \quad或\quad w^{T} x+b=-1$ 的点
  • 每个支持向量到超平面的距离:$d=\frac{\left|w^{T} x+b\right|}{|w|}$

  • 多维空间中任意平行的超平面间的距离:$\frac{|d_1-d_2|}{|w|}$

  • 辅助决策边界距离:$2\frac{1}{|w|}$

线性不可分的情况(软间隔)

通常情况下,线性不可分的训练数据有一些特异点,去掉这些特异点后,剩下的大部分的样本点组成的集合是线性可分的。线性不可分意味着某些样本点不能满足间隔大于等于1的条件,样本点落在超平面与边界之间。

因此,需要适当放松限制条件,对于每个训练样本及标签,为每一个样本点设置松弛变量(slack variable)$\delta_{i}$

因此,限制条件改写为:

再加入新的限制条件,防止松弛变量无限大,改造后SVM最优化版本如下:

最小化: $\frac{1}{2}|\omega|^{2}+C \sum_{i=1}^{N} \delta_{i} 或 \frac{1}{2}|\omega|^{2}+C \sum_{i=1}^{N} \delta_{i}^{2}$

限制条件

  1. $\delta_{i} \geq 0 .(i=1 \sim m)$
  2. $y_{i}\left(\omega^{T} X_{i}+b\right) \geq 1-\delta_{i},(i=1 \sim m)$

比例因子C是人为设定的——超参数

低维到高维的映射

把线性不可分转换成线性可分

把特征空间从低维映射到高维,用线性超平面对数据进行分类

对于原始样本空间不是线性可分的情况,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。

核函数的定义

核函数Kernel Function:

假设,$\varphi\left(X\right)$ 是一个将二维向量映射到三维向量的映射:

假设有两个二维向量 $X_{1}=\left[x_{11}, x_{12}\right]^{T} \quad X_{2}=\left[x_{21}, x_{22}\right]^{T}$,根据上述定义,则有:

那么: