超详细SVM(支持向量机)知识点

摘要:
为什么SVM使用区间最大化:当训练数据是线性可分离的时,有无限个分离超平面可以正确地分离两种类型的数据。线性可分离支持向量机利用最大间隔获得最优分离超平面,此时解是唯一的。支持向量机的参数(w;b)仅由支持向量确定,并且独立于其他样本。SVM没有处理缺失值的策略。SVM期望样本在特征空间中是线性可分离的,因此特征空间的质量对SVM的性能非常重要。13、 SVM的优点和缺点:优点:因为S

原地址:https://zhuanlan.zhihu.com/p/76946313

一. 简单概括一下SVM:

SVM 是一种二类分类模型。它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据得到高效的二分类,具体来讲,有三种情况(不加核函数的话就是个线性模型,加了之后才会升级为一个非线性模型):

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
  • 当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
  • 当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

 

二. SVM 为什么采用间隔最大化(与感知机的区别):

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。

 

三. SVM的目标(硬间隔):

有两个目标:第一个是使间隔最大化,第二个是使样本正确分类,由此推出目标函数:

[公式]

[公式]

稍微解释一下,w是超平面参数,目标一是从点到面的距离公式化简来的,具体不展开,目标二就相当于感知机,只是把大于等于0进行缩放变成了大于等于1,为了后面的推导方便。有了两个目标,写在一起,就变成了svm的终极目标:

[公式]

 

四. 求解目标(硬间隔):

从上面的公式看出,这是一个有约束条件的最优化问题,用拉格朗日函数来解决。

上式的拉格朗日函数为:

[公式]

在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:

[公式]

先求内部最小值,对 [公式] 和 [公式] 求偏导并令其等于 [公式] 可得:

[公式]

将其代入到上式中去可得到

[公式]

此时需要求解 [公式] ,利用SMO(序列最小优化)算法:

SMO算法的基本思路是每次选择两个变量[公式][公式],选取的两个变量所对应的样本之间间隔要尽可能大,因为这样更新会带给目标函数值更大的变化。SMO算法之所以高效,是因为仅优化两个参数的过程实际上仅有一个约束条件,其中一个可由另一个表示,这样的二次规划问题具有闭式解。

 

五. 软间隔:

不管直接在原特征空间,还是在映射的高维空间,我们都假设样本是线性可分的。虽然理论上我们总能找到一个高维映射使数据线性可分,但在实际任务中,寻找一个合适的核函数核很困难。此外,由于数据通常有噪声存在,一味追求数据线性可分可能会使模型陷入过拟合,因此,我们放宽对样本的要求,允许少量样本分类错误。这样的想法就意味着对目标函数的改变,之前推导的目标函数里不允许任何错误,并且让间隔最大,现在给之前的目标函数加上一个误差,就相当于允许原先的目标出错,引入松弛变量 [公式] ,公式变为:

[公式]

那么这个松弛变量怎么计算呢,最开始试图用0,1损失去计算,但0,1损失函数并不连续,求最值时求导的时候不好求,所以引入合页损失(hinge loss):

[公式]

函数图张这样:

超详细SVM(支持向量机)知识点第17张

理解起来就是,原先制约条件是保证所有样本分类正确, [公式] ,现在出现错误的时候,一定是这个式子不被满足了,即 [公式] ,衡量一下错了多少呢?因为左边一定小于1,那就跟1比较,因为1是边界,所以用1减去 [公式] 来衡量错误了多少,所以目标变为(正确分类的话损失为0,错误的话付出代价):

[公式]

但这个代价需要一个控制的因子,引入C>0,惩罚参数,即:

[公式]

可以想象,C越大说明把错误放的越大,说明对错误的容忍度就小,反之亦然。当C无穷大时,就变成一点错误都不能容忍,即变成硬间隔。实际应用时我们要合理选取C,C越小越容易欠拟合,C越大越容易过拟合。

所以软间隔的目标函数为:

[公式]

其中:

[公式]

六. 软间隔求解:

与硬间隔类似:

上式的拉格朗日函数为:

[公式]

在满足Slater定理的时候,且过程满足KKT条件的时候,原问题转换成对偶问题:

[公式]

先求内部最小值,对 [公式] , [公式] 和 [公式] 求偏导并令其等于 [公式] 可得:

[公式]

将其代入到上式中去可得到,注意 [公式] 被消掉了:

[公式]

此时需要求解 [公式] ,同样利用SMO(序列最小优化)算法。

 

七. 核函数:

为什么要引入核函数:

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。而引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只需要知道其核函数。核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中通过核函数 K 计算的结果。一方面数据变成了高维空间中线性可分的数据,另一方面不需要求解具体的映射函数,只需要给定具体的核函数即可,这样使得求解的难度大大降低。

用自己的话说就是,在SVM不论是硬间隔还是软间隔在计算过程中,都有X转置点积X,若X的维度低一点还好算,但当我们想把X从低维映射到高维的时候(让数据变得线性可分时),这一步计算很困难,等于说在计算时,需要先计算把X映射到高维的的ϕ(x),再计算ϕ(x1)和ϕ(x2)的点积,这一步计算起来开销很大,难度也很大,此时引入核函数,这两步的计算便成了一步计算,即只需把两个x带入核函数,计算核函数,举个列子一目了然(图片来自:从零推导支持向量机):

