# Kernel Ridge Regression
既然 LogReg 可以 Kernelize,那我們也來把原本的 [Ridge Regression 問題](https://hackmd.io/@ShawnNTU-CS/B1Be6DN3n)給 Kernelize:
$$
\min_{\mathbf{w}} \frac{\lambda}{N}\mathbf{w}^{T}\mathbf{w}+\frac{1}{N}\sum_{n=1}^{N}(y_{n}-\mathbf{w}^{T}\mathbf{z}_{n})^{2}
$$
再搭配上一章提過的 Representer Theorem,可改成解 $\boldsymbol{\beta}$ 的 Linear model;並且由於這是 [Ridge Regression 問題](https://hackmd.io/@ShawnNTU-CS/B1Be6DN3n),所以可以使用一些線性代數和微積分的操作,找到公式解:
$$
\boldsymbol{\beta}=\left(\lambda\mathbf{I}+\mathbf{K}\right)^{-1}\mathbf{y}
$$
根據 Mercer's Condition,可以知道 $\lambda\mathbf{I}+\mathbf{K}$ 這個部分只要 $\lambda > 0$ 必定存在反矩陣。
因此我們在原版的 Linear Ridge Regression 上成功的使用了 Kernel Trick,可以容易解出 non-Linear Ridge Regression。
:::info
要注意 $I$ 是對角線都是 1 的矩陣,也就是 np.eye。不是 np.ones。
:::
## Tradeoff
線性的最佳解:
$$
\mathbf{w}=\left(\mathbf{Z}^{T}\mathbf{Z}+\lambda\mathbf{I}\right)^{-1}\mathbf{Z}^{T}\mathbf{y}
$$
非線性最佳解:
$$
\boldsymbol{\beta}=\left(\lambda\mathbf{I}+\mathbf{K}\right)^{-1}\mathbf{y}
$$
可以看出:
- 線性:
- 比較有限制
- 訓練需要 $O(d^{3}+d^{2}N)$
- 反矩陣運算會多一個次方
- 預測需要 $O(d)$
- 當 $N \gg d$ 時比較有效率
- 非線性
- 因為有了 $\mathbf{K}$ 所以比較有彈性
- 訓練需要 $O(N^{3})$
- 預測需要 $O(N)$
- 一旦當 $N$ 很大 效率就不太好
所以線性跟非線性就是效率跟彈性的取捨。
## Least-Squares SVM (LLSVM)
跟之前提到過的一樣, Regression 也可以拿來做分類;而拿來做分類的 KRR 又叫做 Least-Squares SVM。
$$
g(\mathbf{x})=sign\left(\sum_{n=1}^{N}\beta_{n}K(\mathbf{x}_{n},\mathbf{x})\right)
$$
:::info
要注意如果沒有用 kernel trick 需要自己補 $x_{0}$。
:::
## dense $\boldsymbol{\beta}$
但是 KLR 跟 KRR 有個共同的缺點,$\boldsymbol{\beta}$ 通常是緻密矩陣,也就是說 SV 的數量很多,人人都是 SV (?,一旦 N 很大運算就會很慢。
而 SVM 的 $\boldsymbol{\alpha}$ 反而是大多是 0 的 sparse matrix 稀疏矩陣。
所以對於 KRR 我們也希望可以有稀疏的 $\boldsymbol{\beta}$ 矩陣,於是我們想了新的 Regression err。
# Tube Regression
## $\epsilon$-insensitive error
「管子」內的不算錯,管子外的才開始算錯:
$$
err(y,s)=max(0,|s-y|-\epsilon)
$$
由於 err 是線性的,所以相比原本 Regression 的 二次 err,當 s 跟 y 偏差越大,也就是發生 outlier 的時候,更不容易被影響。
## L2-Regularized Tube Regression
$$
\min_{\mathbf{w}} \frac{\lambda}{N}\mathbf{w}^{T}\mathbf{w}+\frac{1}{N}\sum_{n=1}^{N}max(0,|\mathbf{w}^{T}\mathbf{z}_{n}-y_{n}|-\epsilon)
$$
要解這個會面臨兩個問題:
- 雖然沒有限制,但 max 存在不可微分的點
- 就算 kernelize 用下去,也看不出可以產生稀疏矩陣的地方
此時回想原本 SVM:
- 雖然可以表示成 max 形式,但是其對應著一個 QP 的形式,所以可以用 QP 來解
- 因為可以轉成 dual,在 KKT 條件下會產生稀疏矩陣的解
所以我們來模仿 SVM ,但是在那之前先轉換一下表示法:
$$
\min_{\mathbf{w},b} \frac{\lambda}{N}\mathbf{w}^{T}\mathbf{w}+\frac{1}{N}\sum_{n=1}^{N}max(0,|\mathbf{w}^{T}\mathbf{z}_{n}+b-y_{n}|-\epsilon)
$$
通常在 SVM 中習慣將 b 單獨列出來。
# Standard Support Vector Regression Primal
回想當初 SVM 為甚麼可以轉換成如下形式:
$$
\frac{1}{2}\mathbf{w}^{T}\mathbf{w}+C\sum_{n=1}^{N}max\left(1 - y_{n}(\mathbf{w}^{T}\mathbf{x}+b),0\right)
$$
- 如果 $1 - y_{n}(\mathbf{w}^{T}\mathbf{x}+b)\le0$,代表沒有犯任何錯
- 所以會導致取 max 後為 0
- 如果 $1 - y_{n}(\mathbf{w}^{T}\mathbf{x}+b)>0$,代表犯了錯
- 所以會導致取 max 後產生了錯誤量 $\xi_{n}$
所以對於沒有犯錯的點,$1 - y_{n}(\mathbf{w}^{T}\mathbf{x}+b)\le0$,那如果是有犯錯的點,**「如果我想要維持 $\le$ 的關係」**,我就必須在右側加上犯錯量,也就是 $1 - y_{n}(\mathbf{w}^{T}\mathbf{x}+b)\le \xi_{n}$,這樣就成功地維持了 $\le$ 的關係,也就代表我們成功的把 max 換成了 QP 問題中的線性條件:
$$
1 - y_{n}(\mathbf{w}^{T}\mathbf{x}+b)\le \xi_{n}\\
\xi_{n} \ge 0
$$
原本問題就可以轉成:
$$
\min_{b,\mathbf{w},\boldsymbol{\xi}} \frac{1}{2}\mathbf{w}^{T}\mathbf{w} + C\sum_{n=1}^{N}\xi_{n}
$$
所以依樣畫葫蘆:
$$
\min_{\mathbf{w},b} \frac{\lambda}{N}\mathbf{w}^{T}\mathbf{w}+\frac{1}{N}\sum_{n=1}^{N}max(0,|\mathbf{w}^{T}\mathbf{z}_{n}+b-y_{n}|-\epsilon)
$$
- 如果 $|\mathbf{w}^{T}\mathbf{z}_{n}+b-y_{n}|-\epsilon\le0$,代表落在管子內,沒有犯任何錯
- 所以會導致取 max 後為 0
- 如果 $|\mathbf{w}^{T}\mathbf{z}_{n}+b-y_{n}|-\epsilon>0$,代表落在管子外,犯了錯
- 所以會導致取 max 後產生了錯誤量 $\xi_{n}$
所以如果要維持 $\le$ 關係,就是一樣加上錯誤量:
$$
|\mathbf{w}^{T}\mathbf{z}_{n}+b-y_{n}|-\epsilon\le\xi_{n}\\
\xi_{n}\ge0
$$
原本問題就可以轉成...,可以嗎?還不行,因為條件中有絕對值,所以要拆開:
$$
|\mathbf{w}^{T}\mathbf{z}_{n}+b-y_{n}|\le\epsilon+\xi_{n}\\
\Rightarrow -(\epsilon+\xi_{n})\le y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b \le \epsilon+\xi_{n}
$$
但是既然變成了兩邊,我們可以知道一個點到時候只會需要看其中一邊就好,另一邊錯誤量是 0,所以兩個錯誤量要分開:
$$
-\epsilon-\xi_{n}^{\vee}\le y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b \le \epsilon+\xi_{n}^{\wedge}\\
\xi_{n}^{\vee}\ge0\\
\xi_{n}^{\wedge}\ge0
$$
有了線性條件後才可以把原問題轉成 QP 問題:
$$
\min_{b,\mathbf{w},\boldsymbol{\xi^{\vee}},\boldsymbol{\xi^{\wedge}}} \frac{1}{2}\mathbf{w}^{T}\mathbf{w} + C\sum_{n=1}^{N}\xi_{n}^{\vee}+\xi_{n}^{\wedge}
$$
所以我們成功的找到了 Support Vector Regression (Linear SVR) 的 Primal Problem。
- 有 $\tilde{d}+1$ 加上 $2N$ 個變數
- 有 $2N$ 加上 $2N$ 個條件
:::warning
將 max 轉換成線性限制的流程應該是重要的技巧,要記起來,也就是「保持 $\le$ 的話要...」的部分
:::
# SVR Dual
使用我們早已熟稔的傳統藝能,轉換成 dual 問題:
$$
\min_{\boldsymbol{\alpha^{\vee}},\boldsymbol{\alpha^{\wedge}}}\frac{1}{2}\sum_{n=1}^{N}\sum_{m=1}^{M}(\alpha^{\wedge}_{n}-\alpha^{\vee}_{n})(\alpha^{\wedge}_{m}-\alpha^{\vee}_{m})K_{n,m}+\sum_{n=1}^{N}\left((\epsilon-y_{n})\alpha^{\wedge}_{n}+(\epsilon+y_{n})\alpha^{\vee}_{n}\right)
$$
$$
\sum_{n=1}^{N}\alpha^{\wedge}_{n}-\alpha^{\vee}_{n} = 0\\
0\le\alpha^{\wedge}_{n}\le C \\
0\le\alpha^{\vee}_{n}\le C \\
$$
- 有 $2N$ 個變數
- 有 $2N+1$ 個條件
所以一樣可以使用寫好的工具包解 QP 問題。其中:
$$
\mathbf{w}=\sum_{n=1}^{N}(\alpha^{\wedge}_{n}-\alpha^{\vee}_{n})\mathbf{z}_{n}
$$
恰好符合之前提到的線性組合的形式。
## Sparsity
之前是從 primal feasibilty 推導出誰是 SV 誰不是,所以:
$$
-\epsilon-\xi_{n}^{\vee}\le y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b \le \epsilon+\xi_{n}^{\wedge}\\
\Downarrow \\
-\epsilon-\xi_{n}^{\vee} - (y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b )\le 0\\
y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b - (\epsilon+\xi_{n}^{\wedge})\le 0\\
\Downarrow\\
\alpha_{n}^{\vee}(-\epsilon-\xi_{n}^{\vee} - (y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b ))=0\\
\alpha_{n}^{\wedge}(y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b - (\epsilon+\xi_{n}^{\wedge}))=0\\
\Downarrow\\
\alpha_{n}^{\vee}(\epsilon+\xi_{n}^{\vee} + y_{n} - \mathbf{w}^{T}\mathbf{z}_{n} - b )=0\\
\alpha_{n}^{\wedge}(\epsilon+\xi_{n}^{\wedge} - y_{n} + \mathbf{w}^{T}\mathbf{z}_{n} + b)=0\\
$$
所以對於任何落在管子內的點,$|\mathbf{w}^{T}\mathbf{z}_{n} + b - y_{n}|<\epsilon$,可以知道並沒有犯任何錯,也就是說 $\xi_{n}^{\wedge}=\xi_{n}^{\vee}=0$;這樣的話,根據 complementary
slackness 就可以知道 $\alpha_{n}^{\vee}=\alpha_{n}^{\wedge}=0$,也就說:
$$
\mathbf{w}=\sum_{n=1}^{N}\underbrace{(\alpha^{\wedge}_{n}-\alpha^{\vee}_{n})}_{\beta_{n}}\mathbf{z}_{n}=\sum_{n=1}^{N}0\mathbf{z}_{n}\\
\beta_{n}=0
$$
我們成功透過 dual problem 的 KKT 條件,得到了想要的稀疏矩陣。
---
# Map of Linear and Kernel Models
Linear 的實務上:
- PLA/pocket 在處裡非線性可分的表現上, linear soft-margin SVM (primal by QP) 比較好。
- linear SVR(Regularized Tube) by QP 的 err 是線性的,如果希望是二次的 err,要用 Linear Ridge Regression。
所以 Linear 的 soft-margin SVM、ridge Regression 跟 regularized logistic regession 比較常用。
:::info
這三個在 LIBLINEAR 工具包中都有。
:::
而加上 Kernel 的話,KRR 跟 KLR 會因為緻密矩陣的問題而不常用,常用的是 SVM、SVR 跟 Probabilistic SVM。
:::info
這三個 LIBSVM 工具包有。
可以看到非線性的是比較常用的工具,名字就是代表性的縮寫;所以通常來說講 SVM 是指採用了 kernel 的 SVM 而非線性的 SVM
:::