SVM 是一种二类分类模型。它的基本思想是在特征空间中寻找间隔最大的分离超平面使数据获得高效的二分类,具体来说,有三种状况(不加核函数的话就是个线性模型,加了以后才会升级为一个非线性模型):算法
当训练数据线性可分时,存在无穷个分离超平面能够将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是惟一的。另外一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。网络
当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。而引入这样的映射后,所要求解的对偶问题的求解中,无需求解真正的映射函数,而只须要知道其核函数。核函数的定义:K(x,y)=<ϕ(x),ϕ(y)>,即在特征空间的内积等于它们在原始样本空间中经过核函数 K 计算的结果。一方面数据变成了高维空间中线性可分的数据,另外一方面不须要求解具体的映射函数,只须要给定具体的核函数便可,这样使得求解的难度大大下降。函数
用本身的话说就是,在SVM不管是硬间隔仍是软间隔在计算过程当中,都有X转置点积X,若X的维度低一点还好算,但当咱们想把X从低维映射到高维的时候(让数据变得线性可分时),这一步计算很困难,等于说在计算时,须要先计算把X映射到高维的的ϕ(x),再计算ϕ(x1)和ϕ(x2)的点积,这一步计算起来开销很大,难度也很大,此时引入核函数,这两步的计算便成了一步计算,即只需把两个x带入核函数,计算核函数,举个列子一目了然:性能
我的对核函数的理解:核函数就是一个函数,接收两个变量,这两个变量是在低维空间中的变量,而核函数求的值等于将两个低维空间中的向量映射到高维空间后的内积。学习
这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 但愿样本在特征空间中线性可分,因此特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。大数据
有两个目标:第一个是使间隔最大化,第二个是使样本正确分类,由此推出目标函数:优化
稍微解释一下,w是超平面参数,目标一是从点到面的距离公式化简来的,具体不展开,目标二就至关于感知机,只是把大于等于0进行缩放变成了大于等于1,为了后面的推导方便。有了两个目标,写在一块儿,就变成了svm的终极目标:spa
从上面的公式看出,这是一个有约束条件的最优化问题,用拉格朗日函数来解决。orm
上式的拉格朗日函数为:blog
在知足Slater定理的时候,且过程知足KKT条件的时候,原问题转换成对偶问题:
先求内部最小值,对 和
求偏导并令其等于
可得:
将其代入到上式中去可获得
此时须要求解 ,利用SMO(序列最小优化)算法:
SMO算法的基本思路是每次选择两个变量和
,选取的两个变量所对应的样本之间间隔要尽量大,由于这样更新会带给目标函数值更大的变化。SMO算法之因此高效,是由于仅优化两个参数的过程实际上仅有一个约束条件,其中一个可由另外一个表示,这样的二次规划问题具备闭式解。
无论直接在原特征空间,仍是在映射的高维空间,咱们都假设样本是线性可分的。虽然理论上咱们总能找到一个高维映射使数据线性可分,但在实际任务中,寻找一个合适的核函数核很困难。此外,因为数据一般有噪声存在,一味追求数据线性可分可能会使模型陷入过拟合,所以,咱们放宽对样本的要求,容许少许样本分类错误。这样的想法就意味着对目标函数的改变,以前推导的目标函数里不容许任何错误,而且让间隔最大,如今给以前的目标函数加上一个偏差,就至关于容许原先的目标出错,引入松弛变量 ,公式变为:
那么这个松弛变量怎么计算呢,最开始试图用0,1损失去计算,但0,1损失函数并不连续,求最值时求导的时候很差求,因此引入合页损失(hinge loss):
函数图长这样:
理解起来就是,原先制约条件是保证全部样本分类正确, ,如今出现错误的时候,必定是这个式子不被知足了,即
,衡量一下错了多少呢?由于左边必定小于1,那就跟1比较,由于1是边界,因此用1减去
来衡量错误了多少,因此目标变为(正确分类的话损失为0,错误的话付出代价):
但这个代价须要一个控制的因子,引入C>0,惩罚参数,即:
能够想象,C越大说明把错误放的越大,说明对错误的容忍度就小,反之亦然。当C无穷大时,就变成一点错误都不能容忍,即变成硬间隔。实际应用时咱们要合理选取C,C越小越容易欠拟合,C越大越容易过拟合。
因此软间隔的目标函数为:
其中:
与硬间隔相似:
上式的拉格朗日函数为:
在知足Slater定理的时候,且过程知足KKT条件的时候,原问题转换成对偶问题:
先求内部最小值,对 ,
和
求偏导并令其等于
可得:
将其代入到上式中去可获得,注意 被消掉了:
此时须要求解 ,一样利用SMO(序列最小优化)算法。
1.先说硬间隔:
先看KKT条件
支持向量,对偶变量 αi > 0 对应的样本;
2. 再说软间隔:
先看kkt条件:
通过SMO后,求得 ,
。
对于任意样本,
若,此样本点不是支持向量,该样本对模型没有任何的做用
若,此样本是一个支持向量(同硬间隔)
若知足,进一步地,
如图:
此处说的是软间隔:
先看软间隔的基本型形式:
稍微作一点变化:
这样写是为了符合标准的损失函数+正则化的样子,其中, 第一项称为经验风险, 度量了模型对训练数据的拟合程度; 第二项称为结构风险, 也称为正则化项, 度量 了模型自身的复杂度. 正则化项削减了假设空间, 从而 下降过拟合风险. λ 是个可调节的超参数, 用于权衡经验风险和结构风险.
其中:
这样的话给上式乘以mc,就会变成上上式了。
优势:
缺点: