支持向量机(SVM)常见问题

支持向量机(SVM)常见问题,第1张

SVM是一种二分类模型。它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。(间隔最大化是它的独特之处),通过该超平面实现对未知样本集的分类。

意义:原始样本空间中可能不存在这样可以将样本正确分为两类的超平面,但是我们知道如果原始空间的维数是有限的,也就是说属性数是有限的,则一定存在一个高维特征空间能够将样本划分。SVM通过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上本身无法线性可分的数据分开。核函数的真正意义是做到了没有真正映射到高维空间却达到了映射的作用,即减少了大量的映射计算。

选择:

利用专家先验知识选定核函数,例如已经知道问题是线性可分的,就可以使用线性核,不必选用非线性核。

如果特征的数量大到和样本数量差不多,则选用线性核函数SVM或LR。

如果特征的数量小,样本的数量正常,则选用高斯核函数SVM。

如果特征的数量小,样本数量很多,由于求解最优化问题的时候,目标函数涉及两两样本计算内积,使用高斯核明显计算量会大于线性核,所以手动添加一些特征,使得线性可分,然后可以用LR或者线性核的SVM;

利用交叉验证,试用不同的核函数,误差最小的即为效果最好的核函数。

混合核函数方法,将不同的核函数结合起来。

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

增、删非支持向量样本对模型没有影响;

支持向量样本集具有一定的鲁棒性;

有些成功的应用中,SVM 方法对核的选取不敏感

噪声数量太多

噪声以新的分布形式出现,与原先样本集的噪声分布表现的相当不同。此时噪声也有大概率落在最大分类间隔中间,从而成为支持向量,大大影响模型。

所以我们常说的鲁棒性其实是主要是体现在对Outlier(异常点、离群点)上。

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM没有处理缺失值的策略(决策树有)。而SVM希望样本在特征空间中线性可分,若存在缺失值它们在该特征维度很难正确的分类(例如SVM要度量距离(distance measurement),高斯核,那么缺失值处理不当就会导致效果很差),所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

SVM的空间消耗主要是在存储训练样本和核矩阵,由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的内存和运算时间。如果数据量很大,SVM的训练时间就会比较长,所以SVM在大数据的使用中比较受限。

过拟合是什么就不再解释了。SVM其实是一个自带L2正则项的分类器。SVM防止过拟合的主要技巧就在于调整软间隔松弛变量的惩罚因子C。C越大表明越不能容忍错分,当无穷大时则退化为硬间隔分类器。合适的C大小可以照顾到整体数据而不是被一个Outlier给带偏整个判决平面。至于C大小的具体调参通常可以采用交叉验证来获得。每个松弛变量对应的惩罚因子可以不一样。

一般情况下,低偏差,高方差,即遇到过拟合时,减小C;高偏差,低方差,即遇到欠拟合时,增大C。

样本偏斜是指数据集中正负类样本数量不均,比如正类样本有10000个,负类样本只有100个,这就可能使得超平面被“推向”负类(因为负类数量少,分布得不够广),影响结果的准确性。

对于样本偏斜(样本不平衡)的情况,在各种机器学习方法中,我们有针对样本的通用处理办法:如上(下)采样,数据合成,加权等。

仅在SVM中,我们可以通过为正负类样本设置不同的惩罚因子来解决样本偏斜的问题。具体做法是为负类设置大一点的惩罚因子,因为负类本来就少,不能再分错了,然后正负类的惩罚因子遵循一定的比例,比如正负类数量比为100:1,则惩罚因子的比例直接就定为1:100,具体值要通过实验确定。

优点:

非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;

对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;

支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量;

SVM 的最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

小样本集上分类效果通常比较好。

少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本、“剔除”大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒”性。这种“鲁棒”性主要体现在:

①增、删非支持向量样本对模型没有影响;

②支持向量样本集具有一定的鲁棒性;

③有些成功的应用中,SVM 方法对核的选取不敏感

SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的“转导推理”,大大简化了通常的分类和回归等问题。

缺点:

SVM算法对大规模训练样本难以实施。由于SVM是借助二次规划来求解支持向量,而求解二次规划将涉及m阶矩阵的计算(m为样本的个数),当m数目很大时该矩阵的存储和计算将耗费大量的机器内存和运算时间(上面有讲)。

用SVM解决多分类问题存在困难。传统的SVM就是解决二分类问题的,上面有介绍不少解决多分类问题的SVM技巧,不过各种方法都一定程度上的缺陷。

对缺失值敏感,核函数的选择与调参比较复杂。

答:使用ROC曲线。Roc曲线下的面积,介于01和1之间。AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面。Auc作为数值可以直观的评价分类器的好坏,值越大越好,随机情况大概是05,所以一般不错的分类器AUC至少要大于05。

选择ROC和ROC下曲线面积是因为分类问题经常会碰到正负样本不均衡的问题,此时准确率和召回率不能有效评价分类器的性能,而ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。

答:大值特征会掩盖小值特征(内积计算)。高斯核会计算向量间的距离,也会产生同样的问题;多项式核会引起数值问题。影响求解的速度。数据规范化后,会丢失一些信息。预测的时候,也要进行规范化

答:1)训练速度:线性核只需要调节惩罚因子一个参数,所以速度快;多项式核参数多,难调;径向基核函数还需要调节γ,需要计算e的幂,所以训练速度变慢。调参一般使用交叉验证,所以速度会慢

2)训练结果:线性核的得到的权重w可以反映出特征的重要性,从而进行特征选择;多项式核的结果更加直观,解释性强;径向基核得到权重是无法解释的。

3)适应的数据:线性核:样本数量远小于特征数量(n<<m)此时不需要映射到高维,或者样本数量与特征数量都很大此时主要考虑训练速度;径向基核:样本数量远大于特征数量(n>>m)

答:如果σ选得很大的话,高次特征上的权重实际上衰减得非常快,使用泰勒展开就可以发现,当很大的时候,泰勒展开的高次项的系数会变小得很快,所以实际上相当于一个低维的子空间;

如果σ选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题,因为此时泰勒展开式中有效的项将变得非常多,甚至无穷多,那么就相当于映射到了一个无穷维的空间,任意数据都将变得线性可分。

