【机器学习笔记】SVM

本文深入探讨了支持向量机(SVM)的概念,从线性SVM的数学建模,包括超平面方程、分类间隔、约束条件,到拉格朗日函数和KKT条件,再到非线性SVM的核技巧。通过SMO算法解决对偶问题,并介绍了如何在Python的Scikit-learn库中构建SVM分类器。最后,文章提供了选择SVM还是Logistic回归的指导原则。
摘要由CSDN通过智能技术生成

本文学习自 https://zhuanlan.zhihu.com/ml-jack

SVM支持向量机

一、什么是SVM

对于一个分类问题,数据是线性可分的,也就是可以用一根棍子把两种小球分开,并且让小球距离棍子的距离最远,也就是要求最大间隔。
在这里插入图片描述
但是,当数据不是线性可分的时候,就不能找到一根棍子来区分小球,这时候需要把小球映射到高维空间,然后找一张纸来分类。想要让数据映射到高维空间,就需要核函数(kernel),用于切分的平面就是超平面。
在这里插入图片描述

二、线性SVM

由于棍子的位置可以有很多个,为了分类效果最好,我们就要找最大间隔,也就是支持向量到超平面的距离之和最大,这样就能最大化的区分两个类别。

1、数学建模

(1)超平面方程

二维空间下的直线方程:y=ax+b
把y轴替换成x2,把x轴替换成x1:x2=ax1+b
移项得到:ax1-x2+b=0
将公式向量化,得到:
在这里插入图片描述
进一步向量化:
在这里插入图片描述
其中,在这里插入图片描述
若在坐标系中画出,可以发现w是直线的法向量y是直线的截距。

然后可以推广到n空间,公式依然没变,只是向量的维数增加到n维。
在这里插入图片描述在这里插入图片描述

(2)分类间隔方程

在这里插入图片描述
间隔=2d,d就是点到直线的距离
在这里插入图片描述
扩展到多维的距离公式:
在这里插入图片描述
d就是“分类间隔”。||W||是W的二范数,表示所有元素的平方和,再开方。

(3)约束条件

有两个问题:

  1. 如何判断超平面将样本点正确分类?
  2. 如何找到支持向量(距离超平面最近的点)?

这就是约束条件,也就是变量d的取值范围受到了约束。

对于二维平面,对样本xi进行标记:
在这里插入图片描述
如果超平面方程能够正确分类样本点,就会满足下面的方程:
在这里插入图片描述
进一步,可以写成:
在这里插入图片描述
上述公式的解释就是,对于所有分类标签为1和-1样本点,它们到直线的距离都大于等于d(支持向量上的样本点到超平面的距离)
再将公式两边都除以d:
在这里插入图片描述
其中,
在这里插入图片描述
此时依然可以描述一条直线:
在这里插入图片描述
把wd和yd替换成w,y:
在这里插入图片描述
因此,我们可以找到一些超平面,使得对于所有样本点,满足:
在这里插入图片描述
这就是SVM最优化问题的约束条件。
也可以变为:
在这里插入图片描述

(4)SVM基本描述

现在可以知道,支持向量上的样本点,满足:
在这里插入图片描述
而我们要求
在这里插入图片描述
可以转化为
在这里插入图片描述
因此求解d最大化,也就是求解||w||最小化。
进而等价于:
在这里插入图片描述
因此,最终的目标函数和约束条件就是:
在这里插入图片描述

(5)拉格朗日函数

使用拉格朗日方程,就是把约束条件放到目标函数中去,从而将有约束优化问题转化为无约束优化问题。

需要两个步骤:

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

首先第一步:
公式变形:
在这里插入图片描述
其中αi是拉格朗日乘子,αi大于等于0。
令:
在这里插入图片描述
当样本点在可行解区域内时,θ(w)为原目标函数本身;否则就是无穷大。
在这里插入图片描述
现在,我们的问题变成了求新目标函数的最小值,即:

在这里插入图片描述
然后第二步:
对于新目标函数,是先求最大值,再求最小值。因此使用拉格朗日函数对偶性,将最小和最大的位置交换一下:

在这里插入图片描述
交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用d*来表示。
我们需要让d=p此时需要:这个优化问题必须是凸优化问题,并且满足KKT条件。

(6)KKT条件

在这里插入图片描述
在这里插入图片描述

(7)对偶问题求解

已知:
在这里插入图片描述
第一步:
首先固定α,要让L(w,b,α)关于w和b最小化,我们分别对w和b偏导数,令其等于0。
在这里插入图片描述
将上述结果带回L(w,b,α)得到:

在这里插入图片描述
第二步:
里面最小值求完了,要求外面最大值。
在这里插入图片描述
这个时候就需要采用SMO算法来求解。我们通过这个优化算法能得到α,再根据α,我们就可以求解出w和b,进而求得我们最初的目的:找到超平面。

2、SMO算法

步骤:

1、求误差
在这里插入图片描述
2、计算上下边界,分别是y1=y2时、y1!=y2时
在这里插入图片描述
3、计算η:
在这里插入图片描述
4、更新αj:
在这里插入图片描述
5、根据取值范围修剪αj:
在这里插入图片描述
6、更新αi:
在这里插入图片描述
7、更新b1和b2:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值