기계 학습 - 알고리즘 - SVM 지원 벡터 머신

SVM 원리 도입

지원 벡터 머신 (  SVM, 지원 Vector의 기계  )

배경

2012 더 불이지만, 다른 시나리오, 응용 알고리즘으로 인해 나중에 12 년 신경 네트워크의 양위로 황제, SVM은 여전히 이해할 필요가 있지만, 일반적으로 SVM을 묻는 인터뷰에서, SVM은 매우이다  고전 효율적인 분류 모델

이 문제를 해결하려면

다음과 같이 표시된 데이터의 양쪽에 세 검정 라인들은 분류 될 수있다

그것의 최선의 결정 테두리 어느 라인으로?

데이터 자체의 특성이 분할이 어려운 경우, 그것을 어떻게 할까?

어떻게 계산 복잡도에? 실용적인 응용 프로그램 수 있습니까?

결정 경계 정의

양쪽 지뢰는 단위를 선택 지뢰 트리거하지 않고 월 경로뿐만 아니라되도록 최대한 넓은 경우 → 작은

도 좁게의 왼쪽, 오른쪽 넓은

그리고 이것은 소위 도로 행진입니다 결정 경계  , 더 많은 지방이 더 나은

다음의 방정식은 예를 유도하는데 이용된다

거리 계산

계산 목적

우리는 문제가 여기 즉 물리적 의미를 해결해야하는 결정의 경계를 이해 한 후, 경계 결정을 계산 거리를 계산하는 것입니다

결정 경계의 폭은 필요의 거리를 계산하는 방법의 첫 번째 선택을 소개하는 가장 가까운 지점으로부터의 거리에 따라 결정된다

수학적 변환의 계산

결정 경계 비행기의 그림자가 있다고 가정하면,이 거리 거리가  비행기를 가리 키도록해야합니다 초평면의  거리를

이 평면에 수직하기 때문에, 자연 그 광고에 대한면 직교

그러나이 거리를 직접 쉽게받을 변환의 어느 정도를 필요로하지 않습니다

여기에서 촬영  초평면 에 두 지점 x`. X``, 이 두 점 벡터를 형성

计算出 xx` 的距离, 然后计算出这个距离在垂直方向到平面的投影即可, 这也是 x 到平面的垂直距离了

公式中的 x` 需要消除掉, 利用 x` 在平面的特性, 因此 将其转换成 -b 即可从而得到最终的距离计算公式

数学补充

wTx+b=0 ? 是从何而来? 

  因为二维空间里面,一条直线的方程可以表示为:Ax+By+C=0

  三维空间里面,平面的方程可以表示为:Ax+By+Cz+D=0。

  依次推广,n维空间的超平面方程可以表示为:Ax1+Bx2+Cx3+Dx4+Ex5+Fx6+....+K=0

因为n维空间对应的是n维坐标系,仅仅用x、y、z几个字母较难表示

所以此处用x1、x2、x3、...、xn来表示n维坐标系,各个维度的系数此处也可以用w1、w2、w3、...、wn来表示

所以n维空间里面的超平面方程可以写成如下形式:w1x1+w2x2+w3x3+w4x4+...+wnxn+b=0。wx相乘可以看作是内积的相乘:

可以将x看作w,y看作x则上面超平面方程就变成了:[w,x]+b = 0 ,即wTx+b=0。所以,样本空间中,任何一个超平面都可以用方程如下方程表示:WTX+b=0。

其中,W=(w1,w2,w3,...,wn)为法向量,b为位移项可以认为是截距,该超平面可以唯一的由此方程决定

SVM 目标函数

数据标签定义

数据集

  

Y 为样本的类别 (标签), X 为每一个样本数据

这里依旧是个二分类的问题将 Y 进行了两个区间的判断

  X 为正例的时候 Y = +1 

  X 为负例的时候 Y = -1 

和回归的时候使用的 0 / 1 不同, 这里使用的是 +1 / -1 

决策方程

在基于之前 y = wTx+b 的情况下多加了一个 Φ 

这里的 Φ 是对 x 做了一个转换, 后面会解释

对于预测结果可以进行简化, 不论 Xi 正例还是负例, yi * y(Xi) > 0 恒成立 

优化目标

通俗解释

找到一个线 ( w, b ) 使得距离该线的最近的点 (雷区) 能够最远

优化目标即是如何让这个距离尽可能靠近最远, 或者足够远

将点到直线的距离化简得

 由于 yi * y(Xi) > 0 , 所以将绝对值展开依旧成立

本来 是恒大于 0 的,  这里使用放缩变换将其用某种手段让他恒大于 1 

然后下面的优化目标中的正好对这里进行求最小值, 恒大于 1 的最小值那最小值自然就是 1 了约分掉了这块内容

由此将目标这样化简成 

目标函数

当前目标

   约束条件 - 任何 w 都需满足   

常规套路

  求解极大值转换成极小值问题  

  - 求 1/w 的最大值就是求 w 的最小值

  -  当然 求 w2 的最小值也是一样的

  - ||w|| 看着碍眼, 总之是正数, 那就用 w2 代替

  - 为了方便后面的求导, 多加个常数项 1/2 方便消去

  - 最终的结果优化为 