相同

第一,LR和SVM都是分类算法。

第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。

第三,LR和SVM都是监督学习算法。

第四,LR和SVM都是判别模型。

第五,LR和SVM都有很好的数学理论支撑。

不同

第一,loss function不同。

第二,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。

第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​

第四,​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。一个计算概率,一个计算距离!​

第五,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项,SVM的目标函数里居然自带正则项!!!再看一下上面提到过的SVM目标函数:

我们再来看看,所谓out lier,是怎么产生的,无非有两种情况,一种就是这个样本的标签y搞错了,一种就是没搞错,但这个样本是一个个例,不具备统计特性。

不论对于哪一种情况,svm会在f将这个out lier预测的比较正确时,就停止,不会一直优化对out lier的预测,因为没有什么太大意义了。而lr则不同,它会继续要求f对这个out lier的预测进行优化,并且永不停止,显然,这样的优化很可能会削弱f的泛化性能,因为没有必要死磕out lier 。

答案就是SVM!!!

作 者: Wang Shuyang

     a bachelor's degree candidate

导 语 :相信有很多刚入坑机器学习的小伙伴会和我一样,感觉 SVM 是一道劝退的坎儿,而消除恐惧的最好办法就是微笑着面对它,本篇文章中我会用朴实的“人话”帮助大家迈过这道坎!

本文成文思路如下:

1SVM原始模型构建

2对偶形式的推导

3求解的方法

4软间隔SVM及核方法

5SVM优缺点及应用

首先,让我们来对SVM产生一个直观的认识: 支持向量机(Support Vector Machine,SVM) ,二类分类器,它最终能告诉你一个东西是属于A还是属于B。在由样本点构成的向量空间内,SVM通过找到一个可以将两类数据正确分隔在两侧的划分超平面,达到对数据分类及预测的效果。而这个超平面是通过支持向量确定的,机的意思呢就是算法,故支持向量机就是通过支持向量确定划分超平面,从而做到分类及预测的算法。

SVM由线性分类开始,所以我们首先来了解一下什么是线性可分。简单来说,在二维空间上,两类点能够被一条 直线 完全分开则叫做线性可分。如下图左边是线性不可分的,而右边即为线性可分。

数学上我们可以表述为:对于 n 维欧氏空间中的两个点集 和 ,若存在 n 维向量 和实数 ,使得: 满足 ,而 满足 ,则称 和 线性可分。

给定线性可分的训练样本集 , ,线性分类器将基于训练样本 在二维空间中找到一个超平面来正确划分两类样本。显然,满足条件的超平面有很多,而我们旨在找到鲁棒性最好的。

首先,我们要明确该模型中 “距离” 的概念。由于划分超平面并不确定,所以我们需要比较同一个点到不同超平面的距离,为了使之具有可比性,我们使用 欧式几何距离

相信大家不陌生的是,一个二维空间点 到直线 的距离公式为:

而扩展到 n 维空间后,点 到超平面 的距离公式为: ,其中

既然我们要找出与两类数据间隔最大的划分超平面,很直观地就会考虑从两类数据最靠近的地方下手,因为它们各自最边缘位置的点才有可能成为最靠近划分超平面的那几个点,而其他点对确定超平面的最终位置是起不了作用的,所以我们认为是这些边缘点支持了超平面的确立。而在数学里点又可以叫向量,比如二维点 (x, y) 就可以看成是一个二维向量,同理 n 维点就是一个 n 维向量,所以我们将这些有用的边缘点称为 “支持向量”(support vector)

如图2所示,标红的点就是支持向量,它们确定出了两条虚线,我们称之为 “支撑超平面” ,并将它们之间的距离称为 “间隔”(margin) ,用希腊字母 表示,而它们“正中间”的位置就是我们要找的最优划分超平面的位置。显然, 间隔 越大我们的划分超平面鲁棒性就越好。所以在开始推导SVM的原始公式之前,请在脑海里跟我默念三遍SVM的核心思想 —— “ 最大化间隔!”

假设超平面 能将训练样本 正确分类,那么任一数据点 到该超平面的距离为: 显然 ,否则超平面变为 ,失去意义。

考虑到此式中含有绝对值会对后续数学计算带来不便,所以我们利用数据点自带的标签 去绝对值。结合111中讲过的线性可分的数学定义可知:

所以任一数据点到超平面的距离可表示为: 则最接近超平面的距离为: 调整平面位置,找到最大距离: 则最大间隔为: 至此,我们已经将问题用数学语言表述出来了,即要找到一组使得 最大的 确立最优划分超平面,但形式上任较为复杂。

我们知道,对于二维空间中的一条直线 ,等比例地放缩 是不影响它的位置的,比如 仍代表同一条直线。

扩展到 n 维空间中,等比例地放缩 也是不影响解平面 位置的。又已知 (超平面外一点与之距离大于 得出),所以我们不妨令 表达式中的 ,则问题简化为,求: 显然,最大化 等价于最小化 ,为了便于求导,我们继续将问题转化为,求: 至此,我们便得到了SVM的基本型。

介绍了这么多,但构建出来的模型到底能不能用呢?接下来,我们就从理论上验证它的可行性。

定理 :若训练数据集 线性可分,则可将 中的样本点完全正确分开的最大间隔划分超平面 存在且唯一

证明

(1)存在性

由于训练数据集线性可分,又目标函数存在下界,所以必存在最优解,由此得知最大间隔划分超平面的存在性。

(2)唯一性

首先证明最优解中 的唯一性。假设存在两个最优解 和 ,由目标函数的形式可知必有 ,其中 是一个常数。令 ,则 必然也是一个可行解,试想两个可正确划分样本点的超平面中间夹的一个超平面必然也可以正确划分样本点。但由于 不一定是最优解,则有 (中间那个“ ”关系由 “三角形两边之和大于第三边” 拓展到 n 维得到)。

由上式可得, ,从而有 , (想象若强行令三角形两边之和等于第三边,则三条线段将会共线)。若 ,则 ,与 是可行解相矛盾;因此必有 ,则 , 的唯一性得证。

