SVM再次总结 - 2 - 线性可分支持向量机

说明:此篇是作者对“SVM”的第二次总结,因此可以算作对上次总结的查漏补缺以及更进一步的理解,所以很多在第一次总结中已经整理过的内容在本篇中将不再重复,如果你看的有些吃力,那建议你看下我的第一次总结:

http://blog.csdn.net/xueyingxue001/article/details/51261397

如何定位唯一的分隔超平面

如上所示,有无数根线可以把两种样本的完全正确分开,那么谁是最优的?

SVM是这样求的:

1,假设上图中这一个个分隔超平面的方程是: f(x, w),于是第一个是f(x,w1),第二个是f(x,w2),...,第n个是f(x, wn)。

PS:x是所有样本的集合,w是方程的参数,如:wnx= y。当然了,方程可能是ax + b =y的形式,这样的话w就是(a, b)

2,上图所示的那些分隔超平面是可以通过某种算法求出来的,即:所有超平面的方程的参数wn是已知的,于是我们将所有的样本代入这一个个分隔超平面的方程中就可以算所有样本与这一个个超平面的距离。

假设:

1号样本到1号超平面的距离是d11

2号样本到1号超平面的距离是d12

...

n号样本到1号超平面的距离是d1n

于是可以得出所有样本中距离1号超平面最近的点:d1*;

同理得出所有样本距离所有超平面最近的点:d2*,d3*,... ,dn*;

你知道上面的dn*意味着什么吗?

d1*:意味着d1*对应的样本点对1号分隔超平面来说是最“危险”最“难受”的,如果把1号分隔超平面比做人的话他一定回想:“我去,你这孙子离这么近可千万别乱动啊!你一动万一跑到另一侧那我就不能完全正确分类了!”

其他同理。

3,对第二步的结果求最大,即:max(d1*,d2*,d3*,... ,dn*),即:求一个分隔超平面,使得“离他最近的样本到它的距离”比“其他所有分隔超平面与离其最近的样本的距离” 都大。即:这样的分隔超平面是最安全的!而这条分隔超平面就是我们相要的!

       一句话描述上面的过程就是:

通过间隔最大化得到SVM的分隔超平面。

用数学公式描述上面的过程就是:

max_imin_j f(x(j), wi)

即:求出“到所有分隔超平面” 距离最近一个个样本点x(j)后得到一个“距离集合”,然后在该“距离集合”中找到距离最大的那个超平面wi,也就是SVM的最优分隔超平面。

PS:之后会说怎么求,这里只要知道SVM求最优分隔超平面的原理就好了。

线性可分SVM目标函数的推导

实际上刚才已经写出SVM的目标函数了,即:

max_imin_j f(x(j), wi)

当然了,这种程度中看不中用,于是下面给出SVM目标函数的推导。

首要说明:这是针对线性可分支持向量机。

输入数据:

假设给定一个特征空间上的训练数据集

T={(x1,y1 ), (x2 ,y2 )…(xN ,yN)}

其中,xi ∈Rn ,yi ∈{+1,-1},i=1,2,…N。

xi为第i个实例(若n>1, x i 为向量);

yi为xi 的类标记;

当yi =+1时,称xi 为正例;

当yi =-1时,称xi 为负例;

(xi,yi )称为样本点。

求解描述:

1,给定线性可分训练数据集,通过间隔最大化得到分隔超平面:

y(x)= wTφ(x) +b

这里φ(x)是已知的(通过线性回归/Logistics等求出来了N个分隔超平面),而我们的目的是求wT和b。

2,从而有 yi·y(xi) > 0

3,不过有时会有这样的情况:

我求出两个方程ax + b = y,2ax + 2b = 2y

但这明显是一个方程,即:方程的参数w伸缩成若干倍无所谓。

所以有下面的式子:

yi·y(xi)/||w|| = yi·(wTφ(x) +b)/||w||

即:除以w做归一化。

PS:从另一个角度看:y(xi)/||w|| 就是再求样本到分割超平面的距离。

4,于是刚才的max_i min_j f(x(j), wi)就可以表示为:

              这就是SVM的目标函数

不过说实话,上面的目标函数不好求,于是我们要简化简化它。

函数间隔

