SVM支持向量机原理解析及代码实战

本文深入解析支持向量机(SVM)的原理,包括其分类方式、特点、如何寻找最佳超平面,以及松弛变量和核函数的作用。SVM通过寻找最大间隔超平面进行二分类,并通过优化目标函数确定参数。核函数的应用使得SVM能处理非线性问题。实战部分介绍了SVM的代码实现。
摘要由CSDN通过智能技术生成

什么是SVM?

SVM(Support Vector Machine)的中文名字叫作支持向量机,(这个名字还真是够玄幻的,我第一次看到这个名字,根本猜不到它是用来干嘛的 )。SVM是用于做数据二分类的,数据是我们所熟悉的具有多个维度的向量数据,数据分为两个类别,标签分别为-1和1。之所以说SVM是做二分类的,是因为我们只能使用-1和1这两种标签。(通过多个SVM的组合,我们还是可以处理多分类任务的,但SVM本身的属性是不倾向于这么做的。)

SVM如何来进行分类?

SVM进行数据分类的思想还是很简单的,SVM实际上是一个超平面(维度超过3维的平面),我们通过这个超平面将数据向量分为两部分,一侧是标签为1的数据,另一侧为标签为-1的数据。如下图所示,我们使用二维的数据来给大家做个展示,在这种情况下,超平面是一条直线,将两类数据分隔开。
图1二维数据情况下的SVM
让我们用数学公式来表示一下我们使用SVM进行分类的过程。假定数据的维度为d,那么SVM的两个重要的参数W ∈ \in R 1 ∗ d R^{1*d} R1d,b ∈ \in R 1 R^1 R1。标签值未知的数据x ∈ \in R d R^d Rd,我们根据 y = W x + b y=Wx+b y=Wx+b的正负号来判断x位于超平面的哪一侧,若y为正值,则数据x的标签为1,若y为负值,则数据x的标签为-1。所以,只要我们获取到了SVM的两个重要的参数W和b,我们就能轻松地来进行数据分类了。

SVM的特点是什么?

如果熟悉机器学习的同学仔细看了我对SVM目前的讲述,你一定会觉得SVM实在是太弱了。SVM就像是一个没有使用激活函数的隐藏层一样。那么SVM究竟有什么特点呢?

SVM最大的特点是它确定其参数W和b的方式,熟悉逻辑回归的同学一定清楚,逻辑回归是通过反向传播逐步优化的思想去找到合适的W和b。而SVM确定其W和b的方式是采取最优的思想,SVM期望去找到一个最优的超平面。在SVM的心目当中,满足什么样的条件才算是最优呢?很简单,我们仔细观察一下下面这幅图,
不同超平面的对比
我们当前希望找到一个超平面,能够将+号和-号区分开。图中的这些超平面(二维情况下,超平面是直线),都能实现100%的分类准确率。但是,我们心里很清楚,如果让我们选择一条来作为超平面,我们一定会去选中间加粗的那条线。因为它距离两边的点的距离是最远的,有足够的安全距离去容纳未知的点(当我们使用SVM去进行分类预测的时候,我们不清楚待预测的点会落在什么位置,所以当SVM太靠近训练时的点的话,待预测的点稍微靠近超平面,就可能导致该点的预测错误,所以我们要留有足够的距离空间去容纳待预测的点)。

那么,距离成了我们衡量SVM超平面优劣的一项重要指标。

如何寻找最佳超平面?

所谓的寻找最佳超平面,就是想办法去确定W和b的取值。让我们来定义一个参数 γ \gamma γ,用它来表示当前的超平面所能实现的“距离空间”。

( W x i + b ∣ ∣ W ∣ ∣ ) y i ≥ γ , i = 0 , 1 , . . . n − 1 (\frac{Wx_i+b}{||W||})y_i\geq\gamma,i=0,1,...n-1 (WWxi+b)yiγ,i=0,1,...n1

这个式子所表达的涵义很简单,所有的点到超平面的“距离”是大于等于 γ \gamma γ的。(这个距离,大家要理解清楚,如果数据站在了与其标签相反的面,它的距离将变为负值。)

因此,如果满足要求的 γ \gamma γ值越大,说明我们的SVM超平面就越优秀,别忘了,SVM是要找最优的超平面。所以我们要寻求最大的 γ \gamma γ值。

m a x γ , s t ( W x i + b ∣ ∣ W ∣ ∣ ) y i ≥ γ , ∀ i max\gamma,st (\frac{Wx_i+b}{||W||})y_i\geq\gamma,\forall i maxγ,st(WWxi+b)yiγ,i

对于这样一个求取最优超平面参数W和b的式子,其实我们不太好操作,因为我们的 γ \gamma γ和W及b的关系还不够明显。我们希望能够直接对W和b进行操作,而不是先求出 γ \gamma γ值,然后再根据最优的 γ \gamma γ值来求取W和b。

为了建立W、b和 γ \gamma γ的直接对应关系,我们添加了一条额外的限制条件。

W = W ∣ ∣ W ∣ ∣ γ W=\frac{W}{||W||\gamma} W=WγW

我们要求这个式子是恒成立的,对于W进行缩放,对于超平面而言是没有影响的。同时,我们还能够建立W和 γ \gamma γ的关系,从对 γ \gamma γ求最优值转化到对W去求最优值。那么由于||W||与 γ \gamma γ成反比例关系。对 γ \gamma γ求最大值等价于对||W||求最小值。因此,我们将目标转化到了||W||身上。