接下来证明 的唯一性。假设存在两个最优解 和 ,不妨设 和 对应的 值都为 ,且它们分别是两个最优解的 支撑超平面 上的点,满足与自己对应的划分超平面距离为 ,即满足 同时与另一个划分超平面距离大于等于 ,即 整理得出 所以 带入第一对等式方程即可得 ,则 的唯一性得证。

至此,我们得知SVM基本型的最优解存在且唯一。

线性可分支持向量机——最大间隔法(maximum margin method)

输入 :线性可分训练数据集 ,

      其中 , , ;

输出 :最大间隔划分超平面和分类决策函数;

(1)构造并求解约束最优化问题:     求得最优解 ;

(2)由此得到划分超平面:     分类决策函数:

首先顺带一提,上面的基本型是一个凸二次规划问题,可以直接用现成的优化计算包求解。但若利用“对偶问题”来求解会更高效,所以我们来推导SVM的对偶形式。

拉格朗日函数是 拉格朗日乘子法 的核心组成部分,此法思想为:将 有约束 优化问题从形式上转化为等价的 无约束 优化问题。(建议对此法陌生的同学进去看看图文并茂的讲解)

优化问题存在很多形式,比如目标函数有求最大值的,也有求最小值的;约束条件有用大于式表示的,也有用小于式的。而上面说到凸优化问题具有 “局部最优值必定是全局最优值” 这一良好性质,所以我们可以通过移项将SVM基本型写成凸优化问题的标准形式: SVM原始形式: 只含有不等式约束,将其改写成: 则其拉格朗日函数为: 接下来到了关键的一步,所以我们需要再明确一遍,将问题改写成拉格朗日函数仅仅只是从形式上改变它,而实质上必须是等价的。那么接下来我要说明以下两个问题是等价的:

① 求 ,在 这个条件下;

② 求 ,在 这个条件下;

从问题②入手,当它满足自身约束条件时,拉格朗日函数 表达式中的累加项内容为非负常数 和 的乘积,那么欲求其最大值必须满足 ,否则调整 可以达到无穷大,失去意义,所以我们发现问题②是自带问题①的约束条件的(这里希望读者可以从中体会原始规定不等式约束的拉格朗日乘子 的巧妙);

接下来我们会注意到, 作为一个非正项,其最大值就是 ,所以求 的值就是求 的值。至此,我们发现问题②是与问题①等价的。

所以我们可以将原问题做如下转变:

这时我们再用上凸优化问题的强对偶性,即不管局部还是全局都只有同一个最优解,可将极小极大的求解顺序换成求极大极小以便于运算:

前面点开了 朗格朗日乘子法 这个链接的同学可能会发现,其中介绍的是仅含有等式约束的优化问题。实际上此法的原始形式中就只包含等式约束,而为了将其泛化到可求带有不等式约束的优化问题,我们引入 KKT条件

首先来看不等式约束优化问题最简单的形式:

其对应的拉格朗日函数为: 我们利用图形来对其产生一个直观的认识:

图中画出了目标函数 的等高线和约束区域 ,我们的可行解(相当于局部最优解,在凸优化中即必为最优解)需落在约束区域内,且最接近 的 “中心”,即无约束解。至于无约束解和约束区域的相对位置,有以下两种可能:

此时,可行解 在 内取到无约束解,必然满足 ,相当于失去这一约束,即 中的拉格朗日乘子 取为 。

此时,可行解 必然落在约束区域的边界上,即满足 。至此我们可以得到一个 重要的结论 (记为 “结论 ” ),即无论哪种情况下都有: 接着继续考虑可行解 落在边界上的位置,为了尽量靠近无约束解,直观上我们就可以看出,必然要取无约束解与约束区域中心的连线交于边界上的那一点。从函数梯度方面来考虑的话,目标函数的负梯度方向(下图中蓝色小箭头 )应远离约束区域朝向无约束解,即我们要找到目标函数的负梯度方向与约束函数的梯度方向( )相同的那一点: 也即:

这里我想举一个例子帮助大家理解:假设山坡上有一只被圈养的小羊,它想去山顶看看,但不幸的是有一圈栅栏限制了它的活动范围。所以它只能沿着栅栏走到尽可能靠近山顶的位置,然后望着山顶咩咩叹气。这里的山顶便是目标函数的无约束解,栅栏便是约束函数的边界,此时羊头的朝向一定是指向山顶的,且与栅栏的梯度同向。

回到凸优化问题的标准形式: 列出拉格朗日函数得到无约束优化问题: 结合之前的分析,我们将可行解 需满足的条件汇总,即为 “KKT条件”(Karush-Kuhn-Tucker Conditions)

            ①

      ②

    ③

     ④

    ⑤

这一组方程看似很复杂,但其实很好理解:

①式:拉格朗日函数取得可行解的必要条件(羊爬山的例子);

②式:不等式约束对应的拉格朗日乘子的初始条件;

③~④式:优化问题的初始约束条件;

⑤式:前面得到的那个 重要“结论 ”

总结一下, KKT条件 是“一个凸优化问题存在最优解”的充要条件,通过KKT条件我们即可求得凸优化问题的最优解。用数学语言表述一下就是:

若目标函数 和不等式约束 都是凸函数,而等式约束 是仿射函数(即形如 的线性函数),且不等式约束 的等号都能成立(这一条件称为 Slater条件 ),那么满足KKT条件的 点即为全局最优解。

在引入KKT条件之前,我们已经将SVM转化成了如下形式: 其中, 我们发现,求解 是可以利用KKT条件的。

对于 条件① : ,我们这里的变量为 和 ,所以有: 那么接下来我们就可以进行一波愉快的数学计算了。。。(还没学过 向量函数求导 的小伙伴们,快进来现学一下吧~) 通过这一波求偏导我们得到: 将其带入 即可得到最小值:

支持向量机(support vector machine,SVM)是一种出色的分类技术,也可以用于回归分析(SVR)。这种技术可以很好的应用于高维数据,避免维度灾难等问题。

SVM有一个特点就是使用训练集中的一个子集来表示决策边界,该子集称作 支持向量

SVM的核心目标是找到分类中的最大边缘超平面,让其作为决策边界,那么什么是最大边缘超平面呢?

