支持向量机SVM

支持向量机
优点:泛化错误率低,计算开销不大,结果易解释。
缺点:对参数调节和核函数的选择敏感,原始分类器不加修改仅适用于处理二类问题。
适用数据类型:数值型和标称型数据。

6.1 基于最大间隔分隔数据

线性可分:两组数据分隔得足够开,很容易就可以在图中画出一条直线将两组数据点分开。

分隔超平面:将数据集分隔开来的直线称为分隔超平面,也就是分类的决策边界。

构建分类器:如果数据点离决策边界越远,那么其最后的预测结果也就越可信。

我们找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远。这里点到分隔面的距离称为间隔。

6.2 寻找最大间隔

分隔超平面的形式可以写成,其中

点A到分隔超平面的距离,值为

d就是"分类间隔"。其中||w||表示w的二范数,求所有元素的平方和,然后再开方。

例如点到直线的距离距离公式如下:

机器学习实战教程(八):支持向量机原理篇之手撕线性SVM

公式中的直线方程为Ax0+By0+C=0,点P的坐标为(x0,y0)。

我们目的是为了找出一个分类效果好的超平面作为分类器。分类器的好坏的评定依据是间隔W=2d的大小,即间隔W越大,我们认为这个超平面的分类效果越好。此时,求解超平面的问题就变成了求解间隔W最大化的问题。W的最大化也就是d的最大化。

 分类器工作原理:输入数据给分类器会输出一个类别标签,这相当于一个类似于Sigmoid的函数。当u<0时f(u)输出-1,反之则输出+1。

对这个二维平面上的两种点分别进行标记:

  • 红颜色的圆点标记为1,我们人为规定其为正样本;
  • 蓝颜色的五角星标记为-1,我们人为规定其为负样本。

对每个样本点xi加上一个类别标签yi:

优化目标是是d最大化。而支持向量上的样本点有以下特点:

目标函数进一步化简为:

求解d的最大化问题变成了||w||的最小化问题。进而||w||的最小化问题等效于:

这样的等效是为了在进行最优化的过程中对目标函数求导时比较方便,并且不影响最优化问题最后的求解。将最终的目标函数和约束条件放在一起进行描述:

对于这类优化问题,可使用拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束h_i(x)用一个系数与f(x)写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值,可以求出最优值的必要条件,这个条件称为KKT条件。

在拉格朗日优化我们的问题这个道路上,需要进行下面二个步骤:

  • 将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数
  • 使用拉格朗日对偶性,将不易求解的优化问题转化为易求解的优化。

KKT条件是说最优值条件必须满足以下条件:

  • 条件一:经过拉格朗日函数处理之后的新目标函数L(w,b,α)对x求导为零:
  • 条件二:h(x) = 0;
  • 条件三:α*g(x) = 0;

而求解这个对偶性问题,可以分为三个步骤:首先要让L(w,b,α)关于w和b最小化,然后求对α的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。

6.3 SMO算法

SMO表示序列最小优化(Sequential Minimal Optimization)。SMO算法是将大优化问题分解为多个小优化问题来求解的。这些小优化问题往往很容易求解,并且它们进行顺序求解的结果与将它们作为整体来求解的结果是完全一致的。同时,SMO算法的求解时间短很多。
SMO算法的目标是求出一系列α和b,一旦求出了这些α,就很容易计算出权重向量w并得到分隔超平面。
SMO算法的工作原理是:每次循环中选择两个α进行优化处理。一旦找到一对合适的α,那么就增大其中一个同时减小另一个。这里所谓的“合适”就是指两个α必须要符合一定的条件,条件之一就是这两个α必须要在间隔边界之外,而其第二个条件则是这两个α还没有进行过区间化处理或者不在边界上。

SMO函数的伪代码大致如下:

创建一个alpha向量并将其初始化为0向量
当迭代次数小于最大迭代次数时(外循环)
        对数据集中的每个数据向量(内循环):
                如果该数据向量可以被优化:
                        随机选择另外一个数据向量
                        同时优化这两个向量
        如果两个向量都不能被优化,退出内循环

6.4 核函数

在线性不可分的情况下,SVM通过某种事先选择的非线性映射(核函数)将输入变量映到一个高维特征空间,将其变成在高维空间线性可分,在这个高维空间中构造最优分类超平面。经过空间转换之后,我们可以在高维空间中解决线性问题,这也就等价于在低维空间中解决非线性问题。

SVM优化中一个特别好的地方就是,所有的运算都可以写成内积(也称点积)的形式。向量的内积指的是两个向量相乘,得到单个标量或者数值。我们可以把内积运算替换成核函数,而不必做简化处理。将内积替换成核函数的方式被称为核技巧(kernel trick)或者核“变电”。

 径向基函数是SVM中常用的一个核函数。径向基函数是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。这个距离可以是从<0,0>向量或者其他向量开始计算的距离。

高斯核函数:将数据从其特征空间映射到更高维的空间,具体来说这里是映射到一个无穷维的空间。公式如下:

其中,σ是用户自定义的用于确定到达率(reach)或者说函数值跌落到0的速度参数。

6.5 SVM的优缺点

优点

  • 可用于线性/非线性分类,也可以用于回归,泛化错误率低,也就是说具有良好的学习能力,且学到的结果具有很好的推广性。
  • 可以解决小样本情况下的机器学习问题,可以解决高维问题,可以避免神经网络结构选择和局部极小点问题。
  • SVM是最好的现成的分类器,现成是指不加修改可直接使用。并且能够得到较低的错误率,SVM可以对训练集之外的数据点做很好的分类决策。

缺点

  • 对参数调节和和函数的选择敏感。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值