Machine learning - algorithms - SVM support vector machine

SVM principle is introduced

Support vector machine (  SVM, Support the Vector Machine  )

background

2012 is more fiery, but the emperor to abdicate in neural network 12 years later, due to the different scenarios, and application algorithms, SVM still need to understand, but in the interview usually asked to SVM, SVM is a very  classic and efficient classification model

To solve the problem

Shown, three black lines on both sides of the data can be classified as shown below,

Which line as it is the best decision border of it?

If the characteristics of the data itself is difficult to divide, then how to do it?

How to computational complexity? Can practical application?

Decision boundary definition

Minefields on both sides, to select a unit without triggering landmine march route, but also to be as wide as possible a little

To the left on FIG narrower, wider right side

And this is the so-called road march decision boundary  , the more fat the better

The following equations are used to derive this example also

Distance calculation

Calculation purposes

After understanding the decision boundary, the boundary is calculated decisions we have to solve the problem, namely the physical meaning here is to calculate the distance

The width of the decision boundary is determined based on the distance from the nearest point, where the need to introduce the first choice of how to calculate the distance

Mathematical calculation of the conversion

Assuming that the decision boundary is a shadow of the plane, then this distance distance  is required to point the plane hyperplane  distance

Since the perpendicular to this plane, it is natural that any plane perpendicular to a line

But this distance is not directly seek easy and requires a certain degree of conversion

Here taken out  hyperplane two points on x`. X``, these two points form a vector

计算出 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 的大小让计算更加严格或者宽松

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

低纬不可分问题

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

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

Guess you like

Origin www.cnblogs.com/shijieli/p/11906216.html