但是可以发现,这种超平面有无数多个(图中就能看到有好多个),如果有一些未知的点需要预测分类,那么他们可能未必会被这些超平面完美的分隔:

以最下侧的超平面为例,如果我们有未知的点按照蓝色排布,那么可以看到,最下侧的这个超平面完全不能分类所有蓝色点的“-”号,那么如果它作为决策边界,泛化能力就不是很好。

我们肯定要从这些超平面中选一个最合理的作为决策边界,使得未知的点尽量的能被正确预测分类,那么肯定是上图中间的这个超平面最好了,我们目测就可以得到结果,因为 它离两边这些点的距离围成的面积应该是最大的,而且两边的面积基本是差不多的 。(个人理解)所以应该能装得下更多的未知点,也就能得到最好的泛化效果。

为了不用肉眼观测,能量化的得到这个结果,我们可以定义 最大边缘超平面

下图中有两个决策边界, 和 ,其中每个决策边界都对应着两个超平面(记作 )。其中 是由 进行两侧平移,直到接触到最近的一个训练集的点停止,生成的,同理 也是。

我们把两个超平面(同一个决策边界生成的)之间的距离叫做分类器的边缘,那么下图中,显然 生成的两个超平面距离应该是最大的, 就叫做 最大边缘超平面 ( 虽然是决策边界,但是决策边界都是超平面)。

通常来说,较大边缘的超平面具有更好的泛化误差,如果边缘比较小,那么决策边界的轻微扰动都可能对分类产生显著影响。

SVM算法的核心就是设计最大化决策边界边缘的分类器,以保证最坏情况下泛化误差最小

假设有一个包含 个训练样本的二元分类问题,每个样本表示为一个二元组 , 其中 ,对应于第i个样本的属性集(一个样本有多个属性/特征),设y有-1和1两个类别,则一个 线性分类器的决策边界 可以写成如下形式:

其中的 为参数, 是法向量(垂直于决策边界)的向量,代表着超平面的方向,而 代表超平面与原点之间的距离(可以用一次函数的公式来理解)。

为什么 一定会垂直于决策边界呢?我们设有两个点 是决策边界上的两点,那么有:

二者相减有:

因为 肯定是平行于决策边界的,那么为了保证内积为0, 肯定要垂直于决策边界。

根据以上的决策边界,则肯定有:

如果上方的点是1类,下方是-1类,则有:

如果我们能得到 ,那么就可以用这个公式对未知点进行预测分类。代入公式,如果 就是1类,反之则为-1类。

接下来我们的任务就是如何求这两个参数,首先,既然是求最大边缘超平面,我们要把决策边界的边缘算出来。

根据上图,考虑那些离决策边界最近的方形和圆形,我们可以得到两个平行的超平面表示如下:

决策边界的边缘就是这两个超平面的距离。

参考上图的 ,不难得出边缘 为:

其中 是w的2范数。

很显然,我们想要让这个 最大,那么就要让 最小。

于是,接下来我们的求参数目标就明确了。

由于 肯定是非负的,我们可以改写一下

这个式子,让它变成求 的最小值。

既然要求最小值,就需要有另外一个约束条件,否则是没办法求的,我们来看之前总结的线性SVM分类器的公式:

由于 和 是决策边界的两个超平面,我们从上图中可以看出,所有的点(除了这两个超平面经过的点以外,经过的点是离决策边界最近的点),都肯定有 和 。

我们把y引入进来,那么这两个式子就能合到一起写为:

注意不要和之前总结的公式中的 弄混,那个条件是最终预测分类的公式,也就是表明只要在决策边界的上方就可以进行分类,而现在的>=1是在已知训练集的情况下求模型的参数。

综合以上的式子,我们可以得到求参数的基本式:

目标函数是二次的,而约束在参数 和 上是线性的,因此这是一个凸优化问题, 不存在局部优化的问题

求这一套公式的最小值,需要用到 拉格朗日乘数法 ,这个我也不是很明白,就按照的定义往里套:

虽然我们这里的附加条件是大于等于1的,不过不妨改写一下试试,则有:

其中的 就是 拉格朗日乘子 ,理论上来说,拉格朗日乘子可以为任何值。

如果约束条件是=0的话,我们就可以直接对 和 求偏导数,让他们等于0,就能求得参数。

但是目前条件并不是等于0的,而是大于等于0的。

处理不等式约束一种方法就是变换成一组等式约束,根据KKT条件,可以限制拉格朗日乘子飞赴,把之前的约束变换为:

该约束表明,除非训练样本满足方程 ,否则拉格朗日乘子必须为0。

结合上面展示决策边界和超平面的图,我们可以想到,满足这个方程的样本,肯定都在决策边界生成的两个超平面上。这些样本处的拉格朗日乘子肯定够大于0,而其他样本的拉格朗日乘子,肯定等于0,因此问题得到简化。 因为参数的确定仅依赖于这些在超平面上的样本。

这些在超平面上的样本,被称作 支持向量 ,这也就是支持向量机的命名缘由。

有了以上的修改后的约束,我们可以在 对 和 求偏导,并让他们等于0

我们已知,这个时候的 和 是有满足条件的最优解的,把这两个式子代入原公式,就能得到 的最小值(当然此时因为不知道拉格朗日乘子,我们是求不出来的),代入公式可得:

该函数叫做对偶拉格朗日函数。

用这个函数,就是把之前求w和b的公式变换成了求拉格朗日乘子的公式,同时需要注意,这个式子中是求拉格朗日对偶函数的最大化问题。

我们可以用二次规划法或者SMO方法来求拉格朗日乘子。

二次规划算法比较通用,但是计算量比较大,SMO算法的核心就是把复杂的式子变换成比较简易的之后,用二次规划来计算。

SMO的基本思路是:先固定 之外的所有参数,然后求 上的极值,由于存在约束 ,如果固定了 之外的其他变量,则能求出 。

那么对偶函数里有两个λ,我们就可以固定这两个λ之外的参数,之后求解 。

其中有一个λ不满足KKT条件,则目标函数就会在迭代后减小,违背程度越大,变量更新后导致的目标函数值就越大。 所以SMO先选取违背KKT条件最大的变量,第二个变量选择使目标函数值见效最快的变量,使选取的两个变量对应样本之间的间隔最大。