如何求解 - 拉格朗日乘子法

直接将我们的式子和约束带进转换即可, 这里多加个一个 α 的对每个 xi 的系数

最终目标函数

SVM 目标函数求解

根据对偶性质 KKT 可以进行一下的推导

KKT   大概意思就是说在拉格朗日乘子法中

先求解最大值然后求解最小值这个过程可以转换成先求解成最小值再求解成最大值

在这儿我们先求解这个函数的极小值, 首先在L(w,b,α)函数中对w,b分别求偏导

由于需要求解极值点,令其偏导等于0

可以看出w与α这个变量有了关系,就是说求出α也就求出了w。  然后继续接下来的求解,将上面求出的两个式子带回原式。

然后接下来求解α的极大值

求解一直以来都是较难的事情, 这里先看一个简单的 SVM 的求解实例参考

简单示例

上面其实已经得出最终的表达式了,下面我们会根据一些具体的点来求解α的值

数据:3个点,其中正例 X1(3,3) ,X2(4,3) ,负例X3(1,1) 如下图所示

分别对α1和α2求偏导,偏导等于0可得: α1=1.5,α2=-1(并不满足约束条件αi >= 0,i=1,2,3

所以这时求出来的α的值是无效的,那这个时候 α 的解应在边界上,也就是说要么 α1=0,要么 α2=0,再代入上式然后求偏导看下

(这儿经过我的计算发现α2似乎等于正的2/13,应该是教程有些小问题,猜测可能是上式由α123化简这儿出了点小问题,但是对于答案似乎影响不大) ,

所以经过计算最小值在 1 = 0.25,α2 = 0,α3 = 0.25) 处取得 

上面的平面方程其实就是代表直线方程,也就是决策边界的方程。

支持向量机名词解释

以上就是我们对 SVM 的一次实际求解过程

注意公式中 

  

可以看出只要 α 为 0 , 则结果一定为 0, 因此 为 0 的点就是无意义的点

在图中展示就是说 x2 所在的点, 也就是不在觉得边界的点, 这些点对我们画出方程是无价值的也就是非支持向量

而这也就是 支持向量机的说法由来, 决策边界的生成是由决策边界上的有价值的点支撑起来的也叫做支持向量

于此原理, 对于结果有影响的点是支持向量, 哪怕加入多少非支持向量, 对结果都不会有意义

软间隔  soft-margin

松弛因子

目标函数

C 趋近很大的时候, 为了满足式子最小, 那就只能要求 松弛因子 ε 越小, 即越严格, 反之越宽容

解法

引入新的参数后的解法

SVM 核变换

低纬不可分问题

假设在低纬度的时候发现很难分, 比如下图二维中是一条非线性的曲线来划分

这时候可以考虑转换到高纬来尝试, 比如转换为下图中三维的中的平面

核变换原理

低纬不可分问题映射到高纬后通过一种变换方式从而实现更直观更效率的划分

原理阐述的简单示例

我们为了一个简单直观的非线性的问题简化, 如果将维度上升到过分大的程度, 就会导致计算量暴增

因此上升到什么样的维度, 以及什么维度又是在可解范围内的程度才是最重要核心的问题

但是还有一个发现就是, 高纬度的内积和低纬度的内积是有一定关系的

先做内积在做映射和先做映射在做内积的结果是一致的

因此实际操作的时候并没有真的去高纬中进行复杂的内积计算

只需要在低纬中计算内积之后也映射到高纬的值即可

核函数

核函数就是在公式中的   的具体操作,  通常使用的是高斯核函数

公式 

体现效果如下图中所示

SVM 总结梳理

支持向量机被说为机器学习中最复杂的算法, 真正理解起来最好还是从物理意义上去着手

物理意义 - 解决的问题是什么 ? 

找出最胖的决策边界, 越宽越好

怎么决定宽度? 

距离计算, 从而引出距离计算公式

优化目标是什么? 

找到一条线 (w, b) 使得离该线的点越远越好 (从而更宽)

进一步的化简得到 

转换成数学表达 - 目标函数 ?

利用放缩,   用 |Y| >= 1   带入到优化目标  中

约掉了右边的式子后就只需要考虑   从而得到了

目标函数

以及一个约束条件  

如何求解目标函数 ? 

第一步 -   将极大值问题先转换成极小值问题,

第二步 -   然后应用 拉格朗日乘子法

  在拉格朗日乘子法中将 求 w,b 的问题转换成了 求 α 的问题

    求 α 的时候利用分别求偏导在求解, 利用到了拉格朗日乘子法中某些特质

    利用支持向量进行比对 (不在最边界的点就是无价值的点了) 从而求出 w, b

这里也点出了支持向量机的名字由来, 所谓支持向量是什么, 意义如何等

特殊问题处理 ?

过耦合问题

引入了松弛因子, 然后利用 C 的大小让计算更加严格或者宽松

再多一个约束条件的情况下, 再次求解也是类似的操作

低纬不可分问题

利用核函数变换为高纬度中去解决问题

需要注意并么有真的在高纬中进行复杂计算

추천

출처www.cnblogs.com/shijieli/p/11906216.html