一、SVM原理与模型数学推导
支持向量机,SVM(Support Vector Machine),其实就是一个线性分类器。在最初接到这个算法时,我们可能会一头雾水:这个名词好奇怪[问号脸],怎么“支持”?什么“向量”,哪来的“机”?
(一)由决策边界开始
1 分类中的“不适定问题”
首先,我们看一个简单的二分类问题。在二维的特征平面中,所有的数据点分为了两类:蓝色圆形和黄色三角。我们的目标是找到了一条决策边界,将数据分类。但实际上我们可以找到多条决策边界。
这就所谓的“不适定问题”。“不适定问题”会影响模型的泛化性。比如在下面的模型中,被黄色箭头标出的点被决策边界划为蓝色圆点,但实际上它和黄色三角更近一些。也就说决策边界的选择,不仅要考虑已经存在的数据上的是否分类正确,还要考虑是否能够更好地划分未出现的测试数据:
逻辑回归算法如何解决“不适定问题”问题呢?首先定义一个概率函数sigmoid函数:
σ ( t ) = 1 1 + e − t σ(t)=\frac {1}{1+e^{-t}} σ(t)=1+e−t1
然后根据概率函数进行建模:
P ( Y = 1 ) = 1 1 + e − θ T ⋅ X b P(Y=1)=\frac{1}{1+e^{-θ^T\cdot X_b}} P(Y=1)=1+e−θT⋅Xb1
建立损失函数:
J ( θ ) = − 1 m ∑ i = 1 m y ( i ) l o g ( σ ( θ T ⋅ X b ( i ) ) ) + ( 1 − y ( i ) ) l o g ( 1 − σ ( θ T ⋅ X b ( i ) ) ) J(θ)=-\frac{1}{m}\sum_{i=1}^my^{(i)}log(σ(θ^T\cdot X_b^{(i)}))+(1-y^{(i)})log(1-σ(θ^T\cdot X_b^{(i)})) J(θ)=−m1i=1∑my(i)log(σ(θT⋅Xb(i)))+(1−y(i))log(1−σ(θT⋅Xb(i)))
最小化损失函数,从而求出一条决策边界(线性):
x 2 = − θ 0 − θ 1 x 1 θ 2 x_2=\frac{-θ_0-θ_1x_1}{θ_2} x2=θ2−θ0−θ1x1
(以上内容逻辑回归算法)
也就说,逻辑回归的损失函数完全是由训练数据集确定的。
2 SVM中的决策边界
支撑向量机如何解决“不适定问题呢”?SVM要找到一条泛化性比较好的决策边界,就是这条直线要离两个分类都尽可能的远,我们认为这样的决策边界就是好的:
如上图所示:在上面的两个类别中,离决策边界最近的点到决策边界的距离尽可能地远。
那也就是说,我们可以忽略其他大部分的数据点,只关注这几个特殊的点即可。
(二)Support Vector & Margin
1 定义及思想
将最优决策边界向上&下平移,在遇到第一个点时停下来,这个点被称为支撑向量Support Vector;支撑向量到决策边界的距离是d;这两条平移后的直线的间隔(2d)被称为最大间隔Margin。
支撑向量就是支撑着两条平移边界的点,我们只需要重点研究这几个支撑向量即可,这也是SVM名称的由来;Margin就是分界面可以移动的范围,范围越大表示容错能力越强。
所以我们可以看到,所谓的支撑向量机,最初就是一个线性分类器,只不过这个线性分类器不仅能把样本分对,可以最大化Margin。
到目前为止,我们就将SVM转换为了一个最优化问题,下面的工作就是求出Margin的数学表达式,即将支撑向量机思想转化为数学问题。
2 转化为最优化问题(核心)
回忆解析几何的知识,点(x ,y)到直线 A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0的距离:
d = ∣ A x + B y + C ∣ A 2 + B 2 d=\frac {|Ax+By+C|}{\sqrt{A^2+B^2}} d=A2+B2∣Ax+By+C∣
扩展到n维空间:x点 ω T x + b = 0 ω^Tx+b=0 ωTx+b=0到(其中ω是n维向量,b是截距)的距离为:
d = ω T x + b ∣ ∣ ω ∣ ∣ , ∣ ∣ ω ∣ ∣ = ω 1 2 + ω 2 2 + . . . + ω n 2 + d=\frac{ω^Tx+b}{||ω||},||ω||=\sqrt{ω_1^2+ω_2^2+...+ω_n^2+} d=∣∣ω∣∣ωTx+b,∣∣ω∣∣=ω12+ω22+...+ωn2+
然后我们去找决策边界的表达式:
求出在满足下面的条件下,ω的值是多少。
{ ω T x ( i ) + b ≥ 1 ∀ y ( i ) = 1 ω T x ( i ) + b ≤ − 1 ∀ y ( i ) = − 1 \left\{\begin{matrix} ω^Tx^{(i)}+b\geq 1 & \forall y^{(i)}=1\\ ω^Tx^{(i)}+b\leq -1 & \forall y^{(i)}=-1\end{matrix}\right. {
ωTx(i)+b≥1ωTx(i)+b≤−1∀y(i)=1∀y(i)=−1
我们将上面的两个式子进行合并,即可以将 y ( i ) y^{(i)} y(i)提到前面去。这样,支撑向量机的所有数据点都要满足下面的式子:
y ( i ) ( ω T x ( i ) + b ) ≥ 1 y^{(i)}(ω^Tx^{(i)}+b)\geq 1 y(i)(ωTx(i)+b)≥1
对于任意支撑向量点x到决策边界的距离为d,我们要最大化Margin,将前面的式子带入后得到 m a x 2 ∣ ω T x ( i ) + b ∣ ∣ ∣ ω ∣ ∣ max\frac{2|ω^Tx^{(i)}+b|}{||ω||} max∣∣ω∣∣2∣ωTx(i)+b∣,也就是 m a x 2 ∣ ∣ ω ∣ ∣ max\frac{2}{||ω||} max∣∣ω∣∣2。即相当于最小化 m i n 1 2 ω T ω min\frac{1}{2}ω^Tω min21ωTω。
OK,现在我们已经得到了SVM的最优化问题:
Φ ( x ) = 1 2 ω T ω Φ(x)=\frac{1}{2}ω^Tω Φ(x)=21ωTω s.t. y ( i ) ( ω T x ( i ) + b ) ≥ 1 y^{(i)}(ω^Tx^{(i)}+b)\geq 1 y(i)(ωTx(i)+b)≥1
即最优化的目标函数为 m i n 1 2 ω T ω min\frac{1}{2}ω^Tω min21ωTω,还要有限定条件( s . t . s u b j e c t t t o , s.t. subjecttto, s.t.subjecttto,受
限制于):所有数据满足 y ( i ) ( ω T x ( i ) + b ) ≥ 1 y^{(i)}(ω^Tx^{(i)}+b)\geq 1 y(i)(ωTx(i)+b)≥1
我们发现,SVM的最优化问题是有限制条件的,与之前接触的没有限制条件的全局最优化问题的计算方法很不同。
(三)求解有条件限制的最优化问题
1 数学推导
通过六步数学推导,求解有条件限制的最优化问题。如果觉得吃力,大家可以仅仅了解推导过程,记住结果即可。
第一步:给出表达式
对于有约束条件的最优化问题,用拉格朗日乘数法来解决,得到( a i a_i ai是拉格朗日系数):
L p = 1 2 ∣ ∣ ω ∣ ∣ 2 − ∑ i = 1 l a i y i ( ω T ⋅ x i + b ) + ∑ i = 1 l a i L_p=\frac{1}{2}||ω||^2-\sum_{i=1}^la_iy_i(ω^T\cdot x_{i}+b)+\sum_{i=1}^la_i Lp=21∣∣ω∣∣2−i=1∑laiyi(ωT⋅xi+b)+i=1∑lai
此时,我们要求 L p L_p Lp基于ω,b的极小值。
第二步:求导
我们对ω,b进行求导,可以得到两个式子:
∂ L p ∂ ω = 0 ⇒ ω = ∑ i = 1 l a i y i x i \frac{\partial L_p}{\partial ω}=0\Rightarrow ω=\sum_{i=1}^l{a_iy_ix_i} ∂ω∂Lp=0⇒ω=i=1∑laiyixi
∂ L p ∂ b = 0 ⇒ ∑ i