然后可以变换为简单的二次规划问题:

找到一组λ后,就可以用原公式求得 的解,决策边界可以表示为:

之后b可以通过 求解。

因为λ通过数值计算得到,因此可能存在误差,则b可能不唯一。通常我们可以用b的 平均值 作为决策边界的参数。

如图所示,这组数据集有两个特征 和一个 标签,我们要对其进行建模分类,可以得到有两个拉格朗日乘子(支持向量上的),其他的均为0

我们可以得到 有:

第一个 是针对 的参数,以此类推。

有了 ,可以求得 有:

可以根据两个b求平均值,得到b=793,因此就能得到分类的模型。

如果需要做预测,把对应点的x向量代入到模型中,求得结果为1的话,就是方形类,其他为圆形类。

上面讨论的模型最终都会生成一条直线,也就是线性的模型,那么往往需要判断非线性的如何处理呢,这里需要引入核函数的技术。

要把SVM应用到非线性决策边界的数据集上,就要把数据集从原来的坐标空间x变换到新的坐标空间中。

我们假定存在一个合适的函数 来变化给定的数据集,那么变换之后,我们就可以根据 来构建线性决策边界(类似于换元法,回忆一下)。变换之后,线性决策边界具有以下的形式:

根据线性SVM的参数计算公式,我们把公式里面的 换成 ,即可求解。

不过这种方式往往会涉及到向量对的点积,计算比较麻烦,当特征数较多时,可能会造成维度灾难的问题,因此我们要引入核函数。

核函数是一种使用原属性集计算变换后的空间中的相似度的方法,简而言之就是,我们如果按照上一段说的算法,则我们需要先计算 ,然后再计算参数,而我们运用核函数,可以直接计算\boldsymbol{x}就可以达到变换属性集的目的。

我们令 ,这样就可以把映射的函数变成了原属性集的计算。 就是核函数。

但是这个 一般我们是不知道的,因此我们要找寻几种通用的函数,让他们可以实现 的功能,以便模拟非线性的决策边界。

这里我们引入一个 Mercer定理 所有的核函数都必须满足Mercer定理。

通常有如下几种核函数:

我们也可以通过核函数的组合来形成新的核函数:

我们直到一般算法都要防止过拟合,防止噪声带来的模型泛化能力下降,那么SVM的防止过拟合方法就是软边缘。

此外,根据KKT条件,可以变换约束如下:

注意,上述三个式子中的 是非零的,当且仅当训练样本位于直线 上或者 。另外对于误分类的训练样本, 都为0

我们按照正常优化的算法,对 , , 求偏导数,可以得到参数:

代入原公式,可以得到只包括拉格朗日乘子的对偶拉格朗日函数。

这个式子看上去跟不加软边缘的对偶函数是一样的,但是约束是不同的。

软边缘的对偶函数约束为

之后就可以用二次规划或者SOM求参数值了,从而得到模型。

这就是带软边缘的SVM。

以上提到的都是二元分类的办法,那么多分类可以参考常用的多分类处理,用一对一方法,如果有多分类问题,我们可以分解为K(K-1)/2个二类分类器,每一个分类器用来区分一对类 。(注意这里的y都是单独的类,不是一堆类别的集合)

当为 构建分类器时,其他不属于这两类的点都被忽略掉。

之后针对需要预测分类的样本,我们用不同的分类器进行分类,最后进行投票,得到结果。

以上就是SVM(用于分类的支持向量机)的内容,最后看看该算法的特点:

支持向量机(Support Vector Machine,SVM)是监督学习中非常经典的算法。笔者主要参考学习的是李航老师《统计学习方法(第二版)》[1]和周志华老师的西瓜书《机器学习》[2]。

一方面,线性可分支持向量机只适用于线性可分的训练数据集,对于线性不可分的训练数据集则是无能为力的。

另一方面,即使训练数据集线性可分,线性可分支持向量机强依赖于离分类超平面最近的样本[3],过拟合的风险很大。

这时候就需要有一定容错能力的分类模型,线性支持向量机,或者叫软间隔支持向量机,就可以做到这样的容错性。

这里我采用周志华老师西瓜书[2]的思路来整理这部分。

对于线性可分支持向量机,要求所有样本满足以下约束

而软间隔则允许某些样本不满足这样的约束。

在最大化间隔的同时,不满足约束的样本要尽量少。此时,优化目标可以写为

其中, 是一般化的损失函数, 被称作惩罚参数,调节间隔最大化和参数惩罚这二者关系。

我们先看惩罚参数 。当 值较大时对误分类惩罚较大,特别地,当C取无穷大时,所有样本都要满足式 约束,模型等价于线性可分支持向量机[3];当 取有限值时,模型允许一些样本不满足约束。

接下来讨论损失函数 。当 使用不同的损失函数时的模型状态,周志华老师的西瓜书[2]有简单讨论。当 是合页损失函数时,模型就是线性支持向量机。李航老师《统计学习方法(第二版)》[1]的相关章节证明了线性支持向量机和基于合页损失函数的优化问题的等价性。合页损失函数如下

图1[2]

当 时,式 可重写为

引入松弛变量 ,将上式再重写为

优化问题一:

与线性可分支持向量机类似,线性支持向量机(式 )的拉格朗日对偶函数如下

原问题(式 )是凸优化问题,则优化问题 与原问题等价。

第一步, 求 对 的极小值。

将式 代入式 ,可得

第二步, 求 对 的极大值,即得对偶问题。

这里需要注意,式 等号右边表达式没有 ,直接求解对 的极大值即可。对偶问题如下

上式中,因为 不在最优化表达式中,可以利用等式约束消去,简化约束。再把求极大转换成求极小,得到对偶问题如下

优化问题二:

第三步, 求解分类超平面和分类模型。

对于已求解出优化问题二(式 )的最优解 ,则类似于线性可分支持向量机[3]的推导过程。

原问题(式 )是凸优化问题,则满足KKT条件的点是原问题和对偶问题的最优解(具体请参见[4])

根据式 可得

观察式 、 和 ,先看式 ,当 时,有

