支持向量机算法_机器学习算法:支持向量机 SVM(一)

一、简介

支持向量机是机器学习算法中的一个非常强大的分类算法,它的目标不仅是分类数据,还会寻找最佳潜在曲线。

比如下面这两组数据,你要做的是找到一条线,将这两组样本分开。划分的方式有很多,但是你认为哪条线更好地划分了这些点呢?

e5ec909090022f81148e9a4f249b7b43.png

如果你选择了右边的直线,恭喜你回答正确。直观上来讲,我们应该尽量使这条线位于两个样本的“中间”,这样该划分超平面对训练样本的局部扰动的“容忍性”最好。简单来讲,支持向量机就是这样工作的。

现在你已经有了基本的概念,下面让我们进一步了解一下。

二、误差最小化

首先我们回顾一下什么叫做分类,分类就是找到一条线来划分这些点,如下图中的黄色线所示。而支持向量机的要求则更高一些,即找到一条黄色的线使得白色虚线的间隔尽可能地大。

b079456c7aa8082ffe58ba4414c6044d.png

上面的例子比较特殊,我们再来看一个稍微复杂一些的例子:

864fc74fe487b4f42f1ebb6554ee0f7a.png

这次我们仍然用黄色的线对样本进行了划分,不同的是,有一些点被错误地进行了分类,即图中用黄色圆圈圈起来的点。

这次我们仍然想要虚线的间隔尽可能地大。通过思考我们发现,我们有两种方式来衡量这个模型。一种是看它错误分类了多少点,另一种是看这两个虚线的间隔到底有多宽。

误分类的点就是用黄色圆圈圈起来的点,我们称之为分类误差;除此之外,我们还希望如之前的图一样,虚线间隔内没有点存在,我们要惩罚这些点,将它作为边际误差。总之,我们得到一个基本的结论:

总误差分类误差边际误差

将此误差最小化,有助于我们学习支持向量机的算法。

三、分类误差

为了构建这个误差函数,我们先来简单回顾一下感知器算法。

假设我们现在有一些点需要我们找到一条完美的直线将他们分开,现在我们有了一条黄色的线 ,其中 和 为向量而 为标量(比如 ),我们希望使用误差函数来惩罚这些被错误分类的点。

d06b17cb1cf231c2dae03c1bd1ec739c.png

如上图所示,我们将红色和蓝色的点分开,发现黄色圆圈圈起来的点是被错误分类的点。我们惩罚的原则就是:被错误分类的点中,离直线越远的点,受到的惩罚越大;相反,如果离直线越近,受到的惩罚则越小

下面我们来计算一下这四个点的误差到底是多少。被错误分类点的误差等于该点到直线的距离,其实就是 的值。

37c4ad780de9700f76d7b6937ebfd747.png

图中我们已经将每个值表示的直线标出。通过观察发现,左边两个蓝色点的误差分别为 1 和 3,而右边红色点的误差分别为 1.5 和 3.5,因此总误差就是 。

现在我们知道了这个模型的误差是 9,然后,我们通过梯度下降法来最小化误差,从而找到理想的 和 来获得可能给出的理想分割,这就是感知器算法。

回顾完感知器算法,现在我们只需做一件同样的事,不同的是加入了支持向量机的算法。

这次,我们将惩罚下边界上方的错误分类的红点,和上边界下方错误分类的蓝点。

035894720c3e9aa792b34d23f5c79d72.png

是的,计算这些错误分类点的误差方法和感知器的计算方法完全一样!

a3f463c5969a1d73b82e6eaeb196eff8.png

同样地,我们看到蓝色区域有四个错误分类的红点,误差是 , 红色区域有四个错误分类的点,误差是 ,因此总误差是 。而这个误差,就是支持向量机的误差。

四、边际误差

我们再来讨论一下间隔的问题。间隔就是两条虚线之间的距离,现在我们想要把间隔转化为误差,这样就能使用梯度下降法将误差最小化。我们将编写一个函数,这个函数可以使得间距增大时,误差减小;而在间距减小时,误差增大,如下图所示。

815e02d3eab7c11d2c475b6e421b25af.gif

这个函数其实很简单,我们只需将两条曲线的函数选择成 和 ,这时它们之间的间隔就是 ,因为我们想要当间隔增大时误差减小,而我们又不想用绝对值来表示,因此误差可以等于 。这个误差就是边际误差。

c688804c100e86ea38a19e94486e3d22.png

这里需要注意一点的是,因为我们之前谈到 是一个向量,因此 。

到这里,我们的支持向量机基本公式已经得到了,即:

意思就是找到一个一个合适的 和 ,使得间隔最大。显然,最大化间隔等价于最小化 。于是上面的式子可以重新改写为

这就是支持向量机(Support Vector Machine,SVM)的基本型,相信你会发现其实并不难。

五、误差函数

我们已经知道了分类误差和边际误差,只需将它们合在一起,就是支持向量机的误差。那我们如何最小化误差呢?只需通过梯度下降法来最小化误差即可。

总结

支持向量机是机器学习算法中很重要的一个算法,而在算法面试中面试官也会经常问到支持向量机的问题。很多情况下,我们是只知其一,不知其二,知道有支持向量机这个模型,谈到公式层面时却无所适从。现在我们知道支持向量机其实就是讲述了一个如何通过改变 和 来使得间距最大而误差最小的故事。了解了基本层面后,我们下次将再来讲讲支持向量机中的核函数问题。

74a554ed128611f85751663c82b1ec2e.png

觉得好看,点亮“在看”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值