SVM详细笔记,由浅入深,非常全面
第一部分,SVM简介
SVM的中文名字叫做支持向量机,是求解凸二次规划的最优算法。
SVM学习方法包括:线性可分支持向量机、线性支持向量机、非线性支持向量机,分别对应着训练数据线性可分,近似线性可分和线性不可分三种情况。
当输入数据线性不可分时,可以通过核函数将数据映射到更高维的空间中,使其变成线性可分的。
SVM百度百科.
第二部分 线性支持向量机
定义:对于给定的线性可分数据集,通过间隔最大化或者等价地求解相应的凸二次规划问题学习得到的分离超平面为:
w ∗ x + b = 0
(ps:在w,b能满足所有数据被分类正确的情况下,离超平面距离最近的点的距离要最大,也就是说,不仅仅只是要分类正确,而且在所有分类正确的情况下,离超平面距离最小的那个的值要最大)。
分类决策函数为:
f(x)=sign(w∗x+b)
可以用∣ w ∗ x + b ∣表示点x离超平面的距离,而w ∗ x + b的符号与y 的符号是否一致表示分类是否正确,所以可以用y ( w ∗ x + b ) 表示分类的正确性以及点离超平面的距离,叫做函数间隔,这样就去掉了绝对值。最后求解的函数为:
γ i = y i ( w ∗ x i + b )
要注意的一个问题的是,如果w b成倍的增加的话,超平面并没有发生改变,但是点离超平面的距离却变成为原来的两倍,所以我们需要对超平面的法向量w 加一些约束条件,使得距离是确定的。
几何间隔,定义:对于给定的训练集T和超平面(w,b)
定义超平面(w,b)关于样本点( x i , y i )的几何间隔为
γ i = y i / ∣ ∣ w ∣ ∣ ( w ∗ x i + b )
这里令y i ( w + x i + b ) = 1最后要求解的函数变成
min ~1/2||w||^2
s . t . y i ( w ∗ x i + b ) − 1 ≥ 0
6.在上面的函数中,求解时,并不是那么的容易,这里引入对偶算法,一是对偶问题往往跟容易求解,二是自然引入核函数,进而推广到非线性分类问题。
首先构造拉格朗日函数:
L ( w , b , α ) = 1 / 2 ∣ ∣ w ∣ ∣ 2 − Σ α i y i ( w ∗ x i + b ) + Σ α i
原始问题的对偶问题是极大极小问题max minL(w,b,α)
其核心有一些几点:
1. max min ,最小最大
2.点到超平面距离的假设
3.拉格朗日乘子法在约束条件下求解最优问题
4.优化问题的对偶性
这里说一下第四点,白话:最大值里面的最小值肯定比最小值里面的最大值大。
接下来总结一下实现步骤:
假设存在一个超平面 ,表示每个样本点到平面的距离为D (这里加了绝对值)
假设正样本为+1,负样本为-1。D<0,label = -1;D>0,label = +1; (这里D没有加绝对值)
去掉第一步D的绝对值,根据第二步可知,D * label > 0 ;
求解距离平面最小的点中,最大的那个。(每一次都会产生一个平面,也就是说每一次最小的点中,距离平面的值最大的那个点)
特征缩放 D *label >0,将其假设为 D *label > 1,便于计算
得到目标函数,利用拉格朗日乘子法,利用对偶性 ,求解问题。
分别对w,b求导,代入原式,然后代入数据后,对拉格朗日算子求导,然后令其为0。
求解算子,然后回算出w,b,得到该超平面。
上面就是一个最简单的svm实现的具体步骤,里面还需要注意一下细节,不如一些约束条件我没有写进去,在下面的公式中,我会列出来,在计算出值后,还要注意看看满不满足约束条件。
thank for your time !!
公众号:FPGA之旅