再看式 ,当 时,有 

此时再看式 ,当 时,必有 ,综上讨论,当 时,有

再将式 代入上式,并于式 联立,可得线性支持向量机的最优分类超平面参数为

这里需要注意,在李航老师《统计学习方法(第二版)》[1]相关章节中,和式 相同表达的式子是不严谨的,如果没看到这一段,这句话略过。

线性支持向量机的支持向量会复杂一些。如下图

首先, 定义 的样本点 为支持向量。

其次, 每个支持向量 到其对应的间隔边界的距离为 。推导过程如下。

点到超平面的距离公式为:

先看正类,正类的间隔边界超平面为: ,对应的点到间隔边界超平面的距离公式为: 。对于正例的支持向量,有 ,根据式 ,有 ,代入距离公式,即可到结论。

负类推导过程类似。

再次, 根据以上结论,分析支持向量。

根据上面式 和 ,消去 ,则有

第一种情况, 当 时,则 ,则此支持向量到对应间隔边界的距离 ,即此支持向量在间隔边界超平面上。

第二种情况, 当 且 时,此支持向量到对应间隔边界的距离 ,此支持向量分类正确,在间隔边界与分离超平面之间。

第三种情况, 当 且 时,此支持向量到对应间隔边界的距离 ,此支持向量在分离超平面上。

第四种情况, 当 且 时,此支持向量到对应间隔边界的距离 ,此支持向量分类错误。

这里需要注意,有没有 和 同时成立的点,这里没有找到确定或否定的证据。如果谁有这方面的资料,还烦请告知笔者,先行谢过,联系邮箱:hpfhepf@gmailcom。

[1]、《统计学习方法(第二版)》,李航著,清华大学出版社

[2]、《机器学习》,周志华著,清华大学出版社

[3]、 《支持向量机(一)——线性可分支持向量机导出》

[4]、 《凸优化(八)——Lagrange对偶问题》

B、相关目录

[a]、 支持向量机(一)——线性可分支持向量机导出

[b]、 支持向量机(二)——线性可分支持向量机求解

[c]、支持向量机(三)——线性支持向量机

[d]、 支持向量机(四)——核方法

[e]、 支持向量机(五)——SMO算法

大数据分析到底需要多少种工具?

摘要

JMLR杂志上最近有一篇论文,作者比较了179种不同的分类学习方法(分类学习算法)在121个数据集上的性能,发现Random Forest(随机森林)和SVM(支持向量机)分类准确率最高,在大多数情况下超过其他方法。本文针对“大数据分析到底需要多少种工具?”这一问题展开讨论,总结机器学习领域多年来积累的经验规律,继而导出大数据分析应该采取的策略。

1.分类方法大比武

大数据分析主要依靠机器学习和大规模计算。机器学习包括监督学习、非监督学习、强化学习等,而监督学习又包括分类学习、回归学习、排序学习、匹配学习等(见图1)。分类是最常见的机器学习应用问题,比如垃圾邮件过滤、人脸检测、用户画像、文本情感分析、网页归类等,本质上都是分类问题。分类学习也是机器学习领域,研究最彻底、使用最广泛的一个分支。

机器学习

图1 机器学习分类体系

最近、Fernández-Delgado等人在JMLR(Journal of Machine Learning Research,机器学习顶级期刊)杂志发表了一篇有趣的论文。他们让179种不同的分类学习方法(分类学习算法)在UCI 121个数据集上进行了“大比武”(UCI是机器学习公用数据集,每个数据集的规模都不大)。结果发现Random Forest(随机森林)和SVM(支持向量机)名列第一、第二名,但两者差异不大。在843%的数据上、Random Forest压倒了其它90%的方法。也就是说,在大多数情况下,只用Random Forest 或 SVM事情就搞定了。

2.几点经验总结

大数据分析到底需要多少种机器学习的方法呢?围绕着这个问题,我们看一下机器学习领域多年得出的一些经验规律。

大数据分析性能的好坏,也就是说机器学习预测的准确率,与使用的学习算法、问题的性质、数据集的特性包括数据规模、数据特征等都有关系。

一般地,Ensemble方法包括Random Forest和AdaBoost、SVM、Logistic Regression 分类准确率最高。

没有一种方法可以“包打天下”。Random Forest、SVM等方法一般性能最好,但不是在什么条件下性能都最好。

不同的方法,当数据规模小的时候,性能往往有较大差异,但当数据规模增大时,性能都会逐渐提升且差异逐渐减小。也就是说,在大数据条件下,什么方法都能work的不错。参见图2中Blaco & Brill的实验结果。

对于简单问题,Random Forest、SVM等方法基本可行,但是对于复杂问题,比如语音识别、图像识别,最近流行的深度学习方法往往效果更好。深度学习本质是复杂模型学习,是今后研究的重点。

在实际应用中,要提高分类的准确率,选择特征比选择算法更重要。好的特征会带来更好的分类结果,而好的特征的提取需要对问题的深入理解。

大数据

图2 不同机器学习方法在数据集增大时的学习曲线。

3.应采取的大数据分析策略

建立大数据分析平台时,选择实现若干种有代表性的方法即可。当然,不仅要考虑预测的准确率,还有考虑学习效率、开发成本、模型可读性等其他因素。大数据分析平台固然重要,同时需要有一批能够深入理解应用问题,自如使用分析工具的工程师和分析人员。

只有善工利器,大数据分析才能真正发挥威力。

支持向量机SVM ( Support Vector Machines)是由Vanpik领导的AT&TBell实验室研究小组

在1963年提出的一种新的非常有潜力的分类技术, SVM是一种基于统计学习理论的模式识别方法,主要应用于模式识别领域由于当时这些研究尚不十分完善,在解决模式识别问题中往往趋于保守,且数学上比较艰涩,因此这些研究一直没有得到充的重视直到90年代,一个较完善的理论体系—统计学习理论 ( StatisticalLearningTheory,简称SLT) 的实现和由于神经网络等较新兴的机器学习方法的研究遇到一些重要的困难,比如如何确定网络结构的问题、过学习与欠学习问题、局部极小点问题等,使得SVM迅速发展和完善,在解决小样本 、非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中从此迅速的发展起来,现在已经在许多领域(生物信息学,文本和手写识别等)都取得了成功的应用。