对于分隔超平面:y(x) = wTφ(x) +b

函数间隔是:wTφ(x) +b

几何间隔

对于分隔超平面:y(x) = wTφ(x) +b

几何间隔是:(wTφ(x) +b) / ||w||

简化目标函数

说上面两个间隔是为了说明这一点:我总可以通过等比例缩放w的方法,使得两类点的函数值都满足|y| ≥1,如下图所示:

即:对于SVM的目标函数:

argmax{(1/||w||)min[yi·(wT·φ(xi)+b)]}

因为|y| ≥1,即:yi·(wT·φ(xi)+b) ≥ 1

所以min[yi·(wT·φ(xi)+b)]  =  1

这样一来,SVM的目标函数就可以简化为:

             


打个比方:

本来有两个样本点x1,x2。它们到分隔超平面的距离分别是d1=5,d2=10。

方法一:我用5,10判断,知道距离最小的样本点是x1。

方法二:我先对距离都除以5,于是距离变成了d1=1,d2=2,然后用1,2这两个距离判断,最后知道距离最小的样本点是x1。

就最终结果来说,上面的方法一和方法二都行吧!

真正说明的话:

对于分隔超平面,假设其方程是5x+10y + 1 = 0(方程1),此时两个样本点x1, x2到它的距离分别是d1=5,d2=10。

方法一:直接用5,10判断,知道距离最小的样本点是x1。

方法二:

1,缩放分隔超平面的系数,使的两个样本到超平面的距离是d1=1,d2=2。

PS:假设缩放系数后超平面的方程是:0.5x + 1y + 0.1 = 0(方程2),这时方程1和方程2是一个方程吧,所以我可以这么缩放,而且不会有任何后遗症。

2,用1,2这两个距离判断,最后知道距离最小的样本点是x1。

就最终结果来说,上面的方法一和方法二是没区别的!

习惯上把求最大转换成求最小,于是上式修改为:

       而这,就是SVM最终的目标函数!!

       是不是好简单!!

使用拉格朗日乘子法求解

对于有约束的求极值问题,就使用拉格朗日乘子法呗,因为这里有个不等式约束,所以要使用KKT条件,从而有下面的式子:

原问题是极小极大问题:

为了求解方便,将其转换成原始问题的对偶问题,即极大极小问题:

PS:这个在我的这个总结里有说明:http://blog.csdn.net/xueyingxue001/article/details/51858098

于是第一步对w,b求偏导后令偏导为0,有如下结果:

结合上述结果作如下推导:

最终得到α的目标式:

但这里是求极大,习惯上将其转换成求极小,转换后如下:

如果求出α的话

如果求出α的话,那代入下面的式子:

求出w和b,这样就得到了分隔超平面:

w*φ(x) + b* = 0

分类决策函数也就出来了:

f(x)= sign(w*φ(x) + b*)

于是下面我们的主要问题是如何求α。

求α

方法是SMO,手算的话就是下面这样了。不过这个虽然是手算,但有个很重要的结论,所以还是建议看下。(截图来自小象学院的邹博老师)

一个重要的结论

话说,上面这个例子很简单,但结论很有趣。

上面这个分隔超平面求出时:点x1和x3的α1和α3不等于0,点x2的α2等于0,这说明什么?

这说明:α=0的那个(些)样本点不参与w*和b*的构架,即:分隔超平面的构建,即:α≠0的样本点是支持向量!

时间: 2024-08-26 13:39:31

SVM再次总结 - 2 - 线性可分支持向量机的相关文章

线性可分支持向量机与软间隔最大化--SVM

线性可分支持向量机与软间隔最大化--SVM 给定线性可分的数据集 假设输入空间(特征向量)为,输出空间为. 输入 表示实例的特征向量,对应于输入空间的点: 输出 表示示例的类别. 我们说可以通过间隔最大化或者等价的求出相应的凸二次规划问题得到的分离超平面 以及决策函数: 但是,上述的解决方法对于下面的数据却不是很友好, 例如,下图中黄色的点不满足间隔大于等于1的条件 这样的数据集不是线性可分的, 但是去除少量的异常点之后,剩下的点都是线性可分的, 因此, 我们称这样的数据集是近似线性可分的. 对