超详细SVM(支持向量机)知识点第35张

 

个人对核函数的理解:核函数就是一个函数,接收两个变量,这两个变量是在低维空间中的变量,而核函数求的值等于将两个低维空间中的向量映射到高维空间后的内积。

 

八. 如何确定一个函数是核函数:

验证正定核啥的,咱也不太懂,给出:

[公式],[公式]是定义在[公式]上的对称函数,如果对任意的[公式][公式]对应的Gram矩阵[公式]是半正定矩阵,则[公式]是正定核

所以不懂,就用人家确定好的常见核函数及其优缺点:

超详细SVM(支持向量机)知识点第43张

 

九. 如何选择核函数:

  • 当特征维数 d 超过样本数 m 时 (文本分类问题通常是这种情况), 使用线性核;
  • 当特征维数 d 比较小. 样本数 m 中等时, 使用RBF核;
  • 当特征维数 d 比较小. 样本数 m 特别大时, 支持向量机性能通常不如深度神经网络

 

十. 关于支持向量的问题:

1.先说硬间隔:

先看KKT条件

超详细SVM(支持向量机)知识点第44张

支持向量,对偶变量 αi > 0 对应的样本;

  • 线性支持向量机中, 支持向量是距离划分超平面最近的样本, 落在最大间隔边界上。

超详细SVM(支持向量机)知识点第45张

  • 支持向量机的参数 (w; b) 仅由支持向量决定, 与其他样本无关。

超详细SVM(支持向量机)知识点第46张

 

2. 再说软间隔:

先看kkt条件:

超详细SVM(支持向量机)知识点第47张

经过SMO后,求得 [公式] ,[公式] 。

对于任意样本[公式]

[公式],此样本点不是支持向量,该样本对模型没有任何的作用
[公式],此样本是一个支持向量(同硬间隔)

若满足[公式],进一步地,

  • [公式], 则[公式],即刚好[公式],样本恰好在最大间隔边界上
  • [公式],有[公式],此时若[公式]则该样本落在最大间隔内部
  • [公式]则该样本落在最大间隔内部(不属于自己的另一部分)即被错误分类

如图:

超详细SVM(支持向量机)知识点第61张

 

十一. 谈谈SVM的损失函数:

此处说的是软间隔:

先看软间隔的基本型形式:

[公式]

稍微做一点变化:

[公式]

这样写是为了符合标准的损失函数+正则化的样子,其中, 第一项称为经验风险, 度量了模型对训练数据的拟合程度; 第二项称为结构风险, 也称为正则化项, 度量 了模型自身的复杂度. 正则化项削减了假设空间, 从而 降低过拟合风险. λ 是个可调节的超参数, 用于权衡经验风险和结构风险.

其中:

[公式]

[公式]

这样的话给上式乘以mc,就会变成上上式了。

 

十二. 为什么SVM对缺失数据敏感?

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

 

十三. SVM的优缺点:

优点:

  1. 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
  2. 不仅适用于线性线性问题还适用于非线性问题(用核技巧)。
  3. 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。
  4. 理论基础比较完善(例如神经网络就更像一个黑盒子)。

缺点:

  1. 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)
  2. 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)

 

免责声明:文章转载自《超详细SVM(支持向量机)知识点》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux(Red hat)无网离线安装TensorFlowisequal 和startswith 使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++ 常见崩溃问题分析

一、前言 从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来的经验,以期通过自己的经历为他人和自己带来福祉:写出更高质量的程序; 由于 C 和 C++ 这两种语言血缘非常近,文本亦对 C 编程语言有借鉴作用; 二、C+...

线性支持向量机 (3)

线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为这时上述方法中的不等式约束并不能都成立,因此这时候需要将硬间隔最大化,使其变成软间隔最大化。 假定给定特征空间上的训练数据集:T={(x1,y1),(x2,y2),...(xn,yn)},xi为第i个特征向量,yi为xi的类标记,一般情况下,线性不可分的数据主要在于存在部分特异点,除去这...

《Gamma校正》

原文地址:https://learnopengl-cn.github.io/05%20Advanced%20Lighting/02%20Gamma%20Correction/ 原文 Gamma Correction 作者 JoeyDeVries 翻译 Django 校对 暂无 当我们计算出场景中所有像素的最终颜色以后,我们就必须把它...

halcon算子

halcon的算子列表 Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训练数据上。 2.classify_class_gmm 功能:通过一个高斯混合模型来计算一个特征向量的类。 3. clear_all_...

也谈同步异步I/O

也谈同步异步I/O [转自: http://www.smithfox.com/?e=191 ] I/O Model 是一个很大的话题, 也是一个实践性很强的事情, 网上有各种说法和资料, 我们必须用辩证的态度去看待(包括本Blog :) ), 因为有的信息是过时的, 有些则可能是未经实践的片面的理解. 为避免走题(走到 高并发问题 上去了), 本次讨论作了...

数据挖掘中分类算法小结_数据分析师

数据挖掘中分类算法小结_数据分析师 数据仓库,数据库或者其它信息库中隐藏着许多可以为商业、科研等活动的决策提供所需要的知识。分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型。分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )...