给定训练样本
D=(x⃗ 1,y1),x⃗ 2,y2),...,x⃗ n,yn),yi∈{+1,−1}
超平面为
w⃗ Tx⃗ +b=0
平面的法向量为
w⃗
对于训练数据集D假设找到了最佳超平面
w⃗ ∗Tx⃗ +b∗=0
,定义决策分类函数
f(x⃗ )=sign(w⃗ ∗Tx⃗ +b∗)
该决策函数也称为
线性可分支持向量机
空间中超平面可记为(\vec w,b),空间中任意点到超平面(\vec w,b)的距离为
r=w⃗ x⃗ +b||w⃗ ||
{w⃗ Tx⃗ i+b≥+1,yi=+1w⃗ Tx⃗ i+b≤−1,yi=−1
也就是
yi(w⃗ Tx⃗ i+b≥±1)
记超平面
w⃗ Tx⃗ i+b=+1
和
w⃗ Tx⃗ i+b=−1
之间的距离为
γ
γ=2||w⃗ ||
要找到具有最大间隔的最佳超平面,即
{maxw⃗ ,b2||w⃗ ||s.t. yi(w⃗ Tx⃗ i+b)≥+1,i=1,2,...n
等价于
{minw⃗ ,b12||w⃗ ||2s.t. yi(w⃗ Tx⃗ i+b)≥+1,i=1,2,...n
求解这一问题本质上是
凸二次规划问题,可以使用现成的QP优化包求解,还可以使用
拉格朗日对偶性变换到对偶变量的优化问题,即通过求解与原问题等价的对偶问题来求解。
使用拉格朗日对偶性求出
α⃗
后,再求解出
w⃗
和b即可得到SVM决策模型
f(x⃗ )=w⃗ T+b=∑i=1nαiyix⃗ Tix⃗ +b
核函数
事实上,大部分时候数据并不是线性可分的,这个时候满足这样条件的超平面就根本不存在
为了使其线性可分,把一些变量映射到高维空间,但是这样会出现维数爆炸的问题,因为如果原空间特征是n维的,映射到
n2
维空间里,就会使内积计算的复杂度从
O(n)
变为
O(n2)
核函数:任意两个样本点在扩维后的空间的内积,如果等于这两个样本点在原来空间经过一个函数后的输出,那么这个函数就叫核函数
也就是
f(x,y)=<ϕ(x),ϕ(y)>=ϕ(x)T⋅ϕ(y)
这个f就是核函数。
有了核函数,我们就可以减少高维空间内积的计算复杂度
核函数有效性判定
核函数矩阵:给定m个特征向量
x1,x2,...,xn
,我们可以将任意两个
xi,xj
代入,计算m*m的矩阵
Mij=K(xi,xj),i∈[1,m],j∈[1,m]
定理:如果K是有效的核函数,那么核函数矩阵是对称半正定的
如果K是有效的核函数,那么我们不需要去找映射φ,直接计算内积即可。
线性核函数
K(x1,x2)=(xT1x2)2
高斯核函数
K(x1,x2)=e−||x1−x2||22δ2
逻辑回归 or 线性SVM?
特征多,数据量小:逻辑回归
特征少,数据量足够:线性SVM(创建更多变量,不带核函数)
SVM不存在局部最优,另外比神经网络一般要快