支持向量机(SVM)
支持向量机SVM
-
对于分类问题,还有一种算法叫做支持向量机SVM,我们简化一下二分类数据,假设这些数据只有二维特征,其数据如下:
我们希望找到一条线,把这些数据能够分类识别,图中三条线,H1是失败的,H2和H3都可以正确分类,但是明显肉眼可以识别出,H3要比H2更好,对于新的未知数据其准确度也是更高的,它们却别在于两类数据集中,距离分割线最近点离分割线的距离,H3要比H2更大(灰色四条法线)。所以在对新的数据进行分类,H3要比H2更准确。推广到N维特征向量和分类超平面,各类数据中距离分类超平面最近的点(向量)就是支持向量。当我们调整超平面的方程时,使得支持向量与超平面的距离最大化。就得到最优分类超平面。这就是支持向量机SVM的算法。
-
SVM怎么得到分类超平面?让我们接着往下看:
1.SVM由线性分类开始
-
给定样本集
对于,当然不会只是认为y只能是-1或1.如果y=2000表示正向,或y=0表示反向,y=300表示正向,或y=5是正向。y只是一个标签,标注为{-1,1},方便描述,所以
线性分类器基于驯良样本D再二维空间找到一个超平面分来二类样本,当然这样超平面由很多:
注意:为范数,用来度量某个向量空间(或矩阵)中的每个向量的长度或大小
由上图,这根红线代表超平面抗扰动性最好,这个超平面离支线两边数据的间隔最大,对训练集的数据巨行星或噪声最大容忍能力。
这个超平面用如下函数表示
当等于0时候,x便是位于超平面点上。而大于0点对应y=1的数据点,小于0的点对应y=-1的点。
所谓支持向量,使得大于+1或小于-1就更加支持样本分类。为什么要这么搞:
我们可以计算得到空间中任意样本到点超平面的距离为:,如下图:
有:(简单平面集合),因为在超平面上,,也就是,代入上式,可以得到:,为了得到r的绝对值,令r乘上对应的类别y.就可得出几何间隔。从上面可以看出,几何间隔除以才是直观超平面的距离。
因,超平面上下支持向量到超平面距离都为1,则它们间隔为
对于分类,我们已经假设。那么
则SVM最大分类间隔为max margin,因为我们前面定义。
(margin是直线距离,每一类样本中所有样本点到直线的距离为):
单侧margin应该是每一类样本中到超平面最近点与超平面的距离(支持向量到超平面距离)那么margin等于2倍单侧margin。两个支持向量距离,如下:
回到我们之前假设,我们有,则有:
消除分子中绝对值则有:
当存在任意值a大于0,使得,
我们使a=1,简化运算那么得到:
于是SVM目标进一步变为:
2.线性可分到线性不可分
2.1.1线性可分到线性不可分
由于求的最大值相当于求的最小值, 所以上述目标函数等价于 (w由分母变为分子,所以从max变为min):
因此现在目标函数是二次,约束条件是线性的,是凸二次规划问题。由于问题特殊结构通过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即通过求解与原问题等价的对偶问题(dual problem)得到原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样做的优点在于:一者对偶问题往往更容易求解;二者可以自然的引入核函数,进而推广到非线性分类问题。
那什么是拉格朗日对偶性呢?简单来讲,通过给每一个约束条件加上一个拉格朗日乘子(Lagrange multiplier),定义拉格朗日函数(通过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出我们的问题):
比如对公式1
每一个约束(共有m个约束,),添加拉格朗日乘子,则整个问题函数可表示为:
然后我们令:
为何使用这样拉格朗日乘子,又为何这样构建?我们目标函数是不等式约束,解决二次规划问题,我们选择用KKT条件,而KKT条件需要这样一个约束.最终我们通过KKT条件来产生原问题对偶问题。
可以看到由于,这样,单反又约束条件值一不满足,如,那么显然(只要令即可)而当所有约束条件均满足时,$\Theta(w) \frac{1}{2}||w||2\frac{1}{2}||w||2\Theta(w) a_i≥0,i=1,...,n\Theta(w) $会等于无穷大, 也不会得到最小值。机题函数如下:
这里用表示最优值,那么首先需要面对,两个参数,而又是不等约束,这个求解过程过于复杂不容易做,不如把最小和最大位置交换一下如下:
交换以后的新问题是原始问题的对偶问题,这个新问题最优值用来表示,并且有,在满足某县条件下,这两者之间相等。此时可以求解对偶问题来间接地求解原始问题。(之所以从minmax的原始问题转换成maxmin对偶问题,一是因为是的近似解,二是转化为对偶问题后,更容易求解)。下面可以先求对,的极小值,再求对的极大值。
(如果对对偶问题不是很理解可以点此一个简单案例,能让你更好理解对偶问题)
2.1.2KTT条件
上述中存在着情况下,两者是等价。所谓"存在着"就是要满足KTT条件
一个最优化数学模型能够表示成下列形式:
由上式可以看出式最小化的函数,式等式约束,式不等式约束,和分别为等式约束和不等式约束。
同时需要明白:
凸优化的概念: 为一凸集,
为一凸函数。凸优化就是要找出一点
,使得每一
满足
。
KKT条件的意义:它是一个非线性规划(Nonlinear Programming)问题能有最优化解法的必要和充分条件。
于是最优化数学模型最优解必须满足条件如下:
2.1.3对偶问题求解3步骤:
- 1.首先固定,让关于和最小化。
- 2.求对极大,即让关于对偶问题最优化问题
- 3.再求关于和最小化
未完待续。。。
原文链接参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库