SVM的关键在于核函数,这也是最喜人的地方。低维空间向量集通常难于划分,解决的方法是将它们映射到高维空间。但这个办法带来的困难就是计算复杂度的增加,而核函数正好巧妙地解决了这个问题。也就是说,只要选用适当的核函数,我们就可以得到高维空间的分类函数。在SVM理论中,采用不同的核函数将导致不同的SVM算法

它是一种以统计学理论为基础的,以结构风险最小化的学习机学习方法,要优于神经网络学习,以上是摘自本人的毕业设计,如需转载,请通知本人

支持向量机(SVM),全称是support vector machine,简单来说,它是一种二类分类器,基本模型就是在特征空间上寻找间隔最大的线性分类器,基于这个模型我们更改核函数就可以把它应用于非线性问题之中,首先我们看他的定义,什么是“在特征空间中寻找间隔最大的线性分类器”?首先我们应该知道什么是线性分类器,详情见上一篇博文,其中描述的logistic regression 便是我们的基础,假设SVM是一个二分类器,那么显而易见,我们需要将输出结果转换为两种类别。下面举一个简单的例子

圆圈与叉叉分别表示两种不同的种类,显而易见,我们可以通过logistic regression来拟合一条直线分类这两种不同的类别,拟合之后他大概长这个样子。

因为wx+b输出的是一个连续值,比如说08,15,需要将他同1,-1,0比较,上图中最左边那条虚线表示的是通过了最近的一个反例,同理最右边那条虚线表示的是通过了最近的一个正例,这些被边缘线通过的点被叫做支持向量,他们是最重要的,哪怕不要其他点。因为他们规定了正例以及反例的边缘。

我们再重新看一遍关于SVM的定义,目的是取得间隔最大化的学习器,当超平面距离数据点越远时候,分类的确信度也越大,为了让确信度足够高我们应该让所选择的超平面最大化这个“间隔”值,两个经过异类支持向量点的超平面之间距离为2/||w||,就是我们需要最大化的间隔。如下图所示

我们的超平面对数据进行正常分类那么必定存在下面的不等式,对于正例y=+1,我们的超平面需要将他预测为>=1的情况,如果y=-1那么我们的超平面需要将他预测为<=-1。

这是很容易理解的,当样例为正例时我们应该把他预测至少=1或者>1,反之也是成立的。那么问题现在就清楚了,我们应该在他满足正常分类的条件下,求得||w||的最小值,也就是我们想要最大化||w||^2

上式中w,b是模型参数,现在我们面临的是一个最优化问题,怎么求解呢?这是一个凸优化问题(y(x),h(x)是凸函数,并且h(x)为仿射函数),我们可以用现成的工具包来解,但是我们这里采用的是另一种解法,可以顺势引出核函数等。

这时候我们需要构造一个拉格朗日函数,拉格朗日函数就是将约束条件分别和拉格朗日乘子相乘,然后再与目标函数相加,这样我们的关系式就可以用一个方程标示出来了,但是我们面临一个问题,就是约束条件可能是等式,也可能是不等式,我们要分开考虑两种情况。

考虑一个简单的问题目标函数f(x) = x1 + x2,等式约束h(x)=x1^2 + x2^2 −2,求解极小值点。f(x)在二维平面上画出等高线(contour)就是一条条斜率相同的直线,h(x)=0在二维平面上画出等高线就是一个圆,如下图所示。可以明显的看出,在圆圈h(x)的限制下,直线f(x)的最小值为-2,在左下角直线x1+x2=2和圆的交点上。

我们从梯度方向考虑一下,如果不考虑限制条件的话,目标函数将会向他梯度的反方向移动,如下方深蓝色箭头。但是如果考虑限制的话我们只能取得圆圈上的值那么他只能向h(x)梯度正切方向移动,(注意h(x)函数是那个圆,梯度是指向圆外的),红粗线表示目标函数移动方向,细红线表示限制函数的梯度。

我们可以发现,在关键的极小值处,我们的目标函数和限制条件的梯度是在一条直线上的,可能是同向的也可能是反向的,在极小值点有如下情况

也就是说,我们对于f(x)以及h(x)来说当满足上面的式子时候,就是目标函数和限制条件在同一条直线时候,并且此时的h(x)=0(因为是在圆上)时候解得的x就是我们需要的极值点,为了做到上面这个条件,我们构造一个拉格朗日函数,对函数令偏导数为0求解,这时候恰好等价于“满足上面那个式子,并且h(x)=0”,那么此时我们求解出来的x就是我们所需要的极值点,和就是拉格朗日乘子法。

上面我们提到的求||w||^2的最小值,限制条件是要求正确分类那些点,那么就可以转换成拉格朗日函数来求解。

其中第二张中的x就是我们需要求解的变量,也就是上面问题中的w,接下来我们就需要该函数分别对x和拉格朗日乘子分别求偏导数等于0,对x求偏导为0表示满足梯度在一条直线,对拉格朗日乘子求偏导为0表示h(x)=0,这样求解出来的x就是极值点。

在不等式约束中有两种情况我们需要讨论,这里需要注意以下,很多blog上面都没有写清楚为什么g(x)<0情况下约束条件是不起作用的,参阅了另外一篇博客时候发现了解释,最后写出参考的blog网址,在不等式约束g(x)<0情况下,我们将极值点情况分为两类,这是一种分类思想,将极值点分为在约束域中以及约束域外,首先我们来看极值点在约束域内的话是什么情况。

考虑目标函数f(x)=x1 2 +x2 2 ,不等值约束g(x)=x1 2 +x2 2 −1,显然f(x)的极小值为原点(0,0),落在可行域内。可行域以原点为圆心,半径为1。

考虑目标函数f(x)=(x1−11) 2 +(x2+11) 2 ,不等值约束g(x)=x1 2 +x2 2 −1,显然f(x)的极小值为原点(11, -11),落在可行域外。可行域以原点为圆心,半径为1。这种情况下我们的约束条件是有效的,因为极值点在约束域外,所以我们的取值不能取到全局的极值点,只能取到在约束域上的极小值。

