支持向量机
硬间隔SVM
问题定义
考虑下图二维的二分类问题,如果要寻找一条直线对数据进行分类,那么可以找到很多条符合条件的直线,如 H 2 , H 3 H_2, H_3 H2,H3。在这些直线中,如何选择一个最优的直线呢?
一个直观的感受是,一个较好的直线应该具有以下条件:
- 直线能够对所有样本正确分类。
- 直线应该尽可能地在这两类样本的 “中间”。
直线应该在这两类点的 “中间” (如 H 3 H_3 H3),而不是过于靠近样本点 (如 H 2 H_2 H2),从而当数据产生细小波动时,直线仍能正确分类。那么如何表示 直线应该在这两类点的 “中间” ?
我们定义一个间隔,表示样本中距离直线最近的点,这个点到直线的距离。那么,对于每一条直线,都可以用间隔来衡量直线与样本的靠近程度。那么,直线应该在这两类点的 “中间”,也就是要最大化直线与样本点之间的间隔。
对于二维的数据,需要寻找直线进行划分,对于更高维的数据,寻找的是一个超平面进行划分。超平面由法向量 w w w 和截距 b b b 组成,形式为:
w T x + b = 0 w^Tx + b = 0 wTx+b=0
如果可以寻找到一个超平面对数据全部正确分类,那么我们称这些数据是线性可分的。
考虑线性可分的训练数据 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D = \{(x_1, y_1), (x_2, y_2), ..., (x_m, y_m)\} D={ (x1,y1),(x2,y2),...,(xm,ym)},其中 y i ∈ { − 1 , 1 } y_i \in \{-1, 1\} yi∈{ −1,1} ,这里用 { − 1 , 1 } \{-1, 1\} { −1,1} 而不是 { 0 , 1 } \{0, 1\} { 0,1} 表示负样本和正样本,主要是为了之后的计算方便。我们的目标是寻找一个最优的超平面 w T x + b = 0 w^Tx + b = 0 wTx+b=0 进行分类。根据之前我们的条件:
- 超平面能够对所有样本正确分类。
我们使用超平面对 x i x_i xi 分类时,如果 w T x i + b < 0 w^Tx_i + b < 0 wTxi+b<0,则认为 y i = − 1 y_i = -1 yi=−1;如果 w T x i + b > 0 w^Tx_i + b > 0 wTxi+b>0,则认为 y i = 1 y_i = 1 yi=1。因此,对于一个样本 x i x_i xi,如果 y i ( w T x i + b ) > 0 y_i(w^Tx_i+b) > 0 yi(wTxi+b)>0,那么该样本被正确分类。 因此,如果超平面能够对所有样本正确分类,那么其需要满足
y i ( w T x i + b ) > 0 , i = 1 , 2 , . . . , m y_i(w^Tx_i + b) > 0, i = 1, 2, ..., m yi(wTxi+b)>0,i=1,2,...,m
- 超平面应该尽可能地在这两类样本的 “中间”。
点到超平面的距离 d = ∣ w T x + b ∣ ∥ w ∥ d = \frac{|w^Tx+b|}{\|w\|} d=∥w∥∣wTx+b∣,根据间隔的定义,间隔等于
m a r g i n = min i = 1 , 2 , . . . , m ∣ w T x i + b ∣ ∥ w ∥ margin = \min_{i=1, 2, ..., m} \frac{|w^Tx_i+b|}{\|w\|} margin=i=1,2,...,mmin∥w∥∣wTxi+b∣
而 y i ( w T x i + b ) > 0 y_i(w^Tx_i + b) > 0 yi(wTxi+b)>0, ∣ y i ∣ = 1 |y_i| = 1 ∣yi∣=1,因此 ∣ w T x + b ∣ = y i ( w T x + b ) |w^Tx+b| = y_i(w^Tx+b) ∣wTx+b∣=yi(wT