支持向量机算法(Support Vector Machine,SVM)
SVM 硬间隔原理
SVM 软间隔
SMO 求解SVM
代码设计
SVM:所谓“支持向量”是指那些在间隔区边缘的训练样本点(即会遇到有些点很接近分割面,所以找个最优分割面),“机”是指算法。就是要找到具有最大间隔的分隔面,实际上是解决的是一个最优分类器设计的问题。
这是一种二分类模型,它基本模型是定义在特征空间上的间隔最大的线性分类器, 间隔最大使它有别于感知机(感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机学习旨在求出分离超平面),支持向量机还包含核技巧,这使它成为实质上的非线性分类器,支持向量机在处理二分类问题上表现非常优越,也是一个很好的算法了。 SVM 作为有监督的学习模型,通常可以帮我们模式识别、分类以及回归分析。
1、硬间隔
假如数据是完全的线性可分的,那么学习到的模型可以称为硬间隔支持向量机。换个说法,硬间隔指的就是完全分类准确,不能存在分类错误的情况。软间隔,就是允许一定量的样本分类错误。
参考我的博客,清晰易懂
https://blog.csdn.net/CSDNccfcsp/article/details/104392240
https://blog.csdn.net/CSDNccfcsp/article/details/104416552
2软间隔
硬间隔是方便用来分隔线性可分的数据,如果样本中的数据是线性不可分的呢?也就是如图所示:
有一部分红色点在绿色点那边,绿色点也有一部分在红色点那边,所以就不满足上述的约束条件: 𝑠.𝑡.𝑦𝑖(𝑥𝑖+𝑏)>1 ,软间隔的最基本含义同硬间隔比较区别在于允许某些样本点不满足原约束,从直观上来说,也就是“包容”了那些不满足原约束的点。软间隔对约束条件进行改造,迫使某些不满足约束条件的点作为损失函数,如图所示:
这里要区别非线性情况,非线性的意思就是一个圆圈,圆圈里是一个分类结果,圆圈外是一个分类结果。这就是非线性的情况。
其中当样本点不满足约束条件时,损失是有的,但是满足条件的样本都会被置为0,这是因为加入了转换函数,使得求解min的条件会专注在不符合条件的样本节点上。
但截图中的损失函数非凸、非连续,数学性质不好,不易直接求解,我们用其他一些函数来代替它,叫做替代损失函数(surrogate loss)。后面采取