我们可以总结一下不等式情况下有什么特点,我们可以发现,不管是极值点在约束域内亦或者是在约束域外,我们都会有这个关系

当极值点在约束域内的时候因为约束条件是没用的,所以我们应该让拉格朗日乘子等于0,如果极值点在约束域之外的时候存在g(x)=0。

上面哪个关系式子是我们将目标函数转换成为拉格朗日函数之后的一个限制条件,并且我们知道在不等式的两种情况下拉格朗日乘子都是>0的,同样的这也是拉格朗日函数的一个限制条件。如果在凸优化问题中这两个条件都满足那么我们求出来的极值点就是全局最小的极值点,如果不是凸优化问题那么上述条件只是必要条件不是充分条件,我们求解出来的可能不是全局极值点也可能是驻点。而我们上述的条件就是KKT条件

上述所有就是我们在求解SVM时候需要考虑的两个难点,过了这道坎之后SVM大概也完成了不到一半吧,后面还有一个SMO算法以及关于核函数的问题,任重而道远哦~

前面已经分别介绍了基于硬间隔最大化的线性可分支持向量机、基于软间隔最大化的线性支持向量机,这次来总结下使用核函数来解决非线性可分问题的非线性支持向量机。

对于非线性可分问题,我们本着简化问题的思想,自然是希望将其转化为熟悉的线性可分问题进行处理,那么怎么做呢?对于一个在样本的原始空间中不是线性可分的数据,如下左图中的红色样本点和蓝色样本点,如果想要进行分类的话,可以将数据映射到更高维的特征空间中,如果映射的合适的话,就能找到一个超平面将数据分类,如下右图所示:

这种做法是特例还是可以普遍使用的呢?《机器学习》书上说:

不过书上并没有解释原因,我们先从低维直观的理解一下,如下图所示:在一维线性不可分的数据,可以映射成在二维线性可分的,在二维线性不可分的数据,可以映射成在三维线性可分的:

在更高的维度也适用吗?实际上,这个论点在理论上是有证明的,即 Cover定理 ,Cover定理可以理解为:当空间的维数D越大时,在该空间的N个数据点间的线性可分的概率就越大。如果固定数据的数量N,维度D小于数据数量N时,特征空间维度越高,越有可能使数据线性可分;在维度超过数据数量时,数据一定线性可分(试想如果我们把每个数据点都映射到不同的坐标轴上,那么可不就是线性可分的了么)。

因此,我们对非线性可分的数据,可以将数据映射至高维空间,然后再用我们熟悉的线性分类器来分类,至此,剩下的问题就是怎么映射呢?这就需要核函数登场了。

核函数是一个广泛使用的技术,事实上它比支持向量机出现的更早,它可以将一个空间的向量映射到另一个空间,刚好符合我们解决非线性可分问题的需求, 核函数定义

核函数的一大优势就是,它通过定义函数 来隐式的定义映射 ,一般来说,直接计算函数 是比较容易的,因为它是在原始低维度进行的,而通过 计算是很困难的,因为 是高维的,甚至是无穷维的。

既然核函数这么棒,那怎么获得一个核函数呢?或者说怎么判断一个函数是不是核函数?通常我们所说的核函数都是正定核函数, 正定核函数的充要条件:

有了这个定义,理论上我们可以构造出核函数,不过对非常困难,因为要保证任意输入的Gram矩阵都要是半正定矩阵,所以在实际使用中,我们一般使用前辈们总结好的常用核函数。

证明:

根据定义,核函数的映射涉及从欧氏空间到希尔伯特空间的转化,其过程是怎样的呢?如果我们在Gram矩阵是半正定的条件下,把这个映射过程推出来不就相当于证明了上述定理的充分性了吗~

前提: 是对称函数、 是半正定矩阵

除去对应的基底,将其表示为希尔伯特空间的向量(一个函数可以看成一个无穷维的向量,空间中的任何一个函数都可以表示为一组正交基的线性组合):

计算二者内积:

也就是核函数定义中的:

至此就证明了上述定理的充分性,至于必要性,求出Gram矩阵就可以证明,比较简单就不说了。

这个特性叫做 再生性(reproducing property) ,所以这个空间叫做 再生核希尔伯特空间(RKHS, reproducing kernel Hilbert space)

对定义的低维度到高纬度的映射 来说,我们不需要知道这个映射是什么就可以计算得到高维的内积 ,这就是SVM中使用的 核技巧

上述核函数及证明中出现较多的各种数学空间,如果不熟悉的话可以看文末的附录,对各种空间的关系有一个大致的展示。

使用线性核函数跟不使用核函数是一样的,还是无法处理非线性可分问题的,不过从这个角度出发,我们可以把 线性可分SVM看作非线性不可分SVM的使用线性核函数的特例

SVM中也称为径向基核函数(Radial Basis Function,RBF),是非线性支持向量机中最常用的核函数:

因为在映射后的高维空间中,支持向量机还是在解决线性可分的数据,所以原理、目标函数什么的都跟之前是一样的,只是最终的形式上有所不同,最终可得非线性支持向量机模型:

非线性支持向量机的算法过程:

核函数的引入大大提升了支持向量机的应用范围,使得其在非线性可分问题上也有了很好的分类表现,而且核技巧使得隐式的高维映射成为可能,使用起来也非常便捷。

还记得我们在 逻辑回归 中针对非线性可分问题说过:

所以相对于逻辑回归等线性分类器来说,SVM具有很大的优势,这也是SVM在过去几十年里流行的主要原因之一,其优美的数学推导也让很多学者非常喜欢,不过随着近几年集成学习、神经网络的兴起和数据量的爆炸性增长,SVM也慢慢的不再那么流行了,不过其在特定问题上仍然是一个很有魅力的算法,值得大家掌握。

现在三种SVM都写完了,来总结一下SVM的优缺点吧:

数学空间:数学中的空间的组成包括两个部分:研究的对象和内在的规则,或者叫做元素和结构。

欢迎分享,转载请注明来源:浪漫分享网

原文地址:https://hunlipic.com/qinggan/1067390.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-12
下一篇2023-07-12

发表评论

登录后才能评论

评论列表(0条)

    保存