SVM(上)—听说你喜欢挑战难的

公众号后台回复“图书“,了解更多号主新书内容

 作者:小一

 来源:小一的学习笔记

写在前面的话

大家好,我是小一

摊牌了,摊牌了,竟然有人说前几篇算法都太简单了,分分钟搞定,那你可真是后生可畏

今天开始说SVM,一种略显复杂但分类效果很不错的分类算法。相比而言会略优于前几种算法,而且在实际项目中也比较常用,就是理解起来有点费头发


准备好了吗?

1. 支持向量机理论

支持向量机(Support Vector Machine:SVM)

支持向量机的目的是什么?

利用训练数据集的间隔最大化找到一个最优分离超平面

你可能有两个名词不太懂,间隔?分离超平面?别紧张,没有人刚开始学习SVM的时候就知道这两个东西


先来看个例子,现在有一些人的身高和体重数据,将它们绘制成散点图,是这样的:

如果现在给你一个未知男女的身高和体重,你能分辨出性别吗?

这个简单,我直接将已知的点划分为两部分,这个点落在哪一部分就对应相应的性别

ok,那就可以画一条直线,直线以上是男生,直线以下是女生

问题来了,现在这个是一个二维平面,我们可以画直线,如果是三维的呢?该怎么画?

小时候就学过,一维平面是点,二维平面是线,三维平面是面

对的,那么注意,今天的第一个概念:

超平面是平面的一般化:

  • 在一维的平面中,它是点

  • 在二维的平面中,它是线

  • 在三维的平面中,它是面

  • 在更高的维度中,我们称之为超平面

为了大家更快的适应超平面这种说法,后面的直线、平面都直接叫超平面了

继续刚才的问题,我们刚才是通过一个分离超平面分出了男和女,这个超平面唯一吗?

很明显,并不唯一,这样的超平面有若干个

那么问题来了,既然有若干个,那我肯定要最好的,这里最好的叫最优分离超平面

如何在众多分离超平面中选择一个最优分离超平面?

下面这两个分离超平面,你选哪个?绿色的还是黑色的?

对,当然是黑色的。

黑色的我懂,可是原理是什么?

很简单,原理有两个,分别是:

  • 正确的对训练数据进行分类

  • 对未知数据也能很好的分类

黑色的分离超平面能够对训练数据很好的分类,当新增未知数据时,黑色的分离超平面泛化能力也强于绿色。

深究一下,为什么黑色的要强于绿色?原理又是什么?

其实很简单:最优分离超平面其实是和两侧样本点有关,而且只和这些点有关。

怎么理解这句话呢,我们看张图:

其中当间隔达到最大,两侧样本点的距离相等的超平面为最优分离超平面。

注意,今天的第二个概念:

对应上图,Margin对应的就是最优分离超平面的间隔,此时的间隔达到最大

一般来说,间隔中间是无点区域,里面不会有任何点(理想状态下)

给定一个超平面,我们可以就算出这个超平面与和它最接近的数据点之间的距离。那么间隔(Margin)就是二倍的这个距离

我还是不理解为什么这个分离超平面就是最优分离超平面

那你在看这张图

在这张图里面间隔MarginB小于上张图的MarginA

当出现新的未知点,MarginB分离超平面的泛化能力不如Margin

你可能不理解泛化能力这个词,那换个说法:当出现未知点时,用MarginB的分离超平面去分类,错误率大于MarginA

总结一下

支持向量机是为了通过间隔最大化找到一个最优分离超平面

而之所以叫做支持向量,是因为在决定分离超平面的时候,只有极限位置的那两个点有用,其他点根本没有大作用,因为只要极限位置离得超平面的距离最大,就是最优的分离超平面了。


怎么样,一口气学了这么多,甚至还了解了SVM的深奥意义,是不是有点点小激动?

趁着现在还激动想一个问题:如何确定最大化间隔?

2. 如何确定最大化间隔

如果我们能够确定两个平行超平面,那么两个超平面之间的最大距离就是最大化间隔。

看个图你就都明白了:

左右两个平行超平面将数据完美的分开,我们只需要计算上述两个平行超平面的距离即可。

所以,我们找到最大化间隔:

  • 找到两个平行超平面,可以划分数据集并且两平面之间没有数据点

  • 最大化上述两个超平面


2.1. 确定两个平行超平面

怎么确定两个平行超平面?

我们知道一条直线的数学方程是:y-ax+b=0,而超平面会被定义成类似的形式:

超平面的方程中,加粗的字体w、x表示向量, 表示向量的内积。

这个我觉得应该不用多说了,平面方程公式,默认都懂哈

推广到n维空间,则超平面方程中的w、x分别为:

等等,还有一个问题,如何确保两超平面之间没有数据点?

我们的目的是通过两个平行超平面对数据进行分类,那我们可以这样定义两个超平面:

对于每一个向量xi:满足:

属于类别

或者

属于类别

也就是这张图:

所有的红点都是1类,所有的蓝点都是−1类。

整理一下上面的两个超平面:

属于类别

属于类别

不等式两边同时乘以 yi,-1类的超平面yi=-1,要改变不等式符号,合并后得

ok,记住上面的约束条件。


2.2. 确定间隔

如何求两个平行超平面的间隔呢?

我们可以先做这样一个假设:

  • 是满足约束 的超平面

  • 是满足约束 的超平面

  • 上的一点

则x0到平面h1的垂直距离m就是我们要的间隔。

这个间隔是可以通过计算算出来的,推导还需要一些步骤,直接放结果了就:

其中||w||表示w的二范数,求所有元素的平方和,然后在开方。比如,二维平面下:

可以发现,w 的模越小,间隔m 越大


2.3. 确定目标

我们的间隔最大化,最后就成了这样一个问题:

找到使 最小的

了其中w和b,我们的最优分离超平面就确定了,目的也就达到了


上面的最优超平面问题是一个凸优化问题,可以转换成了拉格朗日的对偶问题,判断是否满足KKT条件,然后求解

上一句话包含的知识是整个SVM的核心,涉及到大量的公式推导。

但是既然是大话系列,那么涉及到推导的东西我们就略过了,你只需要知道它的目的就是为了找出一个最优分离超平面

就假设我们已经解出了最大间隔,找到了最优分离超平面,它是这样的:


ok,那我们的支持向量机的原理就说完了。

除去上面我们对最大间隔的推导计算,剩下的部分其实是不难理解的。

从上面过程,我们可以发现,其实最终分类超平面的确定依赖于部分极限位置的样本点,这叫做支持向量。

由于支持向量在确定分离超平面中起着决定性作用,所有将这类模型叫做支持向量机

留个问题

我们在上面图中的点都是线性可分的,也就是一条线(或一个超平面)可以很容易的分开的

但是实际情况不都是这样,比如有的女生身高比男生高,有的男生体重比女生都轻

像这种存在噪声点分类,应该怎么处理?

思考一下,下节接着说

◆ ◆ ◆  ◆ ◆
麟哥新书已经在京东上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前京东正在举行双12活动,大家可以用相原价5折的价格购买,还是非常划算的:


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

 卧槽!原来爬取B站弹幕这么简单

 厉害了!麟哥新书登顶京东销量排行榜!

 笑死人不偿命的知乎沙雕问题排行榜

 用Python扒出B站那些“惊为天人”的阿婆主!

 你相信逛B站也能学编程吗

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值