【机器学习】今天想跟大家聊聊SVM

Motivation

之前我在自己的简书上写过SVM,可是当时写的只是皮毛(主要是现在忘了O.O),那么现在想再次拾起的原因是什么呢?

  1. 8.2-8.4号在听SMP会议的时候,发现SVM其实还是很常用的(在其他的计算机相关领域)。

  2. 在论文中数据的baseline中,基本很多都是SVM做基线。

  3. 我觉得未来算法的趋势应该是深度学习方法+传统的机器学习方法。这样说的原因在于我了解到了我之前参加的CAIL2018比赛的第一名有一个任务用的就是这两者的结合(一种方法是将深度学习的特征向量作为传统机器学习的输入)。

目前经典的机器学习算法我觉得有两个:SVM和决策树系列。所以目前先从SVM开始整理下,巩固下记忆。

 

简单了解什么是SVM

SVM,Support Vector Machine支持向量机(也被叫做支撑向量机)。曾经因为SVM的出现,淹没了之前的一次深度学习革命。但是现在深度学习找到突破口又一次卷土重来,淹没了SVM,但是在一些和计算机交叉的领域,SVM还是有自己的一席之地,因为,并不是任何任务都能用深度学习来做的,比如一些小数据。SVM既能做分类,也能做回归,目前先从分类说起。

 

SVM提出的缘由

比如有一组数据

我们可以在这两组数据中间任意画一条线作为分割,比如下面的两条线

但是这样会导致线的不确定性,也会导致分类的还不确定性。这样的分类存在局限性,比如有一个测试点在这里

在上述分类情况中,你说它应该属于哪一类呀?当然应该属于蓝色的类别,但是实际上它应该属于红色的类别。像上述的分类情况,没有泛化能力。那么怎么设置分类边界呢?大家应该都能猜出来,就是离这两类边界处的点尽可能的远。如下

使得边界点距离分类线最大,这个方法就是SVM。

 

SVM理论

SVM就是寻找一个最优的决策边界,距离两个类别的最近的样本最远,其中最近的样本点称为支持(支撑)向量:

转化成数学问题,就是使得中间的直线距离两边的直线的间隔(margin)最大(这两边的直线的斜率是一样的),也就是SVM算法就是最大化margin。

确定决策线(分类线)的表达式

线的表达式为Ax1 + Bx2 + C = 0,其中ABC为参数,为了写成矩阵的形式,这里将ABC写为:

w1x1 + w2x2 + b = 0

矩阵形式为

[w1, w2].T * [x1, x2] + b = 0

简写为

W.T * X + b = 0

接下来要用到距离公式,这里先摆出来:

而改完之后的距离公式为:

其中

现在我们知道中间的决策线公式为

现在设置红色点label y=1,蓝色点label y=-1(这样设置y值是为了后续的计算方便,当然取别的值也可以),边界直线到决策线长度为d,那么就有公式:

因为d>0,现在做个变换(分母同除以d):

这里可以看设置W.T / ||W||d 为W.T_d,b / ||W||d 为b_d:

此时可以得出这三条线的公式分别为

而我们看中间的线,右边是0,左右两边同时除以一个常数||W||*d,是不影响这个直线的,所以改为

这个时候,我们可以看出

参数都为W.T_d和b_d,所以我们可以统一替换为W.T和b,就相当于重新命名而已(该W.T和b非之前的W.T和b):

最后再对条件公式做一个变形:

大家应该能看懂,仅仅为了方便计算。

现在我们的优化目标就是最大化距离:

而数据都是在两边线线上和线外,所以 |W.T*X + b| 的结果永远大于等于1,所以优化的目标只有||W||:

也就是

而为了容易求导和计算,改为;

该公式即为目标函数。

最终问题转化为数学公式:

(该公式为数学中常见的有条件的数学优化问题。)


更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值