支持向量机(Support Vector Machine)
-
要解决的问题:什么样的决策边界才是最好的?
-
特征数据本身如果很难分,怎么办?
-
计算的复杂度怎么样?能实际应用吗?
-
目标:基于上述问题对SVM进行推导
三条线都能够做分类,但是那一条线最好呢?
-
决策边界:选出来离雷区最远的(雷区就是边界上的点,要large margin)
数学推导过程:
这里我们假设 x 1 x^1 x1 、 x 2 x^2 x2 为所求平面( w T x = − b w^Tx=-b wTx=−b)上的两个点 ,满足上面的(1)式,其中w为垂直于平面的法向量,由于w垂直于平面,所以w垂直于平面的任意一条直线,所以有(2)式, x x x 为平面外面的一点,到平面的距离等于 x x 1 ⃗ \vec{xx^1} xx1 在法向量上的投影。
基于以上的式子,这里给出距离的方程:
而对于我们的数据集标签有如下的定义:
-
数据集:(x1,y1) (x2,y2) (x3,y3)
-
Y 为样本的类别: 当X 为正例的时候,Y =+1 当X 为负例的时候 Y=-1
-
决策方程: y ( x ) = w T Φ ( x ) + b y(x) = w^T\Phi(x) + b y(x)=wTΦ(x)+b (其中 Φ ( x ) \Phi (x) Φ(x) 是对数据做了变换)
= > y ( x i ) > 0 ⇔ y i = + 1 y ( x i ) < 0 ⇔ y i = − 1 => y(x_i)>0 \Leftrightarrow y_i =+1 \\ y(x_i) < 0 \Leftrightarrow y_i =-1 =>y(xi)>0⇔yi=+1y(xi)<0⇔yi=−1
= > y i y ( x i ) > 0 => y_iy(x_i)>0 =>yiy(xi)>0
优化目标
通俗的解释:找到一条线(w,b),使得离该线最近的点能够最远
将点到直线的距离化简得: y i ⋅ ( w T ⋅ Φ ( x i ) + b ) ∥ w ∥ \frac{y_i \cdot \big(w^T \cdot \Phi(x_i)+b \big)}{ \lVert w \lVert} ∥