SVM涉及距离,和KNN一样,要做数据标准化处理。
看吴恩达SVM,补充笔记https://blog.csdn.net/qq_xuanshuang/article/details/105361122
Hard Margin SVM:前提,样本是线性可分的
SVM:最大化margin,其中margin=2d,即SVM要最大化d。
回忆解析几何,点到直线的距离:
经过一系列变化,最优化的目标是(带约束的最优化问题)
线性可分支持向量机利用间隔最大化求解最优分离超平面(解是唯一的)。
一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。在超平面确定的情况下,能够相对地表示点x距离超平面的远近。而的符号与类标记y的符号是否一致能够表示分类是否正确。所以可用来表示分类的正确性及确信度,这就是函数间隔(functionalmargin)。
定义超平面关于训练数据集T的函数间隔为超平面关于T中所有样本点的函数间隔之最小值,函数间隔可以表示分类预测的正确性及确信度。但是选择分离超平面时,只有函数间隔还不够。因为只要成比例地改变w和b,例如将它们改为2w和2b,超平面并没有改变,但函数间隔却成为原来的2倍。这一事实启示我们。可以对分离超平面的法向量w加某些约束,如规范化,,使得间隔是确定的。这时函数间隔成为几何间隔(geometric margin)。
定义超平面关于训练数据集T的几何间隔为超平面关于T中所有样本点的几何间隔之最小值,即
求一个几何间隔最大的分离超平面,即最大间隔分离超平面。具体地,这个问题可以表示为下面的约束最优化问题:
即我们希望最大化超平面关于训练数据集的几何间隔,约束条件表示的超平面关于每个训练样本点的几何间隔至少是。考虑几何间隔和函数间隔的关系式,可将这个问题改写为:
函数间隔的取值并不影响最优化问题的解。事实上,假设将w和b按比例改变为和,这时函数间隔成为。函数间隔的这一改变对上面最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就是说,它产生一个等价的最优化问题。这样,就可以取。将代入上面的最优化问题,注意到最大化和最小化是等价的,于是就得到下面的线性可分支持向量机的最优化问题:
在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例成为支持向量。支持向量使约束条件式等号成立的点,即
对的正例点,支持向量在超平面
上,对的负例点,支持向量在超平面
上,如下图:在H1和H2上的点就是支持向量
注意到H1和H2平行,并且没有实例点落在它们中间。在H1与H2之间形成一条长带,分离超平面与它们平行且位于它们中央。长带的宽度,即H1与H2之间的距离成为间隔。间隔依赖于分离超平面的法向量w,等于,H1和H2称为间隔边界。
在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型成为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。
带约束的最优化问题可用拉格朗日算子求解。
其中,,为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
所以,为了得到对偶问题的解,需要先求对w,b极小,再求对的极大。
(1) 求分别对w,b求偏导数并令其等于0。
将(3)带入(1)有
即
(2)求对的极大,即是对偶问题。
将上面的目标函数由求极大转换成求极小,则得下面与之等价的对偶最优化问题。
解出后,求出和即可得到模型:
注意到是不等式约束,因此上述过程需满足KKT条件,即
注:KKT条件主要包含三大部分:
①:拉格朗日乘子≥0
②:原问题的约束条件
③:拉格朗日函数中的拉格朗日乘子项=0从KKT条件可以看出,对于任意训练样本 ,总有或。若,则该样本将不会出现在式(4)的求和项中,即不会对f(x)有任何影响;若,则必有 ,即该样本位于最大间隔边界上,是一个支持向量。这显示出支持向量机一个重要结论:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
下面两幅图,均是Hard Margin SVM,第一个可能泛化不好,第二个线性不可分,Hard Margin SVM无法得到结果,无法应用。
Soft Margin SVM
其思想,允许模型犯一定的错误,Hard不允许有样本存在在这两条线之间,soft可以。其中不是一个固定的值,而是每个样本都有自己的,例我们有m个样本,则也有m个数值,即每一个数据点都可以有一个容错空间。
经过一系列变化,最优化的目标是(带约束的最优化问题)
带约束的最优化问题可用拉格朗日算子求解。
其中,。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
所以,为了得到对偶问题的解,需要先求对极小,再求对的极大。
(1) 求分别对求偏导数并令其等于0。
将(3)带入(1)有
即
(2)求对的极大,即是对偶问题。
将上面的目标函数由求极大转换成求极小,则得下面与之等价的对偶最优化问题,并消去
注意到是不等式约束,因此上述过程需满足KKT条件,即
注:KKT条件主要包含三大部分:
①:拉格朗日乘子≥0
②:原问题的约束条件
③:拉格朗日函数中的拉格朗日乘子项=0从KKT条件可以看出,对于任意训练样本 ,总有或。若,则该样本将不会出现在式(4)的求和项中,即不会对f(x)有任何影响;若,则必有 ,即该样本是一个支持向量,因为,若,则,进而有,即该样本恰好位于最大间隔边界上;若,则,此时若,则该样本在最大间隔边界内部,若,则该样本被错误分类。这显示出支持向量机一个重要结论:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
之前的优化目标可以利用一系列数学手段转换成如下的式子,可以看出有样本之间的点积,按之前的特征工程,若想要多项式特征,可先将样本的特征转变为多项式特征,然后再点积。
核函数的想法是,不用对样本的特征进行转变,而是直接找到一个函数,该函数对原样本的结果与先对原样本特征进行处理再点积的结果一致。
举个,例如我们想要二阶特征,即我们想要特征,只需要这样的核函数
多项式核函数:
线性核函数:,即对样本特征不进行任何处理,即使用原特征。
核函数K(x,y)就是重新定义x和y的点积。
高斯核函数的本质是将一个样本点映射到一个无穷维的特征空间。高斯核对每一个数据点都是landmark,把m*n的数据映射成了m*m的数据。
高斯核:举个直观理解一下,原先是,我们这边固定一下y,即y不取样本点而取固定点,这边固定点是,这两个特殊点通常称为landmark(地标点)。若有两个地标,高斯核函数就将其升为二维样本点,其取值如中间的图。高斯核对每一个数据点都是landmark,把m*n的数据映射成了m*m的数据。
高斯核函数与高斯函数形似,他们之间参数也有点关系。高斯函数中代表均值,代表标准差,其中越大,方差越大,函数分布越宽;其中越小,方差越小,函数分布越窄;然后高斯函数中的相当于高斯核函数中的,故越大,方差越小,函数分布越窄;其中越小,方差越大,函数分布越宽。
可用来调节模型复杂度,越大,模型越复杂(越大,分布越窄,与该样本x相邻的样本y影响更大,在该样本x的附近形成小钟形),越小,模型越简单(越小,分布越宽,与该样本x相邻的样本y影响相对偏小,考虑了附近更多的样本y,在该样本x的附近形成钟形较大)。
由小到大,
参考:https://coding.imooc.com/learn/list/169.html