m i n 1 2 ∣ ∣ W ∣ ∣ 2 , s t ( W x i + b ) y i ≥ 1 , ∀ i min\frac{1}{2}||W||^2,st(Wx_i+b)y_i\geq1,\forall i min21W2,st(Wxi+b)yi1,i

我们之所以要用 1 2 ∣ ∣ W ∣ ∣ 2 \frac{1}{2}||W||^2 21W2,是因为方便后续的计算,和 m i n ∣ ∣ W ∣ ∣ min ||W|| minW的效果一样。但是,虽然我们目前可以直接对||W||来进行开刀,但我们还是很难去解这样的式子,因为限制条件的存在,让我们很难去求取W和b的最优解。我们可以使用的一种简化思想是将不等式糅合到目标表达式当中。这样,我们就不再受限制条件的羁绊了。
m i n 1 2 ∣ ∣ W ∣ ∣ 2 − ∑ i = 0 n − 1 α i ( ( W x i + b ) y i − 1 ) , s t α i ≥ 0 min\frac{1}{2}||W||^2-\sum_{i=0}^{n-1} \alpha_i((Wx_i+b)y_i-1),st\alpha_i \geq0 min21W2i=0n1αi((Wxi+b)yi1)stαi0

(跟大家扩展一下,当我第一眼看到这个式子的时候,有一种很似曾相识的感觉。它让我想到了loss函数的设计,loss函数的设计思想当中,一个关键点就是对于不符合我们期望的结果,它对于loss有增加的效果。对于顺应我们期望的结果,我们希望它对于loss有减小的效果。)对于我们的限制条件,我们当然是希望 ( W x i + b ) y i (Wx_i+b)y_i (Wxi+b)yi越大越好,它越大,就越顺应我们的期望。所以我们要用用减号将 α i ( ( W x i + b ) y i − 1 ) \alpha_i((Wx_i+b)y_i-1) αi((Wxi+b)yi1)给减掉。 α i ≥ 0 \alpha_i\geq0 αi0是要保证我们的惩罚和奖励是合理的(原本应该是让loss减小,但由于 α i \alpha_i αi为负值,结果反而让loss增加,所以 α i \alpha_i αi必须为非负,最多就不奖也不罚,但绝不能是非不分)。

另外,我们需要再考虑一个问题。当我们以这种类似loss的方式将限制条件 ( W x i + b ) y i ≥ 1 (Wx_i+b)y_i\geq1 (Wxi+b)yi1添加到目标表达式当中时,我们的限制条件就被弱化了(限制条件那就是必须要满足的条件,而当以loss添加到目标表达式当中时,当限制条件不满足时,我们进行loss上的惩罚即可。这个限制条件就被弱化了,如何来解决呢?我还是希望强化这个限制的。给自己5分钟时间,认真思考一下。)

我们对于限制条件被弱化的解决方案是通过 α i \alpha_i αi来完成的,刚刚我们只是提到了 α i \alpha_i αi取正负值代表了我们进行奖惩的态度,而 α i \alpha_i αi的大小代表了我们进行奖惩的力度。别忘了,SVM的最大的特点是最优化,那么 α i \alpha_i αi一定是以最狠的方式来进行惩罚,最轻的力度来进行奖励。(这样才能激发出最小的||W||)
min ⁡ W , b max ⁡ α i 1 2 ∣ ∣ W ∣ ∣ 2 − ∑ i = 0 n − 1 α i ( ( W x i + b ) y i − 1 ) , s t α i ≥ 0 \min_{W,b} \max_{\alpha_i} \frac{1}{2}||W||^2-\sum_{i=0}^{n-1}\alpha_i((Wx_i+b)y_i-1),st\alpha_i \geq0 W,bminαimax21W2i=0n1αi((Wxi+b)yi1)stαi0

max就代表了 α i \alpha_i αi进行惩罚的态度,我们要以这样一个式子去求解W和b的值,但由于我们引入了另外一个未知变量 α i \alpha_i αi,我们的求解又蒙上了一层阴影。而且,min和max的位置决定了,我们必须先去求解 α i \alpha_i αi,这是行不通的事情,因为我们需要在W和b处于未知待定的情况下去确定 α i \alpha_i αi的取值,难度可想而知。那么,max和min能不能调换位置呢?

能否调换位置,我们关注的首要问题是我们最终所求取的结果是否一致。这就要看我们的目标函数是什么样子了。让我们假定在1维的情况下展开:
min ⁡ w , b max ⁡ α i 1 2 w 2 − ∑ i = 0 n − 1 α i ( ( w x i + b ) y i − 1 ) , w ∈ R \min_{w,b} \max_{\alpha_i} \frac{1}{2}w^2-\sum_{i=0}^{n-1}\alpha_i((wx_i+b)y_i-1),w\in R w,bminαimax21w2i=0n1αi((wxi+b)yi1),wR

如果我们只看w的话,那么目标函数就变成了一个开口向上的二次函数。而如果我们只看 α i \alpha_i αi的话,那么目标函数就变成了一个斜率小于0的直线方程。如下图所示,大家可以尝试去解一下这样一个目标函数,你会发现min和max的先后位置并不影响最终的结果。

SVM Target Function

像这样的目标优化函数,我们常常称为凸优化函数。除此以外,我们引入的 α i \alpha_i αi必须要满足KKT条件,这一点就不必多说了,KKT条件是要求我们在将不等式约束条件引入到目标函数表达式当中时, α i \alpha_i αi的取值要符合奖惩的规则,且要以最大力度去惩罚以及最轻的力度去奖励。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值