最小二乘和SVM都是大家熟悉的算法,但是一般讲SVM或者最小二乘时都不会讲到它们之间的联系,但实际上SVM是可以从最小二乘中推导出来的。
- 关于最小二乘
为了便于理解后面的SVM,这里还是先简单说一下最小二乘学习法。以最容易的ℓ2约束的最小二乘学习法为例:
首先定义误差函数JLS(θ)=12∑i=1n(fθ(xi)−yi)2
其中“LS”是Least Square的首字母,我么需要得到的是:
θ^LS=argminθJLS(θ)
如果使用线性模型:
fθ(x)=∑j=1bθiϕi(x)=θTϕ(X)
训练样本的平方差 JLS 就可以表示为:
JLS(θ)=12∥Φθ−y∥2
这里y=(y1,…,yn)T是训练输出的n维向量,Φ是下式定义的n×b阶矩阵,也称设计矩阵
Φ=⎛⎝⎜⎜ϕ1(x1)…⋮ϕ1(xn)…ϕb(x1):ϕb(xn)⎞⎠⎟⎟
为了防止过拟合,我们通常对 θ 加以限制,这里用 ℓ2 约束:
s.t.∥θ∥2≤R
最小二乘暂时就介绍到这里,至于解法不是我们的重点所以略过。 - Hinge损失
对于二分类问题, y∈{−1,1},我们得到θ^后,测试模式x所对应的类别y的预测值y^,是由学习后的输出结果符号决定的。
y^=sign(fθˆ(x))
那么定义 0/1损失为:
12(1−sign(fθ(x)y))
这个式子等价于:
δ(sign(fθ(x)≠y)={0(Sign(fθ(x))≠y)1(sign(fθ(x))=y)
定义 m=fθ(x)y,则Hinge损失定义为:
max{0,1−m},是训练样本相关的Hinge损失达到最小,就是Hinge损失最小化学习。因为有 y∈{−1,1},所以y2=1或1y=y,那么ℓ2损失就可以不使用残差r=fθ(x)−y,而使用间隔m=fθ(x)y来表示:
r2=(y−fθ(x))2=y2(1−fθ(x)/y)2=(1−fθ(x)y)2=(1−m)2
Hinge损失,当m≥1的时候,与0/1损失相同,其损失为0,另一方面当m≤1的时候,其损失为1−m>0,当其损失为正的时候,与m相关的函数有倾向于负的趋势。Hinge的字面意思是合页,如下图就是合叶,Hinge损失就像合叶打开了135o,因此而得来。
将损失与m的关系绘制出来如下:
接下来,Hinge最小化学习表示为:
minθ=∑i=1nmax{0,1−fθ(xi)yi}
接下来,对在核模型中引入截距γ的下式
fθ,γ(x)=∑j=1nθjK(x,xj)+γ
进行Hinge最小化学习,加入使用了核矩阵 Ki,j=K(xi,xj)的一般化ℓ2的正则化项。
minθ,γ[C∑i=1nmax{0,1−fθ,γ(xi)yi}+12∑i,j=1nθiθjK(xi,xj)]
这里,为了与支持向量机分类器相对应,式中没有使用 λ 作为正则化参数,而是使用了其倒数 C=1λ 。
我们引入虚拟变量 ξ :
max{0,1−m}=minξξs.t.ξ≥1−m,ξ≥0
那么正则化Hinge损失最小化学习问题转换为:
minθ,γ[C∑i=1nξi+12∑i,j=1nθiθjK(xi,xj)]
约束条件为:
ξi≥1−fθ,γ(xi)yi,ξi≥0,∀i=1,…,n
我们再回忆一下标准的SVM式子:
minω,γ,ξ12∥ω∥2+C∑i=1nξi,s.tξi≥1−(ωTψ(xi)+γ)yi
ξi≥0,∀i=1,…,n
在上面的优化问题中,设ω=∑nj=1θjψ(xj),如果利用条件ψ(xi)Tψ(xj)=K(xi,xj)的话,就可以完成上面2个式子的转换了,也就是说支持向量机分类器可以用一般化ℓ2约束的Hinge损失最小化学习来解释。