1-1 基本流程
一、概念:
SVM:寻找到一个超平面使样本分成两类,并且间隔最大。而我们求得的w就代表着我们需要寻找的超平面的系数
与超平面的距离表示分类的确信度, 距离越远则分类正确的确信度越高
超平面方程
一条直线方程, 其中m是斜率, c是直线在y轴的截距:y = mx + c
超平面的一般方程如下:
wTx=0
其中w和x是向量, w^Tx是两个向量的点积。 向量w通常被称为权重。 w,x皆为向量,
wx+b=0就是a1*x1+a2*x2+…an*xn+b=0
二维空间里面, 一条直线的方程可以表示为: Ax+By+C=0
三维空间里面, 平面的方程可以表示为: Ax+By+Cz+D=0
依次推广, n维空间的超平面方程可以表示为:
0Ax1+Bx2+Cx3+Dx4+Ex5+Fx6+….+K=0
因为n维空间对应的是n维坐标系, 仅仅用x、 y、 z几个字母较难表示, 所以此处用x1、 x2、 x3、 …、 xn来表示n维坐标系, 各个维度的系数此处也可以用w1、
w2、 w3、 …、 wn来表示, 所以n维空间里面的超平面方程可以写成如下形式:
w1x1+w2x2+w3x3+w4x4+…+wnxn+b=0
求:超平面间距离
x2D=x1+tw=||tw||=|t|||w||w.x2+b2=0w.(x1+tw)+b2=0w.x1+t||w||2+b2=0(w.x1+b1)−b1+t||w||2+b2=0−b+t||w||2+b2=0t=b2−b1||w||2D=|t|||w||D=b2−b1||w||2||w||=b2−b1||w||
最大化2||w||,等价于最小化1\2*||w||^2
满足约束:yi(w^txi+b) >=1
SVM为什么采用间隔最大化?
间距大增大了超平面到支持向量点的距离,增强对未知分类的泛化能力
超平面线性方程:
wTx+b=0
样本中任意点到超平面距离:
r=|wTx+b|||w||
求解过程如下:
二、数学模型:
样本正确分类:
数据集(x1,y1)(x2,y2)到(xn,yn)
y(x)=w^Tθ(x)+b
y为样本的类别:
当x为正例时候 y = +1
当x为负例时候 y = -1
可得
y(xi)>0−−>yi=+1
y(xi)<0−−>yi=−1
可推出
yi.y(xi)>0
找到一个条线(w和b),使得离该线最近的点能够最远argmax(w,b)使得min(最近的点到该线的距离)
yi.(wT.Φ(xi)+b)||w||
对于线(w,b)可以通过缩放使得其结果值|y|≥1
yi.(wT.Φ(xi)+b)≥1
argmaxw,b{1||w||mini[yi.(wT.Φ(xi)+b)]}
argmaxw,b1||w||
目标函数:
maxw,b1||w||
且(约束条件)
yi.(wT.Φ(xi)+b)≥1
转换成最小值:
minw,b12w2
且
yi.(wT.Φ(xi)+b)≥1
拉格朗日乘子法标准格式:
min f(x)
st gi(x)≤0, i = 1,…,m
拉格朗日乘子法为:
F(x,λ)=f(x)+∑k=1Iλkhk(x)
约束条件为:
1−yi.(wT.Φ(xi)+b)≤0
并且:
f(x)=12w2
h(x)=1−yi.(wT.Φ(xi)+b)
带入拉格朗日乘子法得:
L(w,b,a)=12||w||2−∑i=1nai(yi.(wT.Φ(xi)+b)−1)
分别对w和b求偏导(求极值),分别得到两个条件
δLδwδLδb=0 => w=∑i=1naiyiΦ(xi)=0 => 0=∑i=1naiyi
推导如下:
L(w,b,a)=12||w||2−∑i=1nai(yi.(wT.Φ(xi)+b)−1)=12wTw−wT∑i=1naiyiΦ(xi)−b∑i=1naiyi+∑i=1nai=∑i=1nai−12(∑i=1naiyiΦ(xi))T∑i=1naiyiΦ(xi)=∑i=1nai−12∑i=1,j=1naiajyiyjΦT(xi)Φ(xi)
为了解决个别正例和负例样本点很接近时,引入松弛因子
当C趋近于无穷大时,容忍度越低,分类越严格
当C趋近于很小时,意味着容忍度很高
yi(w·xi+b)≥1-ζ
目标函数:
min12||w|2+C∑i=1nζi
L(w,b,ζ,a,u)=12||w||2−C∑i=1nai(yi.(wT.xi+b)−1+ζi)−∑i=1nuiζi
可以推出:
w=∑i=1naiyi.Φ(xi)0=∑i=1naiyiC−ai−ui=0
带入原式:
−12∑i=1n∑j=1naiajyiyj(xi.xj)+∑i=1nai∑i=1naiyi=0C−ai−ui=0ai≥0ui≥00≤ai≤C
仍然求对偶函数
min12∑i=1n∑j=1naiajyiyj(xi.xj)−∑i=1nai∑i=1naiyi=00≤ai≤C
1-2 核问题
一、核函数
假设X是输入空间,H是特征空间,存在一个映射ž使得X中的点x能够计算得到H空间中的点h,对于所有的X中的点都成立:
h=Φ(x)
若x,z是X空间中的点,函数k(x,z)满足下述条件,那么都成立,则称k为核函数,而ž为映射函数:
k(x,z)=Φ(x).Φ(z)
我们现在考虑核函数
K(v1,v2)=<v1,v2>2
,即“内积平方”。
这里面
v1=(x1,y1),v2=(x2,y2)
是二维空间中的两个点。
这个核函数对应着一个二维空间到三维空间的映射,它的表达式是:
P(x,y)=(x2,2–√xy,y2)
可以验证,
<P(v1),P(v2)>=<(x21,2–√x1y1,y21),(x22,2–√x2y2,y22)>=x21x22+2x1x2y1y2+y21y22=(x1x2+y1y2)2=<v1,v2>2=K(v1,v2)
在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类:
1) 线性:
K(v1,v2)=<v1,v2>
2) 多项式:
K(v1,v2)=(γ<v1,v2>+c)n
3) Radial basis function:
K(v1,v2)=exp(−γ||v1−v2||2)
4) Sigmoid:
K(v1,v2)=tanh(γ<v1,v2>+c)
在 SVM 中设定一个参数「C」;从而你可以在两种结果中权衡:
1. 拥有很宽的间隔;
2. 精确分离训练数据;
C 的值越大, 意味着在训练数据中允许的误差越少。
必需强调一下这是一个权衡的过程。如果想要更好地分类训练数据, 那么代价就是间隔会更宽。以下几个图展示了在不同的 C 值中分类器和间隔的变化(未显示支持向量) 。
1、 对于线性可分数据, SVM 工作地非常出色。
2、对于近似线性可分数据, 只要只用正确的 C 值, SVM 仍然可以工作地很好。
3、对于线性不可分数据,可以将数据映射到另一个空间使数据变得完美或者几乎完美
线性可分, 将问题回归到了 1 或者 2。
映射到高维空间:
xi=(xi1,xi2)
其对应的映射点的坐标为:
xi=(x2i1,x2i2,2–√xi1xi2)
二、常用核函数:
①线性核
线性核, 主要用于线性可分的情况,我们可以看到特征空间到输入空间的维度是一样的,其参数少速度快,对于线性可分数据, 其分类效果很理想。
K(xi,xj)=<xTi,xj>
②多项式核
多项式核, 可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候, 核矩阵的元素值将趋于无穷大,计算复杂度会大到无法计算。 (d≥1为多项式的次数)
K(xi,xj)=(xTi,xj)d
③高斯(RBF) 核函数
斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个, 无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核
函数的时候, 优先使用高斯核函数多项式核。(σ>0为高斯核的带宽 )
K(xi,xj)=exp(−||xTi−xj||22σ2)
④sigmoid核函数
采用sigmoid核函数,支持向量机实现的就是一种多层神经网络。 ( tanh为双曲正切函数, β>0,θ<0)
K(xi,xj)=tanh(βxTixj+θ)
四、核函数选择依据及核矩阵:
核函数选择依据:
1,如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
2,如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
3,如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。
小结
SVM优点:
1、解决小样本下机器学习问题。
2、解决非线性问题。
3、无局部极小值问题。(相对于神经网络等算法)
4、可以很好的处理高维数据集。
5、泛化能力比较强。
SVM缺点:
1、对于核函数的高维映射解释力不强,尤其是径向基函数。
2、对缺失数据敏感。