今天看了一些关于SVM的文章,在这写下自己的学习总结。
首先了解一下基础公式:
首先以下图为例,
我们将图中分为方框以及圆形,方框的一类为wx+b =1 圆圈的一类为wx+b=-1
我们可以用wx+b-1-(wx+b+1) = w(x1-x2)=2得到:
||w|| ||(x1-x2)||cosθ=2 ----第一张图向量内积公式得到
||w||d=2 -----三角函数得到
d=2 / ||w||
(x1-x2)已经标注在图上,θ是角d x2 x1
我们需要的就是两条线的距离最大就是我们的d最大。
也就是求d= 2/||w||最大,也就是等于求||w||^2/2最小(目标函数)
设置条件wx+b >=1 时y =1, wx+b<=-1时y=-1 合并得到***y(wx+b >=1)***
下面开始拉格朗日乘子法:
通过求导W和b我们可以得到:
由于极小值相对好算,那么我们使用用对偶的方法:
min(w,b)max(a)L(w,b,a) --> max(a)min(w,b)L(w,b,a)【公示1】
然后回到上面的拉格朗日方程,开阔号:
接下来用我们第三张图求导的结果来约分化简:
回到公式1这时候我们求完了w,b的最小值,就需要继续求a的最大值,同样,最大值不方便算,再转换成求最小:
下面举两个例子:
例子1
那我们我们设定上面为1下面为-1,分为两类,这样可以得到x1(3,3,1),x2(4,3,1),x3(1,1,-1)
然后求解
下面一张条的计算方式就是把我们的数据带进方程,例如18 是33+33=18,42是
34+33+34+33=42, 14就是(1*-1)(41+31+41+31)=-14
接下来更具a1+a1-a3=0 得到a1+a2 = a3再带入到式子中。
然后对a1和a2求导:
由于a2是负数,不符合我们的条件。
那么我们就要分别探究a1和a2分别等于0 的情况:
a1为0时a2为负,不符合我们的要求,所以只能选用a2为0时的情况。那么求由公式:a1+a2=a3得到a3 也等于0.25. 那么我们这个求min(a)的最后的结果就是
(0.25,0,0.25)
接下来就可以通过式子
算出w的值:w1=w2=0.5. 然后由公式wx+b=y得到y-wx = b,b=-2
x1和x3就称为 我们的支持向量。
例子2
拓展:
如火使用实线做我们的超平面,那离两个群都太近了,所以我们就需要松弛因子,让我们的函数更有包容性。 这种情况也叫做线性不可分。
e就是我们的松弛变量。
这就成为了我们的惩罚函数,和我们的目标函数结合:
通过这个函数让我们错分越少越好。所以C无穷大时,我们的分类就越严格,越不允许有错。C越小时,就能容忍很大的错误。
同时a(i)的条件变为
拓展2核函数
由于可能出现维度爆炸,计算巨大,所以需要非线性转换,那就需要特定的核函数。
例子:
常用的核函数: