机器学习——SVM(Support Vector Machine)支持向量机原理

线性可分数据

我们定义一条直线,,将上图的数据分为蓝、红两部分,则f(x)称为决策边界(Decision Boundary),这是非常简单和高效的,这类可以通过一条直线(或高维超平面)分离的我们称为是线性可分的。

但在上图中,我们可以看到多条线都可以将数据分开,我们要取哪条呢?很显然,我们要取离所有的点尽可能远的线,这样做的理由是输入数据中有可能有噪声点的存在,这些数据不应影响分类的准确性,因此,选择尽可能远的线将会对噪声有更好的抗干扰性。因此,SVM需要找到一条直线距离最小的点的最大值的直线(或超平面),如下所示:

为了得到上图的决策边界,我们需要训练数据,但我们并不需要训练所有的数据,只需训练那些接近对立点的就可以了。在上图中,有一个蓝色填充点和两个红色填充点,我们可以称它们为支持向量(supported vector),穿过支持向量的线我们称为支持平面(supported plane),两个支持平面之间的距离称为间隔(margin)

两个支持平面就可以代表两类数据了,例如,蓝色点可以被表示,红色点可以被表示,其中,w代表权重向量,b代表bias(偏差),x为特征向量,故决策边界可以定义为支持平面中间的线,即为,支持向量到决策边界的距离如下表示:,margin为该距离的两倍,我们需要最大化该margin,我们需要定义一个损失函数L,即:

其中ti代表每类的标签,ti∈[-1,1].

 

非线性可分模型

非线性可分模型通常可以将训练数据(d维)映射到更高维(>d)空间上,使其变为线性可分的模型。

 

以上的概念可能出现的问题就是分类错误的问题,我们不仅要考虑决策边界的最大margin问题,还要考虑分类错误的问题,有时,发现一个更小的margin但会减少分类错误是有可能的。总之,我们需要去修改我们的模型,例如去找到最大的margin但更小的分类错误,优化公式(loss函数)如下:

C代表误分的点距离其正确区域的距离,如下所示:

当然,计算C时需要计算所有的点,但那些未分类错误的点它们的距离是0.

故新的优化函数(loss)为:

关于C的选取,参考如下规则:

C的值很大代表更小的分类错误但更小的margin,反之,C的值很小代表更大的分类错误但跟大的margin。

说明: 
决定分离超平面的只是支持向量起作用,其他点不起作用。
支持向量的点一般很少,所有支持向量由很少的重要样本确定支持向量的点一般很少,所有支持向量由很少的重要样本确定 
当训练的超平面中支持向量过多的时候,得到的超平面可能是不好的

机器学习 十大经典算法

参考链接:

https://docs.opencv.org/3.4.1/d4/db1/tutorial_py_svm_basics.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值