---
# System prepended metadata

title: '[Note] CS229 Lecture 6 : Support Vector Machine'
tags: [CS229, 筆記&講義]

---

# [Note] CS229 Lecture 6 : Support Vector Machine

---

上一篇: https://hackmd.io/@ChiuChiuCircle/cs229_5

---

Online lecture: https://youtube.com/playlist?list=PLoROMvodv4rMiGQp3WXShtMGgzqpfVfbU&si=vuAUi_ytVYB1Jc8V

Main notes: https://cs229.stanford.edu/main_notes.pdf
Other resources: https://github.com/maxim5/cs229-2018-autumn/tree/main

---

## Margins
還記得在二元分類中，
機率$p(y=1\vert x;\theta)是由h_\theta(x)=g(\theta^Tx)$所控制的，
當$h_\theta(x)\ge0.5\ \ \ (\theta^Tx\ge0)$ 則預測值將會輸出$1(positive)$。

我們在得到結果時，
會希望模型對答案的肯定度越高越好(cross entropy越小越好)，
所以當$y=1\ \ 時\ \ \theta^Tx\gg0$，
或是當$y=0\ \ 時\ \ \theta^Tx\ll0$，
這個$\theta$就能被稱作適合此訓練資料(informally)。

![IMG_0741](https://hackmd.io/_uploads/SJ8Mj2-sa.jpg =50%x)
上面這張圖展現了二元分類，
分隔兩類是**決策邊界(decision boundary)**，又稱為**separating hyperplane**。

我們可以看到，
A跟C雖然都在同一類，
但A比C在分類上更有信心(margin比較大)。

所以現在看來，
最大化margins是我們優化預測的好方法。

## Notation
我們之前的$y=\{0,1\}$，現在$y=\{-1,1\}$。
並且將分類器如此表示:
$$h_{w,b}(x)=g(w^Tx+b)$$
>$w:$ parameters
>$b:$ bias

之前我們用$\theta$表示參數，
現在改用$w取代\begin{bmatrix}\theta_1...\theta_d\end{bmatrix}^T$表示參數；
而$b是常數項，相當於\theta_0$，
所以可以發現，
$x_0(=1)$項被去掉了，
然後把$\theta_0提出為b$。


而在這裡$g(z)=1\ \ i\!f\ \ z\ge0$，
反之$g(z)=-1$

## Functional margin
對於training example $(x^{(i)},y^{(i)})$，
functional margin的定義如下:
$$\hat{\gamma}^{(i)}=y^{(i)}(w^Tx^{(i)}+b)$$

>$\hat{\gamma}^{(i)}:$ functional margin

從此式子我們可以發現，
由於

$y=1\ i\!f\ (w^Tx^{(i)}+b)\ge0$，
$y=-1\ i\!f\ (w^Tx^{(i)}+b)<0$，

所以當**分類正確時$\hat{\gamma}^{(i)}>0，\textbf{反之}\hat{\gamma}^{(i)}<0$**。

另外，對於$g(z)$還有一個性質，
如果我們將$w,b$都乘上一個數字並不會改變結果，
即$g(w^Tx^{(i)}+b)=g(2w^Tx^{(i)}+2b)$，
也就是不會改變$h_{w,b}(x)$；
但是$\hat{\gamma}^{\prime(i)}=2\hat{\gamma}^{(i)}$。
  
由於這個性質，
**縮放$w,b$** 會更動functional margin的大小，
所以施行標準化(normalization)便是合理的操作，
>:::spoiler 標準化
>注意這裡的標準化是指線性代數裡的標準化
>https://medium.com/ai%E5%8F%8D%E6%96%97%E5%9F%8E/preprocessing-data-%E6%95%B8%E6%93%9A%E7%89%B9%E5%BE%B5%E6%A8%99%E6%BA%96%E5%8C%96%E5%92%8C%E6%AD%B8%E4%B8%80%E5%8C%96-9bd3e5a8f2fc
>:::
我們後面會再提到。

剛剛上面的functional margin是對於第$i$筆資料，
對於有n筆資料的資料集$S=\{(x^{(i),y^{(i)}})\,;\,i=1,...,n\}$，
我們定義:
$$\hat{\gamma}=\min_{i=1,...,n}\hat{\gamma}^{(i)}$$
>$\hat{\gamma}:$ 整個資料集的functional margin

## Geometric margin

![IMG_0742](https://hackmd.io/_uploads/BkjOLWGi6.jpg =60%x)
**注意w垂直於決策平面**
>:::spoiler why?
>https://stackoverflow.com/questions/10177330/why-is-weight-vector-orthogonal-to-decision-plane-in-neural-networks
>:::
A點是其中一個$y=1$ (X)的training example，
它跟決策平面的距離是$\gamma^{(i)}$，
現在我們要有一種方法能找出$\gamma^{(i)}$。

B點是在決策邊界上的一點，
滿足$w^Tx+b=0$，
且B為$x^{(i)}-\gamma^{(i)}\cdot\frac{w}{||w||}$，

>::: spoiler 範數||n||
>簡單來說就是向量長度。
>
>設有一向量$x=(x_1,x_2,...,x_d)^T$，
>則定義:
>$$\Vert x\Vert_2:=\sqrt{\sum^d_{i=1}x_i^2}$$
>$\Vert x\Vert_2$稱為歐基里德範數(畢氏定理)，
>為了方便我們將其寫為$\Vert x\Vert$
>:::

>:::spoiler Why?
>雖然我們將$x_i$ (A、B)以"點"的形式化在圖上，
>但$x$其實是以向量形式存的，
>也就是原點到圖上資料點所形成之向量。
>
>$\frac{w}{\Vert w\Vert}$表示$w$的單位向量(unit-length vector)，
>也就是跟$w$方向相同，長度為1的向量。
>所以$\gamma^{(i)}\cdot\frac{w}{||w||}$是長度為$\gamma^{(i)}$，方向為$w$之方向的向量。
>
>剩下的就是向量加減法了
>:::

所以我們寫出:
$$w^T(x^{(i)}-\gamma^{(i)}\frac{w}{\Vert w\Vert})+b=0$$
接著解$\gamma^{(i)}$:
$$\gamma^{(i)}=\frac{w^Tx^{(i)}+b}{\Vert w\Vert}=(\frac{w}{\Vert w \Vert})^Tx^{(i)}+\frac{b}{\Vert w\Vert}$$

上面都是在$y=1$時的推導，
為了在$y=-1$時使用，
我們調整一下定義(只是多乘上$y^{(i)}$):
$$\gamma^{(i)}=y^{(i)}((\frac{w}{\Vert w \Vert})^Tx^{(i)}+\frac{b}{\Vert w\Vert})$$
現在就跟functional margin一樣，
在預測正確時$\gamma^{(i)}>0$，反之$<0$。
並且可以發現:
$$\gamma^{(i)}=\frac{\hat{\gamma}^{(i)}}{\Vert w\Vert}$$

>$\hat{\gamma}^{(i)}:$ functional margin
>$\gamma^{(i)}:$ geometric margin

geometric margin其實就是functional margin的**標準化結果**，
而且$\gamma^{(i)}$不會隨$w$改變，
這樣我們就能對$w,b$做任意調整。

最後，
我們同樣定義了對於整個dataset的geometric margin:
$$\gamma=\min_{i=1,...,n}\gamma^{(i)}$$

## Optimal margin classifier
自己讀(講義放上面了)
結論是經過縮放$\hat{\gamma}$ 後 :
$$min_{w,b}\ \ \ \ \ \frac{1}{2}\Vert w\Vert^2 $$
$$s.t.\ \ \ y^{(i)}(w^Tx^{(i)}+b)\ge1$$
