SVM-支持向量机算法

 Support Vector Machine

要解决的问题:什么样的决策边界才是最好的呢?支持向量机
特征数据本身如果就很难分,怎么办呢?
计算复杂度怎么样?能实际应用吗?
目标:基于上述问题对SVM进行推导

 

 

 决策边界:选出来离雷区最远的(雷区就是边界上的点,要Large Margin)

 

 

距离的计算

.距离 = 向量(x-x')在平面法向量(W)上的投影

 

把a换成(x-x'),把b换成WT

 

 

 

 数据标签定义

数据集:(X1,Y1)(X2,Y2)…(Xn,Yn)支持向量机

Y为样本的类别:当Xi为正例时候Yi = +1 当Xi为负例时候Yi = -1

决策方程:

 

 

优化的目标

通俗解释:找到一个条线(w和b),使得离该线最近的点(雷区)能够最远

将点到直线的距离化简得:

由于所以将绝对值展开原始依旧成立

 

 

 

 目标函数

 

放缩变换:对于决策方程(w,b)可以通过放缩使得其结果值|Y|>= 1=>

(之前我们认为恒大于0,现在严格了些)

 

优化目标:

由于

那么他的min值就是1

只需要考虑

(目标函数搞定!)

自己的理解:

在决策边界的方向不变的情况下,决策边界无论离雷区(数据集)有多远,X的分布不会变,所以距离决策边界最近的X,永远是那一个

也不肯能无限远离,因为分类后,另外一类的X限制了决策边界原理的距离,

这个公式的目的在于如果分成2类A,B,那么决策边界无限远离B是不可能的,因为决策边界不可能跨越A,

目的在于将AB分开后,用来区分B的边界,无限接近于A,也就是说要一个离B最突出的点最远的分界线,

同理,用来区分A的边界,无限接近于B,也就是说要一个离A最突出的点最远的分界线。

 

 

常规套路:将求解极大值问题转换成极小值问题

1/W的最大值,也就是求W的最小值,也就是求W^2的最小值

如何求解:应用拉格朗日乘子法求解

拉格朗日乘子法:

带约束的优化问题:

 

 原式转换:

我们的式子:

约束条件不要忘:

 

SVM求解

分别对w和b求偏导,分别得到两个条件(由于对偶性质)

对w求偏导:

 

对b求偏导:

 

带入原始:

其中

                 

继续对ɑ求极大值:

条件:

极大值转换成求极小值:

条件:

 

 

 SVM求解实例

数据:3个点,其中正例X1(3,3) ,X2(4,3) ,负例X3(1,1)

求解:

约束条件:

分别对ɑ1和ɑ2求偏导,偏导等于0可得:

并不满足约束条件

所以解应在边界上

α2 = 0,叫做非支持向量,对于边界起作用的点叫做向量,也就是α不是0的点

支持向量:真正发挥作用的数据点,ɑ值不为0的点

 

 

 

 soft-margin

软间隔:有时候数据中有一些噪音点,如果考虑它们咱们的线就不太好了

之前的方法要求要把两类点完全分得开,这个要求有点过于严格了,我们来放松一点!

为了解决该问题,引入松弛因子

 

新的目标函数:

当C趋近于很大时:意味着分类严格不能有错误

当C趋近于很小时:意味着可以有更大的错误容忍

C是我们需要指定的一个参数!

 

 

 

 

 

 

 低维不可分问题

核变换:既然低维的时候不可分,那我给它映射到高维呢?

目标:找到一种变换的方法,也就是

 

 

 所以加上核变换的向量机就可以成为一个非线性的支持向量机了

高斯核函数:

线性核函数:

 

高斯核函数

 

原文地址:https://www.cnblogs.com/Mjerry/p/9751519.html