支持向量机(SVM)
一、基本概念
支持向量机算法就是在一堆线性可分数据中寻找到一条直线(二维)或者一个平面(三维)或者一个超平面(三维以上),使得可以将不同的样本数据分割开来。
二、线性可分
什么样的数据是线性可分的数据
-
首先我们假设要讨论的数据集为 ( X ⃗ , y ) (\vec{X},y) (X,y),其中 X ⃗ \vec{X} X是具有n维属性的向量, y y y为样本的标签,这里设置为 ± 1 \pm1 ±1(方便后续的推导过程)
-
假设存在一个超平面 ( W ⃗ , b ) (\vec{W},b) (W,b),这里 W ⃗ \vec{W} W是具有和 X ⃗ \vec{X} X相同维度的系数向量, b b b为偏置
基于上面的假设,我们有以下结论:
-
i f ( y i = = 1 ) : W T ⃗ X i ⃗ + b > 0 ( 公 式 1 ) if(y_i==1):\vec{W^T}\vec{X_i}+b>0\qquad (公式1) if(yi==1):WTXi+b>0(公式1)
-
i f ( y i = = − 1 ) : W T ⃗ X i ⃗ + b < 0 ( 公 式 2 ) if(y_i==-1):\vec{W^T}\vec{X_i}+b<0\qquad(公式2) if(yi==−1):WTXi+b<0(公式2)
则我们称此数据集是线性可分的
由公式1和公式2,我们可以推导出一个更加简洁的式子:
- y i ( W T ⃗ X i ⃗ + b ) > 0 ( 公 式 3 ) y_i(\vec{W^T}\vec{X_i}+b)>0\qquad(公式3) yi(WTXi+b)>0(公式3)
如何寻找最佳超平面
能够将线性可分数据分开的直线(超平面)有无数个,但是不同直线(超平面)对于数据的鲁棒性不同。
简单来说就是对于数据的容错性大小不同,如图所示,加入有一个红色样本点移动到箭头所示位置,则红线无法完美分开数据,同理蓝色直线。
而绿色直线因为距离两侧数据的距离之和达到最大,具有较好的鲁棒性(健壮性),因此就这幅图来说,绿线是最好的分割线(超平面)。
性能指标
从上面的简单示例中大家可以发现为了寻找到最优直线,我们有必要定义一个性能指标,最优直线就是性能指标最大的直线。
我们定义分割超平面到两侧支持向量(支撑向量)的距离为margin,最优超平面就是margin最大的超平面。
-
支持向量:
我们首先在两个样本集之间任取一个超平面,将超平面分别向两侧样本集平行靠近,最先穿过的样本点我们成为支持向量。
二、数学描述
要进行数学推导之前我们要先说明两个事实:
-
**事实1:**平面 W T ⃗ X i ⃗ + b = 0 \vec{W^T}\vec{X_i}+b=0 WTXi+b=0,则 a W T ⃗ X i ⃗ + a b = 0 a\vec{W^T}\vec{X_i}+ab=0 aWTXi+ab=0,其中 a ϵ R + a\epsilon R^+ aϵR+
-
**事实2:**点 ( X i ⃗ , y i ) (\vec{X_i},y_i) (Xi,yi)到直线 ( W ⃗ , b ) (\vec{W},b) (W,b)距离公式为:
∣ W T ⃗ X i ⃗ + b ∣ w 1 2 + w 2 2 + w 3 2 + . . . . . + w n 2 = ∣ W T ⃗ X i ⃗ + b ∣ ‖ W T ⃗ ‖ ( 公 式 4 ) \frac{|\vec{W^T}\vec{X_i}+b|}{\sqrt{w_1^2+w_2^2+w_3^2+.....+w_n^2} }=\frac{|\vec{W^T}\vec{X_i}+b|}{‖\vec{W^T}‖}\qquad(公式4) w12+w22+w32+.....+wn2∣WTXi+b∣=‖WT