文章目录
1. Liner Support Vector Machine
1.1 SVM引出
SVM是一种分类器。现在有两种类别(如下图),我们要找到一条直线,将两个不同的类别区分开。图中存在许多满足条件的直线,我们该选哪条最合适呢?
直观上来说,我们有几种考虑因素:①能容忍更多噪声,②模型更健壮,不会过拟合。
这个问题可以等价于:选择一条直线,判断该直线到最近的点的距离究竟是远还是近。我们希望这条直线更"fat"(如上图最后一条直线),也就是直线到最近的点的距离越远越好。
1.2 SVM中的margin计算
定义分类线有多胖,也就是看距离分类线最近的点与分类线的距离,我们把它用margin表示。
整体来说,我们的目标就是找到这样的分类线并满足下列条件:
- 分类正确。能把所有正负类分开。即 y n ω T x n > 0 y_n\omega^Tx_n>0 ynωTxn>0
- margin最大化
有了上述条件,那么如何计算点到分类线的距离呢?
为了便于计算,做一个小小的改动,将 ω ( ω 0 , ω 1 , … , ω d ) \omega(\omega_0,\omega_1,…,\omega_d) ω(ω0,ω1,…,ωd)中的 ω 0 \omega_0 ω0拿出,替换为b。同时省去 x 0 x_0 x0项。假设函数hypothesis就变成了 h ( x ) = s i g n ( ω T x + b ) h(x)=sign(\omega^Tx+b) h(x)=sign(ωTx+b)。
那么,点到分类平面的距离公式为:(推导见视频)
d i s t a n c e ( x , b , w ) = ∣ ω T ∣ ∣ ω ∣ ∣ ( x − x ′ ) ∣ = 1 ∣ ∣ ω ∣ ∣ ∣ ω T x + b ∣ distance(x,b,w)=|\frac{\omega^T}{||\omega||}(x-x')|=\frac{1}{||\omega||}|\omega^Tx+b| distance(x,b,w)=∣∣∣ω∣∣ωT(x−x′)∣=∣∣ω∣∣1∣ωTx+b∣
具体的求距离步骤:
①写出hyperplane ω 1 x 1 + ω 2 x 2 + . . . + ω d x d + b = 0 \omega_1x1+\omega_2x2+...+\omega_dxd+b=0 ω1x1+ω2x2+...+ωdxd+b=0的形式
②求 ∣ ∣ ω ∣ ∣ = ω 1 2 + ω 2 2 + . . . + ω d 2 ||\omega||=\sqrt{\omega_1^2+\omega_2^2+...+\omega_d^2} ∣∣ω∣∣=ω12+ω22+...+ωd2
③将距hyperplane最近的点代入 ω T x = b \omega^Tx=b ωTx=b中
④求③绝对值,代入距离公式计算最终结果
1.3 margin计算公式的简化
为了简化计算,做一个放缩,令距离分类面最近的点满足 y n ( w T x n + b ) = 1 y_n(w^Tx_n+b)=1 yn(wTxn+b)=1。那么我们所要求的margin就变成了:
m a r g i n ( b , w ) = 1 ∣ ∣ w ∣ ∣ margin(b,w)=\frac{1}{||w||} margin(b,w)=∣∣w∣∣1
目标形式简化为:
另外,最大化问题 m a x 1 ∣ ∣ w ∣ ∣ max\frac{1}{||w||} max∣∣w∣∣