1 支持向量机的特点:
- 泛化错误率较低,计算开销不大,结果容易解释;
- 对于参数和核函数选择敏感
- 可以适用于标称型数据和数值型数据
2 SVM解释如下:
- 对于二分类问题,寻找其线性可分的可能性。如果能够实现分割,则称为分割超平面。具体的,对于N维数据,需要构建一个(N-1)维的超平面。
- 由于超平面的构建的多样性,可以引入支持向量的概念,来量化分割超平面的好坏,从而定义超平面两侧的点到超平面的最小垂直距离
- 将超平面两侧点到超频面的最小垂直距离称为间隔,希望间隔越小越好,这样能够实现较高的数据容差,保证了分类器的稳健。而支持向量就是离分隔超平面最近的点。
3 如何求解点到分割超平面的距离?
- 为了研究分割超平面,首先需要给出其数学形式,最简单的N维数据分割超平面形式为
w⃗ Tx⃗ +b=0
w
→
T
x
→
+
b
=
0
,其中
w⃗
w
→
为
N*1向量, x⃗ x → 为N*1向量,而b为标量。 - 对于任意一点A,坐标记为 (x1,x2,...,xN) ( x 1 , x 2 , . . . , x N ) ,距离上述分割超平面的距离为 |w⃗ TA⃗ +b|||w⃗ || | w → T A → + b | | | w → | | 。数学证明可以采用向量方式,初等数学即可。
4 如何评价分类情况的好坏
- 对于计算得到的超平面方程,可以将测试点带入,这样可以得到一个数据,具体来说,代入点 u⃗ u → ,计算 y=w⃗ Tu⃗ +b y = w → T u → + b 。然后将结果输入到一个二分类的非线性函数中,得到映射后的分类情况。
- 支持向量机使用的非线性函数是采用label=+-1映射的情况,因此可以使用 label(w⃗ Tu⃗ +b) l a b e l ( w → T u → + b ) ,这样当结果较大时,则表明点u在离超平面很远的地方,间距较大。当然,如果分类错误,则会产生一个负数,负数越大,证明分类的误差越大。
5 如何定义优化的目标函数
- 根据上述分析,可以定义出一个优化问题: 存在参数(向量w和标量b),需要步骤4的表达式,也就是 label(w⃗ Tu⃗ +b) l a b e l ( w → T u → + b ) 尽量大。由于存在多个u,则可以定义评价函数。
- 问题表述为(较难求解)
argmaxw⃗ ,b{min(label∗(w⃗ Tu⃗ +b)||w⃗ ||)} arg max w → , b { min ( l a b e l ∗ ( w → T u → + b ) | | w → | | ) }
6 标准形式的推导
- 上式较难求解,可以采用等效变换的方式。首先,向量 w⃗ w → 和标量 b b 可以同时放大或者缩小k倍,这并不会影响上述求解值(向量平移性质有关)。因此,可以利用该条件,定义,其中支持向量能够使得等式成立。如果满足该条件,那么原问题也成立。当然,这是假设分类均正确
- 接下来,对于分数形式的优化,可以采用最小化分子项和最大化分母项来进行,分子项最小为1,因此该式可以转换为如下的优化问题:
argminw⃗ ,b1||w⃗ || arg min w → , b 1 | | w → | | - 为了能够求解上一个优化问题,结合二次规划算法,可以最终将等式转化如下:
argminw⃗ ,b12||w⃗ ||2,st.yi(w⃗ Txi→+b)>=1 arg min w → , b 1 2 | | w → | | 2 , s t . y i ( w → T x i → + b ) >= 1 - 对于上述问题,可以利用凸二次优化方法进行求解。QP方法 quadratic programming
7 对偶形式推导
7.1 拉格朗日乘子法: 将带约束的情况转换为无约束情况。
- 对于等式约束的拉格朗日乘子法,其原理为(可能的一种理解方法):
- 对于 minf(x⃗ ),st.wi→Tx⃗ +bi=0,i=1...N min f ( x → ) , s t . w i → T x → + b i = 0 , i = 1... N ,可以转换为无约束的等式 L(x⃗ ,αi)=f(x⃗ )+∑i=1 to Nαi(wi→Tx⃗ +bi) L ( x → , α i ) = f ( x → ) + ∑ i = 1 t o N α i ( w i → T x → + b i ) ;
- 对于上式L,求解对于x的偏导项,则可以得到x关于 αi α i 的表示,x项从 ∂f/∂x ∂ f / ∂ x 产生,而 αi α i 从后面的项产生;
- 将x关于 αi α i 的表示带入约束等式中,可以得到 αi α i 的值,该值能够保证约束等式成立,也就是说, L(x,αi)=L(αi)=f(x) L ( x , α i ) = L ( α i ) = f ( x ) 。而对于 L(x,α) L ( x , α ) 显然是通过进行偏微分求最小化的过程,这也意味着,得到的 α α 能够保证 f(x) f ( x ) 得到最小化的结果;
- 将
αi
α
i
带入x等式,得到满足条件的等式。
综上,也就是说,如果能够找到一组 αi α i ,使得x能用 αi α i 表示,保证满足约束等式。那么,无约束问题等于有约束问题,而对于无约束问题的求导,则对应了有约束问题的导数值为0的情况。
- 一般的拉格朗日乘子法(KKT条件),这里将非线性优化问题转换为固定的优化问题,可以尝试采取算法进行求解。
- 对于KTT条件的一种理解方法是,如果存在一个优化的x不满足该条件,如果h(x)!=0,那么可以取 β β 很大,则L趋于无穷大;如果g(x)>0,那么取 α α 很大,则L也趋于无穷大。这两种情况都不存在极值。
- 或者另外一种理解方法(不一定对),对于L进行 α α 偏导时,得到的是g(x),该函数始终小于0,则导致无法得到有效极值。因此需要存在第四项条件。
- 第三项条件是由于g(x)<=0约束得到,当不满足 α>=0 α >= 0 ,则 α α 可以取极小的负数,也不存在极值。
综上,得到了一个无约束条件的函数 Θp(x)=maxα,β;α>=0L(x,α,β) Θ p ( x ) = max α , β ; α >= 0 L ( x , α , β ) ,求解该问题时,如果x满足约束条件,则 Θp(x)=f(x) Θ p ( x ) = f ( x ) ,否则将趋于无穷大。
7.2 对于SVM的等效变换
对于下列优化问题,
argminw⃗ ,b12||w⃗ ||2,st.yi(w⃗ Txi→+b)>=1 arg min w → , b 1 2 | | w → | | 2 , s t . y i ( w → T x i → + b ) >= 1
可以利用拉格朗日乘子法进行等效,
argmaxw⃗ ,b12||w⃗ ||2+∑i=1Nαi(1−yi(w⃗ Txi→+b)) arg max w → , b 1 2 | | w → | | 2 + ∑ i = 1 N α i ( 1 − y i ( w → T x i → + b ) )
该广义变换需要满足如下条件:
∂L(w⃗ ,b,αi)/∂w⃗ =0 ∂ L ( w → , b , α i ) / ∂ w → = 0
∂L(w⃗ ,b,αi)/∂b=0 ∂ L ( w → , b , α i ) / ∂ b = 0
∂L(w⃗ ,b,αi)/∂αi=0 ∂ L ( w → , b , α i ) / ∂ α i = 0
αi>=0 α i >= 0
yi(w⃗ Txi→+b)>=1 y i ( w → T x i → + b ) >= 1
∑i=1Nαi(1−yi(w⃗ Txi→+b)=0 ∑ i = 1 N α i ( 1 − y i ( w → T x i → + b ) = 0
该问题本质是求解一个 minw⃗ ,bΘp(x)=minw⃗ ,bmaxαi;αi>=0L(w⃗ ,b,αi) min w → , b Θ p ( x ) = min w → , b max α i ; α i >= 0 L ( w → , b , α i ) ,这是一个极小极大值问题,内层带约束项,可以利用拉格朗日对偶原理转换为极大极小值问题,内层优化问题无约束。由于内层优化无约束,则可以利用导数为零获得,获得的w和b为内层最优化的候选解。
∂L(w⃗ ,b,αi)/∂w⃗ =0 ∂ L ( w → , b , α i ) / ∂ w → = 0
∂L(w⃗ ,b,αi)/∂b=0 ∂ L ( w → , b , α i ) / ∂ b = 0
该等式的结果为:
w⃗ =∑i=1Nαiyixi→ w → = ∑ i = 1 N α i y i x i →
∑i=1Nαiyi=0 ∑ i = 1 N α i y i = 0
将这两个等式带入,则得到只包含外层优化的情况,该优化问题是一个约束优化问题:
maxαi;αi>=0(∑i=1Nαi−12∑i=1N∑j=1Nαiαjyiyjxi→Txj→) max α i ; α i >= 0 ( ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i → T x j → )
st. αi>=0;∑i=1Nαiyi=0 s t . α i >= 0 ; ∑ i = 1 N α i y i = 0
8 SVM的求解和最终形式确定
- 通过SMO等方法,可以求得上述优化问题的 αi α i ,然后 w⃗ w → 可以利用 w⃗ =∑i=1Nαiyixi→ w → = ∑ i = 1 N α i y i x i → 得到。
- b的确定需要追溯到开始的简化条件,因为前面,我们假设了 yi(w⃗ Txi→+b)>=1 y i ( w → T x i → + b ) >= 1 ,并且对于支持向量等号成立。另外一方面,根据拉格朗日乘子法的一些性质,当 αi>0 α i > 0 ,则对应的输入 xi x i 即为支持向量。
- 具体的操作是,选取所有
αi>0
α
i
>
0
,对于每一个
αi
α
i
,带入下面等式,其中下标为i代表支持向量。
b∗=yi−∑j=1Nαjyj<xi→,xj→> b ∗ = y i − ∑ j = 1 N α j y j < x i → , x j → > 为了进一步缩小误差,可以采用平均方法,将所有的 αi>0 α i > 0 的情况得到的b进行平均
最终得到的分类器如下所示,因此对于SVM的结果存储,可以只存储求解得到的 αi>0 α i > 0 和对应的支持向量 xi→ x i → ,以及求解得到的 b∗ b ∗ 。预测过程中所需要的内存空间非常小。
f(x⃗ )=sign{∑i=1N(α∗iyi<xi→,x⃗ >+b∗)} f ( x → ) = s i g n { ∑ i = 1 N ( α i ∗ y i < x i → , x → > + b ∗ ) }- SVM没有假设数据的分布情况,其最优的思想来源于使得不同类别距离分类平面的间距尽量大。
9 允许分类错误的SVM推导
如下图所示,左侧为无分类错误的硬间隔SVM,右侧为存在分类错误的软间隔SVM。在右图中,存在训练错误的包括了 ξ∗1,ξ∗2,ξ∗3,ξ∗4,ξ∗5 ξ 1 ∗ , ξ 2 ∗ , ξ 3 ∗ , ξ 4 ∗ , ξ 5 ∗ 。
因此对于软间隔SVM,存在以下五种分类情况:- 在间隔以外的情况,这是分类正确的情况,并且这类数据不构成支持向量( αi=0,yif(xi→)−1>0,ξi=0 α i = 0 , y i f ( x i → ) − 1 > 0 , ξ i = 0 )
- 在间隔线上,这也是分类正确的情况,这类数据构成支持向量( C>αi>0,yif(xi→)−1=0,ξi=0 C > α i > 0 , y i f ( x i → ) − 1 = 0 , ξ i = 0 )
- 在间隔内部,但是未达到分类错误的地步,例如 ξ∗1,ξ∗2,ξ∗4 ξ 1 ∗ , ξ 2 ∗ , ξ 4 ∗ ,此时对应了 αi=C,yif(xi→)−1<0,0<ξi<1 α i = C , y i f ( x i → ) − 1 < 0 , 0 < ξ i < 1
- 在分类超平面上,此时对应了 αi=C,yif(xi→)−1<0,ξi=1 α i = C , y i f ( x i → ) − 1 < 0 , ξ i = 1
- 跨过分类超平面,此时分类错误,对应了 αi=C,yif(xi→)−1<0,ξi>1 α i = C , y i f ( x i → ) − 1 < 0 , ξ i > 1
综合上述分析,可以得到下列的基于hinge-loss的SVM优化问题:
- 同样利用拉格朗日乘子法进行优化,并结合拉格朗日对偶原理,得到的优化问题如下:
为了使得上述两式相等,需要满足KKT条件:
对于上上式,内层求解为无约束情况,则可以通过求解偏导数为0得到候选等式,然后带入外层得到等效的问题,该问题得以极大简化,与硬间隔SVM相比,多了一个上约束,同样可以采用SMO进行求解。(多了一个等式约束 αi+μi=C α i + μ i = C )
- 在获得可行的 αi α i 后,可以得到 w⃗ =∑i=1Nαiyixi→ w → = ∑ i = 1 N α i y i x i → ,然后选取 C>αi>0 C > α i > 0 的情况,这对应了支持向量,求解得到 b∗=yi−∑Nj=1αjyj<xi→,xj→> b ∗ = y i − ∑ j = 1 N α j y j < x i → , x j → > 。而上述分析中的C控制允许误差的大小, ξi ξ i 对应了每一项的分类误差情况,输出为hinge-loss的大小。
- 总体总结如下:
- αi=0 α i = 0 ,此时分类正确,在间隔外部, ξi=0,μi=C ξ i = 0 , μ i = C
- C>αi>0 C > α i > 0 ,此时为支持向量, ξi=0,0<μi<C ξ i = 0 , 0 < μ i < C
- αi=C α i = C ,此时间隔内,误差由 ξi ξ i 决定, μi=0 μ i = 0
10. 非线性SVM的推导
- 实际操作时,将上述的 x⃗ Tx⃗ x → T x → 换成核函数即可。
- 非线性SVM运用的原理是,有限维属性的数据可以通过高维映射转化为高维可分的情况。而映射问题会出现无法预估映射后线性可分的可行性,以及可能会带来的过拟合问题,因此可以使用核函数代替高维映射操作,简化了操作。
值得注意的时,高维映射操作和核函数操作无直接关联,高维映射操作是通过升维内积的方式,而核函数是通过内积变换的方式,二者不存在对应关系。
能够作为核函数需要满足核函数定理,即对于任意一个矩阵,其列向量的内积构成的矩阵元素通过核函数操作后得到的矩阵是半正定的,那么该对称函数可以作为核函数。对称半正定还带来其他性质,例如行列式非负、顺序主子式非负、特征值非负等,其定义来自于二次型非负。
- 常用的核函数包括线性、多项式、高斯核、拉普拉斯核、sigmoid核。
- 核函数的正数线性组合、核函数的积、核函数与任意函数的组合同样为核函数,可以参考西瓜书page128~129.