【机器学习基础】线性可分支持向量机

引言 接下里的一系列有关机器学习的博文,我将具体的介绍常用的算法,并且希望在这个过程中尽可能地结合实际应用更加深入的理解其精髓,希望所付出的努力能得到应有的回报. 接下来的有关机器学习基础博文主要根据机器学习技法课程的学习,围绕特征转换(feature transforms)这个主要工具,从以下三个方向进行探讨: 如果现在有很多特征转换可以使用的时候,我们该如何运用这些特征转换,如何控制特征转换中的复杂度的问题,从这个角度刺激了支持向量机(Support Vector Machine)算法的发展

支持向量机(二)线性可分支持向量机与硬间隔最大化

本文原创如需转载请注明出处 阅读目录一.什么是函数间隔? 二.什么是几何间隔? 三.函数间隔与几何间隔的关系? 四.硬间隔最大化 五.学习的对偶算法 一.函数间隔 在图A,B,C三点,A离超平面是最远的,所以A被分类错误的可能性是最小的,相反C离超平面的距离是最近的,所以C被分类错误的可能性是最大的,这很好理解.那么我们就可以用“一个点距离超平面的远近”来表示分类预测的确信程度 因此我们只需要寻找一个超平面离所有边缘点都最远. a.我们用的绝对值表示点x与超平面的距离 b.对于样本点x来说,y是

线性可分支持向量机与软间隔最大化

原文地址:https://www.cnblogs.com/HITSZ/p/8810461.html

SVM明确的解释1__ 线性可分问题

笔者:liangdas 出处:简单点儿,通俗点儿,机器学习    http://blog.csdn.net/liangdas/article/details/44251469 引言: 1995年Cortes和Vapnik于首先提出了支持向量机(Support Vector Machine).因为其可以适应小样本的分类.分类速度快等特点,性能不差于人工神经网络,所以在这之后,人们将SVM应用于各个领域.大量使用SVM模型的论文不断涌现,包含国内和国外. 可是.直到如今,非常少能见到对在一个能对SV

支持向量机原理(三)线性不可分支持向量机与核函数

支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理(待填坑) 支持向量机原理(五)线性支持回归(待填坑) 在前面两篇我们讲到了线性可分SVM的硬间隔最大化和软间隔最大化的算法,它们对线性可分的数据有很好的处理,但是对完全线性不可分的数据没有办法.本文我们就来探讨SVM如何处理线性不可分的数据,重点讲述核函数在SVM中处理线性不可分数据的作用. 1. 回顾多项式回归 在线

线性可分 与线性不可分

http://blog.csdn.net/u013300875/article/details/44081067 很多机器学习分类算法,比如支持向量机(svm),假设数据是要线性可分. 如果数据不是线性可分的,我们就必须要采用一些特殊的方法,比如svm的核技巧把数据转换到更高的维度上,在那个高维空间上数据可能会变得线性可分. 那么,我们如何判断数据是不是线性可分的? 最简单的情况是数据向量是一维二维或者三维的,我们可以把图像画出来,直观上就能看出来. 比如H?vard Geithus网友的图,非

基于SVM和SMO的线性分类器

实验介绍 一般来说,线性可分的训练数据的分界超平面往往并不唯一,但不同的超平面对于测试的识别效果却仍有差别.SVM是通过使超平面在每一个方向上与每一类各自最近的店距离相同从而达到最优线性分类效果.除此之外,SVM在求解超平面的过程中,还能够通过构造核函数使得非线性可分的数据变得线性可分. 在用SVM法构造出目标函数(其中m为样本数) 和限制条件 后,可以通过SMO法求解. SMO法求解多变量目标函数的思想是,只将目标函数中的两个变量作为输入变量,而将其余的所有变量暂时看作参变量,再用梯度下降法或

Matlab生成二类线性可分数据

%% 生成二类线性可分数据 function [feature, category]=generate_sample(step,error) aa=3; %斜率 bb=3; %截距 b1=1; rr =error; s=step; x1(:,1) = -1:s:1; n = length(x1(:,1)); x1(:,2) = aa.*x1(:,1) + bb + b1 + rr*abs(randn(n,1)); y1 = -ones(n,1); x2(:,1) = -1:s:1; x2(:,2