🌏 English version
影片狀態:已附影片。 這篇依官方 MOOC 講義 206_handout.pdf 與這堂四支官方影片的機器轉錄逐字稿寫成,公式以講義為準;逐字稿未經人工校對。每一節開頭附該節的官方影片與大致的時間區段。文中的頁碼指投影片右下角的編號(0/23 到 23/23),寫「課堂上」的地方是轉述影片裡的說法。
這是台大林軒田 機器學習基石與技法 導讀 裡的技法第 6 堂。講義第 1 頁的 Roadmap 把技法分成三種處理特徵的技巧,這堂是第一種 Embedding Numerous Features: Kernel Models 的最後一堂。同一頁對上一堂技法第 5 堂:Kernel 邏輯迴歸 的摘要是:要做軟性分類,可以用兩層學習得到像 SVM 一樣稀疏的模型,也可以用 representer theorem 配上正則化的邏輯誤差,得到稠密的模型。這堂把同一套工具搬到迴歸:輸出是實數時,怎麼用 kernel,又怎麼讓係數保持稀疏。
先備有四項:基石第 9 堂:線性迴歸 的解析解、基石第 14 堂:正則化 的 ridge regression、技法第 4 堂:軟邊界 SVM 的對偶推導,以及上一堂的 representer theorem。讀完之後,你應該能自己推出 kernel ridge regression 的解析解,從管狀誤差一路寫到 SVR 的對偶問題,用互補鬆弛解釋哪些點的係數是 0,並且對三筆資料手算出兩種模型的係數來比較。
整堂課的路線先列出來:
Kernel ridge regression :把 w = ∑ n β n z n \mathbf{w} = \sum_n \beta_n\mathbf{z}_n w = ∑ n β n z n 代進 ridge regression,解出 β \boldsymbol{\beta} β 。
發現問題 :β \boldsymbol{\beta} β 是稠密的,預測時每筆訓練資料都要用到。
換誤差 :平方誤差換成管狀誤差。
SVR 原始問題 :照 soft-margin SVM 的寫法改成 QP。
SVR 對偶問題 :擺脫特徵維度,並由互補鬆弛得到稀疏性。
總整理 :把基石與技法前六堂的線性模型、kernel 模型排成一張地圖。
把 ridge regression 接上 kernel:解析解還在不在
YouTube:Support Vector Regression :: Kernel Ridge Regression @ Machine Learning Techniques (機器學習技法)
(影片 00:19–01:58 複習上一堂與 representer theorem,01:58–08:49 把問題改寫成 β \boldsymbol{\beta} β 的形式,08:49–14:36 求解,14:36–16:49 比較線性與 kernel,之後是 Fun Time。)
從 representer theorem 出發
講義第 2 頁先回顧上一堂的結論。任何 L2 正則化的線性模型
min w λ N w ⊤ w + 1 N ∑ n = 1 N err ( y n , w ⊤ z n ) \min_{\mathbf{w}}\ \frac{\lambda}{N}\mathbf{w}^\top\mathbf{w} + \frac{1}{N}\sum_{n=1}^{N}\text{err}(y_n, \mathbf{w}^\top\mathbf{z}_n) w min N λ w ⊤ w + N 1 n = 1 ∑ N err ( y n , w ⊤ z n )
的最佳解都能寫成 w ∗ = ∑ n = 1 N β n z n \mathbf{w}_* = \sum_{n=1}^{N}\beta_n\mathbf{z}_n w ∗ = ∑ n = 1 N β n z n ,所以都能 kernel 化。上一堂把 err 換成邏輯迴歸的 cross-entropy。這堂換成迴歸的平方誤差 err ( y , w ⊤ z ) = ( y − w ⊤ z ) 2 \text{err}(y, \mathbf{w}^\top\mathbf{z}) = (y - \mathbf{w}^\top\mathbf{z})^2 err ( y , w ⊤ z ) = ( y − w ⊤ z ) 2 ,也就是基石教過的 ridge regression。
ridge regression 在基石有解析解,課堂上稱為「一步登天的解」。講義在這一頁底下提的問題是:加上 kernel 之後,解析解還在不在?
把 w 換成 β
第 3 頁的做法是直接代入。既然最佳的 w \mathbf{w} w 一定是 z n \mathbf{z}_n z n 的線性組合,講義說不失一般性,可以改成找最佳的 β \boldsymbol{\beta} β 。逐項代入 w = ∑ m β m z m \mathbf{w} = \sum_m \beta_m\mathbf{z}_m w = ∑ m β m z m :
正則化項。 兩個 w \mathbf{w} w 各帶一個加總,課堂上說第一個加總來自前面的 w \mathbf{w} w ,第二個來自後面的 w \mathbf{w} w :
w ⊤ w = ( ∑ n = 1 N β n z n ) ⊤ ( ∑ m = 1 N β m z m ) = ∑ n = 1 N ∑ m = 1 N β n β m z n ⊤ z m = ∑ n = 1 N ∑ m = 1 N β n β m K ( x n , x m ) \mathbf{w}^\top\mathbf{w} = \Big(\sum_{n=1}^{N}\beta_n\mathbf{z}_n\Big)^\top\Big(\sum_{m=1}^{N}\beta_m\mathbf{z}_m\Big) = \sum_{n=1}^{N}\sum_{m=1}^{N}\beta_n\beta_m\,\mathbf{z}_n^\top\mathbf{z}_m = \sum_{n=1}^{N}\sum_{m=1}^{N}\beta_n\beta_m K(\mathbf{x}_n, \mathbf{x}_m) w ⊤ w = ( n = 1 ∑ N β n z n ) ⊤ ( m = 1 ∑ N β m z m ) = n = 1 ∑ N m = 1 ∑ N β n β m z n ⊤ z m = n = 1 ∑ N m = 1 ∑ N β n β m K ( x n , x m )
最後一步是 kernel trick:z n ⊤ z m \mathbf{z}_n^\top\mathbf{z}_m z n ⊤ z m 換成 K ( x n , x m ) K(\mathbf{x}_n, \mathbf{x}_m) K ( x n , x m ) ,不必真的算出 z \mathbf{z} z 。
誤差項裡的分數。 第 n n n 筆資料的預測是
w ⊤ z n = ∑ m = 1 N β m z m ⊤ z n = ∑ m = 1 N β m K ( x n , x m ) \mathbf{w}^\top\mathbf{z}_n = \sum_{m=1}^{N}\beta_m\,\mathbf{z}_m^\top\mathbf{z}_n = \sum_{m=1}^{N}\beta_m K(\mathbf{x}_n, \mathbf{x}_m) w ⊤ z n = m = 1 ∑ N β m z m ⊤ z n = m = 1 ∑ N β m K ( x n , x m )
合起來就是講義上的式子:
min β λ N ∑ n = 1 N ∑ m = 1 N β n β m K ( x n , x m ) + 1 N ∑ n = 1 N ( y n − ∑ m = 1 N β m K ( x n , x m ) ) 2 \min_{\boldsymbol{\beta}}\ \frac{\lambda}{N}\sum_{n=1}^{N}\sum_{m=1}^{N}\beta_n\beta_m K(\mathbf{x}_n, \mathbf{x}_m) + \frac{1}{N}\sum_{n=1}^{N}\Big(y_n - \sum_{m=1}^{N}\beta_m K(\mathbf{x}_n, \mathbf{x}_m)\Big)^2 β min N λ n = 1 ∑ N m = 1 ∑ N β n β m K ( x n , x m ) + N 1 n = 1 ∑ N ( y n − m = 1 ∑ N β m K ( x n , x m ) ) 2
講義在兩項底下各加了一行註解:前一項是 regularization of β \boldsymbol{\beta} β on K K K -based regularizer,後一項是 linear regression of β \boldsymbol{\beta} β on K K K -based features。課堂上的解釋和上一堂談 kernel 邏輯迴歸時相同:這個問題也可以看成 β \boldsymbol{\beta} β 的線性模型,資料先用 kernel 轉換過(第 n n n 筆資料的新特徵是它和每筆訓練資料的 kernel 值),正則化項則是一個和 K K K 有關的特別版本。
寫成矩陣
雙重加總不好微分,講義改用矩陣。令 K \mathrm{K} K 是 N × N N \times N N × N 的 kernel 矩陣,第 ( n , m ) (n, m) ( n , m ) 個元素是 K ( x n , x m ) K(\mathbf{x}_n, \mathbf{x}_m) K ( x n , x m ) 。
雙重加總就是 β ⊤ K β \boldsymbol{\beta}^\top\mathrm{K}\boldsymbol{\beta} β ⊤ K β 。課堂上舉的例子:前面來一個 β 3 \beta_3 β 3 、後面來一個 β 5 \beta_5 β 5 ,乘在它們上面的係數就是 K \mathrm{K} K 的第 3 列第 5 行。
∑ m β m K ( x n , x m ) \sum_m \beta_m K(\mathbf{x}_n, \mathbf{x}_m) ∑ m β m K ( x n , x m ) 是向量 K β \mathrm{K}\boldsymbol{\beta} K β 的第 n n n 個分量,所以平方和是 ∥ y − K β ∥ 2 \lVert\mathbf{y} - \mathrm{K}\boldsymbol{\beta}\rVert^2 ∥ y − K β ∥ 2 。課堂上提醒這和基石推線性迴歸時「把一串平方的加總寫成向量長度的平方」是同一招。
把長度的平方展開:
∥ y − K β ∥ 2 = ( y − K β ) ⊤ ( y − K β ) = β ⊤ K ⊤ K β − 2 β ⊤ K ⊤ y + y ⊤ y \lVert\mathbf{y} - \mathrm{K}\boldsymbol{\beta}\rVert^2 = (\mathbf{y} - \mathrm{K}\boldsymbol{\beta})^\top(\mathbf{y} - \mathrm{K}\boldsymbol{\beta}) = \boldsymbol{\beta}^\top\mathrm{K}^\top\mathrm{K}\boldsymbol{\beta} - 2\boldsymbol{\beta}^\top\mathrm{K}^\top\mathbf{y} + \mathbf{y}^\top\mathbf{y} ∥ y − K β ∥ 2 = ( y − K β ) ⊤ ( y − K β ) = β ⊤ K ⊤ K β − 2 β ⊤ K ⊤ y + y ⊤ y
交叉項可以寫成 y ⊤ K β \mathbf{y}^\top\mathrm{K}\boldsymbol{\beta} y ⊤ K β 或 β ⊤ K ⊤ y \boldsymbol{\beta}^\top\mathrm{K}^\top\mathbf{y} β ⊤ K ⊤ y ,兩者是同一個數,課堂上說順著寫、反著寫都一樣。整個目標函數是
E aug ( β ) = λ N β ⊤ K β + 1 N ( β ⊤ K ⊤ K β − 2 β ⊤ K ⊤ y + y ⊤ y ) E_{\text{aug}}(\boldsymbol{\beta}) = \frac{\lambda}{N}\boldsymbol{\beta}^\top\mathrm{K}\boldsymbol{\beta} + \frac{1}{N}\Big(\boldsymbol{\beta}^\top\mathrm{K}^\top\mathrm{K}\boldsymbol{\beta} - 2\boldsymbol{\beta}^\top\mathrm{K}^\top\mathbf{y} + \mathbf{y}^\top\mathbf{y}\Big) E aug ( β ) = N λ β ⊤ K β + N 1 ( β ⊤ K ⊤ K β − 2 β ⊤ K ⊤ y + y ⊤ y )
講義把這個模型叫 kernel ridge regression :用 representer theorem 在 ridge regression 上做 kernel trick。
解出 β
E aug E_{\text{aug}} E aug 是 β \boldsymbol{\beta} β 的二次式,沒有限制式,做法是找梯度為 0 的地方(第 4 頁)。三項分別微分:
β ⊤ K β \boldsymbol{\beta}^\top\mathrm{K}\boldsymbol{\beta} β ⊤ K β 的梯度是 2 K β 2\mathrm{K}\boldsymbol{\beta} 2 K β 。課堂上用單變數類比:1 2 a x 2 \frac{1}{2}ax^2 2 1 a x 2 對 x x x 微分是 a x ax a x ,K \mathrm{K} K 扮演 a a a ,β \boldsymbol{\beta} β 扮演 x x x 。本文補充:這條規則要求中間的矩陣對稱,K \mathrm{K} K 的確對稱,因為 K ( x n , x m ) = z n ⊤ z m = K ( x m , x n ) K(\mathbf{x}_n, \mathbf{x}_m) = \mathbf{z}_n^\top\mathbf{z}_m = K(\mathbf{x}_m, \mathbf{x}_n) K ( x n , x m ) = z n ⊤ z m = K ( x m , x n ) 。
β ⊤ K ⊤ K β \boldsymbol{\beta}^\top\mathrm{K}^\top\mathrm{K}\boldsymbol{\beta} β ⊤ K ⊤ K β 也是二次式,中間的 K ⊤ K \mathrm{K}^\top\mathrm{K} K ⊤ K 同樣對稱,梯度是 2 K ⊤ K β 2\mathrm{K}^\top\mathrm{K}\boldsymbol{\beta} 2 K ⊤ K β 。
− 2 β ⊤ K ⊤ y -2\boldsymbol{\beta}^\top\mathrm{K}^\top\mathbf{y} − 2 β ⊤ K ⊤ y 是一次式,梯度是係數 − 2 K ⊤ y -2\mathrm{K}^\top\mathbf{y} − 2 K ⊤ y 。常數項 y ⊤ y \mathbf{y}^\top\mathbf{y} y ⊤ y 的梯度是 0。
合起來:
∇ E aug ( β ) = 2 N ( λ K ⊤ I β + K ⊤ K β − K ⊤ y ) = 2 N K ⊤ ( ( λ I + K ) β − y ) \nabla E_{\text{aug}}(\boldsymbol{\beta}) = \frac{2}{N}\Big(\lambda\mathrm{K}^\top\mathrm{I}\boldsymbol{\beta} + \mathrm{K}^\top\mathrm{K}\boldsymbol{\beta} - \mathrm{K}^\top\mathbf{y}\Big) = \frac{2}{N}\mathrm{K}^\top\Big((\lambda\mathrm{I} + \mathrm{K})\boldsymbol{\beta} - \mathbf{y}\Big) ∇ E aug ( β ) = N 2 ( λ K ⊤ I β + K ⊤ K β − K ⊤ y ) = N 2 K ⊤ ( ( λ I + K ) β − y )
第一項本來是 λ K β \lambda\mathrm{K}\boldsymbol{\beta} λ K β ,講義寫成 λ K ⊤ I β \lambda\mathrm{K}^\top\mathrm{I}\boldsymbol{\beta} λ K ⊤ I β 。課堂上說明這是「偷偷」做的兩件事:K \mathrm{K} K 對稱,加上轉置不影響結果;再塞一個單位矩陣 I \mathrm{I} I ,也不影響結果。目的是讓三項都以 K ⊤ \mathrm{K}^\top K ⊤ 開頭,可以整個提出來。
要讓梯度是 0 \mathbf{0} 0 ,一個辦法是讓括號裡的向量就是 0 \mathbf{0} 0 :
( λ I + K ) β = y ⟹ β = ( λ I + K ) − 1 y (\lambda\mathrm{I} + \mathrm{K})\boldsymbol{\beta} = \mathbf{y} \quad\Longrightarrow\quad \boldsymbol{\beta} = (\lambda\mathrm{I} + \mathrm{K})^{-1}\mathbf{y} ( λ I + K ) β = y ⟹ β = ( λ I + K ) − 1 y
講義對這個解講了兩件事。
反矩陣一定存在。 只要 λ > 0 \lambda > 0 λ > 0 就成立,理由是 K \mathrm{K} K 半正定,這是技法第 3 堂:Kernel SVM 的 Mercer 條件。課堂上的講法是:合法的 kernel 給出半正定的 K \mathrm{K} K ,在對角線上再加一個不是 0 的 λ \lambda λ ,就一定可逆。本文把中間那一步補上:對任何非零向量 v \mathbf{v} v ,
v ⊤ ( λ I + K ) v = λ ∥ v ∥ 2 + v ⊤ K v ≥ λ ∥ v ∥ 2 > 0 \mathbf{v}^\top(\lambda\mathrm{I} + \mathrm{K})\mathbf{v} = \lambda\lVert\mathbf{v}\rVert^2 + \mathbf{v}^\top\mathrm{K}\mathbf{v} \ \ge\ \lambda\lVert\mathbf{v}\rVert^2 \ >\ 0 v ⊤ ( λ I + K ) v = λ ∥ v ∥ 2 + v ⊤ K v ≥ λ ∥ v ∥ 2 > 0
所以 ( λ I + K ) v (\lambda\mathrm{I} + \mathrm{K})\mathbf{v} ( λ I + K ) v 不可能是 0 \mathbf{0} 0 ,這個矩陣可逆。
計算量是 O ( N 3 ) O(N^3) O ( N 3 ) 。 要求反矩陣的是 N × N N \times N N × N 的矩陣,而且是稠密的。課堂上的理由和對偶 SVM 那堂談 Q D Q_D Q D 時一樣:kernel 值大多不是 0,除非兩個向量剛好垂直。
本文補充兩點。第一,梯度為 0 的地方為什麼是最小值:β ⊤ K β ≥ 0 \boldsymbol{\beta}^\top\mathrm{K}\boldsymbol{\beta} \ge 0 β ⊤ K β ≥ 0 與 ∥ y − K β ∥ 2 \lVert\mathbf{y} - \mathrm{K}\boldsymbol{\beta}\rVert^2 ∥ y − K β ∥ 2 都是開口向上的二次函數,相加之後仍是凸函數,梯度為 0 的點就是全域最小。第二,講義的用字是 one analytic solution。K \mathrm{K} K 不可逆時,還有別的 β \boldsymbol{\beta} β 也讓梯度為 0:把解加上任何滿足 K v = 0 \mathrm{K}\mathbf{v} = \mathbf{0} K v = 0 的 v \mathbf{v} v 即可。不過 ∥ ∑ n v n z n ∥ 2 = v ⊤ K v = 0 \lVert\sum_n v_n\mathbf{z}_n\rVert^2 = \mathbf{v}^\top\mathrm{K}\mathbf{v} = 0 ∥ ∑ n v n z n ∥ 2 = v ⊤ K v = 0 ,這些 β \boldsymbol{\beta} β 對應的 w \mathbf{w} w 完全相同,選哪一個都得到同一個模型。
講義在這一頁的結論是:現在可以「輕鬆地」做非線性迴歸了。課堂上補充,以前做非線性迴歸是先做特徵轉換、再跑線性迴歸;現在多了一條路,直接透過 kernel 去解藏在 Z \mathcal{Z} Z 空間裡的迴歸問題。
數值例子:三個點的二次 kernel
以下是本文自擬的例子,不在講義上。三筆一維資料:
n n n x n x_n x n y n y_n y n 1 − 1 -1 − 1 1 1 1 2 0 0 0 0 0 0 3 1 1 1 1 1 1
kernel 用技法第 3 堂的二次多項式 K ( x , x ′ ) = ( 1 + x x ′ ) 2 K(x, x') = (1 + xx')^2 K ( x , x ′ ) = ( 1 + x x ′ ) 2 ,λ = 1 \lambda = 1 λ = 1 。
第一步:算 K \mathrm{K} K 。 例如 K ( x 1 , x 1 ) = ( 1 + 1 ) 2 = 4 K(x_1, x_1) = (1 + 1)^2 = 4 K ( x 1 , x 1 ) = ( 1 + 1 ) 2 = 4 、K ( x 1 , x 2 ) = ( 1 + 0 ) 2 = 1 K(x_1, x_2) = (1 + 0)^2 = 1 K ( x 1 , x 2 ) = ( 1 + 0 ) 2 = 1 、K ( x 1 , x 3 ) = ( 1 − 1 ) 2 = 0 K(x_1, x_3) = (1 - 1)^2 = 0 K ( x 1 , x 3 ) = ( 1 − 1 ) 2 = 0 :
K = [ 4 1 0 1 1 1 0 1 4 ] , λ I + K = [ 5 1 0 1 2 1 0 1 5 ] \mathrm{K} = \begin{bmatrix} 4 & 1 & 0 \\ 1 & 1 & 1 \\ 0 & 1 & 4 \end{bmatrix}, \qquad \lambda\mathrm{I} + \mathrm{K} = \begin{bmatrix} 5 & 1 & 0 \\ 1 & 2 & 1 \\ 0 & 1 & 5 \end{bmatrix} K = 4 1 0 1 1 1 0 1 4 , λ I + K = 5 1 0 1 2 1 0 1 5
第二步:解 ( λ I + K ) β = y (\lambda\mathrm{I} + \mathrm{K})\boldsymbol{\beta} = \mathbf{y} ( λ I + K ) β = y 。 三條方程式是 5 β 1 + β 2 = 1 5\beta_1 + \beta_2 = 1 5 β 1 + β 2 = 1 、β 1 + 2 β 2 + β 3 = 0 \beta_1 + 2\beta_2 + \beta_3 = 0 β 1 + 2 β 2 + β 3 = 0 、β 2 + 5 β 3 = 1 \beta_2 + 5\beta_3 = 1 β 2 + 5 β 3 = 1 。第一條減第三條得到 β 1 = β 3 \beta_1 = \beta_3 β 1 = β 3 ,代進第二條得 β 2 = − β 1 \beta_2 = -\beta_1 β 2 = − β 1 ,再代回第一條得 4 β 1 = 1 4\beta_1 = 1 4 β 1 = 1 :
β = ( 1 4 , − 1 4 , 1 4 ) \boldsymbol{\beta} = \Big(\frac{1}{4},\ -\frac{1}{4},\ \frac{1}{4}\Big) β = ( 4 1 , − 4 1 , 4 1 )
第三步:寫出 g g g 。 用這一節 Fun Time 的結論 g ( x ) = ∑ n β n K ( x n , x ) g(x) = \sum_n \beta_n K(x_n, x) g ( x ) = ∑ n β n K ( x n , x ) :
g ( x ) = 1 4 ( 1 − x ) 2 − 1 4 ⋅ 1 + 1 4 ( 1 + x ) 2 = 1 4 + 1 2 x 2 g(x) = \frac{1}{4}(1 - x)^2 - \frac{1}{4}\cdot 1 + \frac{1}{4}(1 + x)^2 = \frac{1}{4} + \frac{1}{2}x^2 g ( x ) = 4 1 ( 1 − x ) 2 − 4 1 ⋅ 1 + 4 1 ( 1 + x ) 2 = 4 1 + 2 1 x 2
這個結果代表什麼。 三筆資料其實落在 y = x 2 y = x^2 y = x 2 上,學到的卻是 1 4 + 1 2 x 2 \frac{1}{4} + \frac{1}{2}x^2 4 1 + 2 1 x 2 ,在三個訓練點上的預測是 0.75 0.75 0.75 、0.25 0.25 0.25 、0.75 0.75 0.75 。差距來自正則化:λ = 1 \lambda = 1 λ = 1 對三筆資料來說很重,把曲線壓平了。另外,三個 β n \beta_n β n 沒有一個是 0。
和 Z \mathcal{Z} Z 空間的 ridge regression 對一次。 這個 kernel 對應的轉換是 Φ ( x ) = ( 1 , 2 x , x 2 ) \boldsymbol{\Phi}(x) = (1, \sqrt{2}x, x^2) Φ ( x ) = ( 1 , 2 x , x 2 ) ,因為 1 + 2 x x ′ + x 2 x ′ 2 = ( 1 + x x ′ ) 2 1 + 2xx' + x^2x'^2 = (1 + xx')^2 1 + 2 x x ′ + x 2 x ′2 = ( 1 + x x ′ ) 2 。用 w = ∑ n β n z n \mathbf{w} = \sum_n \beta_n\mathbf{z}_n w = ∑ n β n z n 算回去:
w = 1 4 ( 1 , − 2 , 1 ) − 1 4 ( 1 , 0 , 0 ) + 1 4 ( 1 , 2 , 1 ) = ( 1 4 , 0 , 1 2 ) \mathbf{w} = \frac{1}{4}(1, -\sqrt{2}, 1) - \frac{1}{4}(1, 0, 0) + \frac{1}{4}(1, \sqrt{2}, 1) = \Big(\frac{1}{4},\ 0,\ \frac{1}{2}\Big) w = 4 1 ( 1 , − 2 , 1 ) − 4 1 ( 1 , 0 , 0 ) + 4 1 ( 1 , 2 , 1 ) = ( 4 1 , 0 , 2 1 )
w ⊤ Φ ( x ) = 1 4 + 1 2 x 2 \mathbf{w}^\top\boldsymbol{\Phi}(x) = \frac{1}{4} + \frac{1}{2}x^2 w ⊤ Φ ( x ) = 4 1 + 2 1 x 2 ,和上面一致。直接在 Z \mathcal{Z} Z 空間用線性 ridge regression 的公式 w = ( λ I + Z ⊤ Z ) − 1 Z ⊤ y \mathbf{w} = (\lambda\mathrm{I} + \mathrm{Z}^\top\mathrm{Z})^{-1}\mathrm{Z}^\top\mathbf{y} w = ( λ I + Z ⊤ Z ) − 1 Z ⊤ y 也得到 ( 0.25 , 0 , 0.5 ) (0.25, 0, 0.5) ( 0.25 , 0 , 0.5 ) 。兩條路解的是同一個問題,只差在要求反矩陣的那個矩陣是 d ~ × d ~ \tilde{d} \times \tilde{d} d ~ × d ~ 還是 N × N N \times N N × N 。本文用 Python 的 fractions 與 numpy 各算過一遍,結果相同。
線性與 kernel 的取捨
第 5 頁把兩種 ridge regression 並排,上方各有一張圖:同一組資料,左邊的線性 ridge regression 畫出一條直線,右邊的 kernel ridge regression 畫出一條彎曲的線,資料點到線的垂直紅線段是誤差。
線性 ridge regression kernel ridge regression 解 w = ( λ I + X ⊤ X ) − 1 X ⊤ y \mathbf{w} = (\lambda\mathrm{I} + \mathrm{X}^\top\mathrm{X})^{-1}\mathrm{X}^\top\mathbf{y} w = ( λ I + X ⊤ X ) − 1 X ⊤ y β = ( λ I + K ) − 1 y \boldsymbol{\beta} = (\lambda\mathrm{I} + \mathrm{K})^{-1}\mathbf{y} β = ( λ I + K ) − 1 y 彈性 較受限 靠 K K K 得到彈性 訓練 O ( d 3 + d 2 N ) O(d^3 + d^2N) O ( d 3 + d 2 N ) O ( N 3 ) O(N^3) O ( N 3 ) 預測 O ( d ) O(d) O ( d ) O ( N ) O(N) O ( N ) 講義的評語 N ≫ d N \gg d N ≫ d 時有效率資料量大時吃力
線性那一欄的 d 2 N d^2N d 2 N 是算 X ⊤ X \mathrm{X}^\top\mathrm{X} X ⊤ X 的時間,d 3 d^3 d 3 是對 d × d d \times d d × d 矩陣求逆的時間。課堂上的說明是:線性的 w \mathbf{w} w 長度是 d d d ,預測只要 d d d 的時間;用了 kernel,訓練與預測就都跟資料量 N N N 綁在一起,資料一多就不適合。課堂上還回頭連到前幾堂 SVM 談過的事:線性模型的優點除了效率,還有模型複雜度比較容易控制;問題比較複雜、又負擔得起計算時,才換成 kernel。講義把這頁總結成一句:線性與 kernel 之間是效率與彈性的取捨。
Fun Time:解出 β 之後的 g
題目(第 6 頁): 用某個 kernel 函數 K K K 做 kernel ridge regression,得到最佳的 β \boldsymbol{\beta} β 之後,g ( x ) g(\mathbf{x}) g ( x ) 是哪一個?
∑ n = 1 N β n K ( x n , x ) \sum_{n=1}^{N}\beta_n K(\mathbf{x}_n, \mathbf{x}) ∑ n = 1 N β n K ( x n , x )
∑ n = 1 N y n β n K ( x n , x ) \sum_{n=1}^{N} y_n\beta_n K(\mathbf{x}_n, \mathbf{x}) ∑ n = 1 N y n β n K ( x n , x )
∑ n = 1 N β n K ( x n , x ) + λ \sum_{n=1}^{N}\beta_n K(\mathbf{x}_n, \mathbf{x}) + \lambda ∑ n = 1 N β n K ( x n , x ) + λ
∑ n = 1 N y n β n K ( x n , x ) + λ \sum_{n=1}^{N} y_n\beta_n K(\mathbf{x}_n, \mathbf{x}) + \lambda ∑ n = 1 N y n β n K ( x n , x ) + λ
答案:1。 講義的解答是把兩條式子接起來:representer theorem 給 w = ∑ n β n z n \mathbf{w} = \sum_n \beta_n\mathbf{z}_n w = ∑ n β n z n ,迴歸的輸出是 g ( x ) = w ⊤ z g(\mathbf{x}) = \mathbf{w}^\top\mathbf{z} g ( x ) = w ⊤ z ,所以
g ( x ) = ( ∑ n = 1 N β n z n ) ⊤ z = ∑ n = 1 N β n z n ⊤ z = ∑ n = 1 N β n K ( x n , x ) g(\mathbf{x}) = \Big(\sum_{n=1}^{N}\beta_n\mathbf{z}_n\Big)^\top\mathbf{z} = \sum_{n=1}^{N}\beta_n\,\mathbf{z}_n^\top\mathbf{z} = \sum_{n=1}^{N}\beta_n K(\mathbf{x}_n, \mathbf{x}) g ( x ) = ( n = 1 ∑ N β n z n ) ⊤ z = n = 1 ∑ N β n z n ⊤ z = n = 1 ∑ N β n K ( x n , x )
其他選項錯在哪裡,以下是本文的說明。選項 2 多了 y n y_n y n ,那是 SVM 的寫法 w = ∑ n α n y n z n \mathbf{w} = \sum_n \alpha_n y_n\mathbf{z}_n w = ∑ n α n y n z n ;這裡的線性組合係數就是 β n \beta_n β n 本身,y n y_n y n 的資訊已經在解 β = ( λ I + K ) − 1 y \boldsymbol{\beta} = (\lambda\mathrm{I} + \mathrm{K})^{-1}\mathbf{y} β = ( λ I + K ) − 1 y 時用掉了。選項 3 與 4 多加了 λ \lambda λ 。λ \lambda λ 只在訓練時決定 β \boldsymbol{\beta} β 是多少,不會出現在預測的式子裡;這一節的模型也沒有另外的常數項 b b b 。上面的數值例子就是照選項 1 算的,而且和 Z \mathcal{Z} Z 空間的結果對得上。
稠密的 β 是個問題:換成管狀誤差,寫出 SVR 的原始問題
YouTube:Support Vector Regression :: Support Vector Regression Primal @ Machine Learning Techniques (機器學習技法)
(影片 00:00–03:33 是 LSSVM 與稠密的 β \boldsymbol{\beta} β ,03:33–07:35 管狀誤差,07:35–09:25 與平方誤差比較,09:25–12:14 模仿 SVM 改寫,12:14–16:17 引進違反量,16:17–18:04 參數與 QP 的大小,之後是 Fun Time。)
LSSVM:邊界差不多,支援向量多很多
基石教過線性迴歸可以拿來做分類。kernel ridge regression 也可以,這個用法有個名字叫 least-squares SVM(LSSVM)。課堂上解釋,least-squares 這個字是在強調它用的是迴歸的平方誤差。
講義第 7 頁放了兩張圖,同一組二元分類資料,左邊跑 soft-margin Gaussian SVM,右邊跑 Gaussian LSSVM,支援向量用方框標出來。兩張圖的分類邊界差不多。差別在方框:左圖只有一部分的點有方框,右圖幾乎每個點都有。
原因在 β \boldsymbol{\beta} β 是怎麼算出來的。課堂上的說法是,β \boldsymbol{\beta} β 是求反矩陣算出來的,沒有什麼理由讓其中某些分量剛好是 0,所以每一筆資料都是支援向量。剛才三個點的例子也是如此,三個 β n \beta_n β n 都不是 0。
支援向量多的代價在預測。g ( x ) = ∑ n β n K ( x n , x ) g(\mathbf{x}) = \sum_n \beta_n K(\mathbf{x}_n, \mathbf{x}) g ( x ) = ∑ n β n K ( x n , x ) 裡,每個非零的 β n \beta_n β n 都要算一次 kernel。講義寫的是 slower prediction、dense β \boldsymbol{\beta} β (BIG g g g ),課堂上說這樣的 g g g 很「肥大」。講義接著分兩類:
稠密的 β \boldsymbol{\beta} β :LSSVM、kernel 邏輯迴歸。
稀疏的 α \boldsymbol{\alpha} α :標準的 SVM,大部分的 α n \alpha_n α n 是 0,這是 KKT 條件給的性質。
這一節的目標就此定下來:做迴歸,但要得到像標準 SVM 那樣稀疏的 β \boldsymbol{\beta} β 。
管狀誤差:差一點點就不算錯
講義第 8 頁的做法是換誤差函數,稱為 tube regression 。圖上在迴歸線的上下各畫出一段藍色的帶狀區域(管子):
資料點落在管子裡:不算錯。
資料點落在管子外:錯誤是它到管子邊緣的距離。
課堂上把管子叫「中立區」:預測和目標差得很少時,就當作沒錯,不扣分;超出中立區的才扣,而且只扣超出的那一段。寫成式子,s s s 是預測的分數,y y y 是目標:
err ( y , s ) = max ( 0 , ∣ s − y ∣ − ϵ ) \text{err}(y, s) = \max\big(0,\ \lvert s - y\rvert - \epsilon\big) err ( y , s ) = max ( 0 , ∣ s − y ∣ − ϵ )
∣ s − y ∣ ≤ ϵ \lvert s - y\rvert \le \epsilon ∣ s − y ∣ ≤ ϵ 時,第二項不大於 0,max 取 0。
∣ s − y ∣ > ϵ \lvert s - y\rvert > \epsilon ∣ s − y ∣ > ϵ 時,第二項是正的,誤差是 ∣ s − y ∣ − ϵ \lvert s - y\rvert - \epsilon ∣ s − y ∣ − ϵ 。
這個誤差通常叫 ϵ \epsilon ϵ -insensitive error ,ϵ > 0 \epsilon > 0 ϵ > 0 。講義把 ϵ \epsilon ϵ 稱為管子的垂直寬度;課堂上說得更細,ϵ \epsilon ϵ 是從線往上或往下各能容忍的距離,整個中立區的高度是 2 ϵ 2\epsilon 2 ϵ 。
課堂上還點出為什麼挑這個形式:soft-margin SVM 的 hinge 誤差裡也有一個「和 0 取 max」,誤差長得像,後面的推導就能照著 SVM 走,也才有機會得到 SVM 那種稀疏的解。
管狀誤差與平方誤差
第 9 頁上方把兩種迴歸的圖並排:左邊有藍色管子,只算超出管子的紅線長度;右邊是平方誤差,沒有管子,算的是整段紅線長度的平方。課堂上說平方誤差有點像管子很小很小的情況,差別在紅線還要再平方。下方把兩種誤差對 s s s 畫在同一張圖上:平方誤差是拋物線,管狀誤差在 y y y 附近有一段平的,兩側是斜率固定的直線。講義的結論是 ∣ s − y ∣ \lvert s - y\rvert ∣ s − y ∣ 小的時候兩者差不多,而管狀誤差比較不受離群值(outliers)影響。課堂上的解釋用的字是雜訊:離得遠時平方誤差長得很快,模型會為了遷就少數幾個差很遠的點而改變整條線;管狀誤差長得平緩,這個問題比較輕。
下表是本文算的,取 ϵ = 0.5 \epsilon = 0.5 ϵ = 0.5 ,看差距變大時兩種誤差各是多少:
∣ s − y ∣ \lvert s - y\rvert ∣ s − y ∣ 管狀誤差 平方誤差 0.2 0.2 0.2 0 0 0 0.04 0.04 0.04 0.5 0.5 0.5 0 0 0 0.25 0.25 0.25 1 1 1 0.5 0.5 0.5 1 1 1 3 3 3 2.5 2.5 2.5 9 9 9 10 10 10 9.5 9.5 9.5 100 100 100
差距從 3 變成 10,管狀誤差多了 7,平方誤差多了 91。一筆差得很遠的資料,在平方誤差底下的份量大得多。
模仿 SVM:把正則化的管狀迴歸改寫
第 10 頁先寫出 L2 正則化的 tube regression:
min w λ N w ⊤ w + 1 N ∑ n = 1 N max ( 0 , ∣ w ⊤ z n − y n ∣ − ϵ ) \min_{\mathbf{w}}\ \frac{\lambda}{N}\mathbf{w}^\top\mathbf{w} + \frac{1}{N}\sum_{n=1}^{N}\max\big(0,\ \lvert\mathbf{w}^\top\mathbf{z}_n - y_n\rvert - \epsilon\big) w min N λ w ⊤ w + N 1 n = 1 ∑ N max ( 0 , ∣ w ⊤ z n − y n ∣ − ϵ )
然後和標準 SVM 對照:
正則化的 tube regression 標準 SVM 形式 min λ N w ⊤ w + 1 N ∑ \min \frac{\lambda}{N}\mathbf{w}^\top\mathbf{w} + \frac{1}{N}\sum min N λ w ⊤ w + N 1 ∑ 管狀違反量min 1 2 w ⊤ w + C ∑ \min \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\sum min 2 1 w ⊤ w + C ∑ 邊界違反量怎麼解 沒有限制式,但 max 不可微分 也不可微分,但可以寫成 QP 怎麼 kernel 化 可以用 representer theorem,但看不出稀疏性 用對偶問題;KKT 條件帶出稀疏性
左邊的兩個「但」就是不直接解它的理由。講義的決定是模仿標準 SVM 的推導。課堂上說,為了長得跟 SVM 愈像愈好,做了幾件小事:參數從 λ \lambda λ 換成 SVM 慣用的 C C C ;w ⊤ w \mathbf{w}^\top\mathbf{w} w ⊤ w 前面放 1 2 \frac{1}{2} 2 1 ;把常數項從 w \mathbf{w} w 裡獨立出來寫成 b b b 。結果是
min b , w 1 2 w ⊤ w + C ∑ n = 1 N max ( 0 , ∣ w ⊤ z n + b − y n ∣ − ϵ ) \min_{b,\mathbf{w}}\ \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\sum_{n=1}^{N}\max\big(0,\ \lvert\mathbf{w}^\top\mathbf{z}_n + b - y_n\rvert - \epsilon\big) b , w min 2 1 w ⊤ w + C n = 1 ∑ N max ( 0 , ∣ w ⊤ z n + b − y n ∣ − ϵ )
本文補充兩種參數的關係:把上一個式子的目標函數整個乘上 N 2 λ \frac{N}{2\lambda} 2 λ N (正數,不改變最小值的位置),就得到 1 2 w ⊤ w + 1 2 λ ∑ n max ( ⋅ ) \frac{1}{2}\mathbf{w}^\top\mathbf{w} + \frac{1}{2\lambda}\sum_n \max(\cdot) 2 1 w ⊤ w + 2 λ 1 ∑ n max ( ⋅ ) ,所以 C C C 對應 1 2 λ \frac{1}{2\lambda} 2 λ 1 。C C C 愈大,λ \lambda λ 愈小,正則化愈弱,這和上一堂看 soft-margin SVM 時的結論相同。
從 max 與絕對值到線性的限制式
第 11 頁分兩步把它變成 QP。
第一步:照 SVM 的做法引進 ξ n \xi_n ξ n 。 soft-margin SVM 用一個變數 ξ n \xi_n ξ n 記錄每筆資料違反了多少,這裡照做:
min b , w , ξ 1 2 w ⊤ w + C ∑ n = 1 N ξ n s.t. ∣ w ⊤ z n + b − y n ∣ ≤ ϵ + ξ n , ξ n ≥ 0 \begin{aligned}
\min_{b,\mathbf{w},\boldsymbol{\xi}}\quad & \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\sum_{n=1}^{N}\xi_n \\
\text{s.t.}\quad & \lvert\mathbf{w}^\top\mathbf{z}_n + b - y_n\rvert \le \epsilon + \xi_n, \qquad \xi_n \ge 0
\end{aligned} b , w , ξ min s.t. 2 1 w ⊤ w + C n = 1 ∑ N ξ n ∣ w ⊤ z n + b − y n ∣ ≤ ϵ + ξ n , ξ n ≥ 0
課堂上的說法是:我們希望分數和 y n y_n y n 的差距在 ϵ \epsilon ϵ 之內,超出去的部分就要「收 ξ n \xi_n ξ n 的錢」。本文把等價的理由寫出來:固定 ( b , w ) (b, \mathbf{w}) ( b , w ) 時,限制式要求 ξ n ≥ ∣ w ⊤ z n + b − y n ∣ − ϵ \xi_n \ge \lvert\mathbf{w}^\top\mathbf{z}_n + b - y_n\rvert - \epsilon ξ n ≥ ∣ w ⊤ z n + b − y n ∣ − ϵ 而且 ξ n ≥ 0 \xi_n \ge 0 ξ n ≥ 0 ;目標函數希望 ξ n \xi_n ξ n 愈小愈好,所以最佳的 ξ n \xi_n ξ n 剛好是這兩個下界裡比較大的那個,也就是 max ( 0 , ∣ w ⊤ z n + b − y n ∣ − ϵ ) \max(0, \lvert\mathbf{w}^\top\mathbf{z}_n + b - y_n\rvert - \epsilon) max ( 0 , ∣ w ⊤ z n + b − y n ∣ − ϵ ) 。
第二步:拆掉絕對值。 這還不是 QP,因為限制式裡的絕對值不是線性運算。絕對值代表兩種情況:y n y_n y n 比分數高,或 y n y_n y n 比分數低。講義把一個 ξ n \xi_n ξ n 拆成兩個,ξ n ∧ \xi_n^{\wedge} ξ n ∧ 記上方的違反量(upper tube violation),ξ n ∨ \xi_n^{\vee} ξ n ∨ 記下方的違反量(lower tube violation):
min b , w , ξ ∨ , ξ ∧ 1 2 w ⊤ w + C ∑ n = 1 N ( ξ n ∨ + ξ n ∧ ) s.t. − ϵ − ξ n ∨ ≤ y n − w ⊤ z n − b ≤ ϵ + ξ n ∧ ξ n ∨ ≥ 0 , ξ n ∧ ≥ 0 \begin{aligned}
\min_{b,\mathbf{w},\boldsymbol{\xi}^{\vee},\boldsymbol{\xi}^{\wedge}}\quad & \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\sum_{n=1}^{N}\big(\xi_n^{\vee} + \xi_n^{\wedge}\big) \\
\text{s.t.}\quad & -\epsilon - \xi_n^{\vee} \ \le\ y_n - \mathbf{w}^\top\mathbf{z}_n - b \ \le\ \epsilon + \xi_n^{\wedge} \\
& \xi_n^{\vee} \ge 0,\quad \xi_n^{\wedge} \ge 0
\end{aligned} b , w , ξ ∨ , ξ ∧ min s.t. 2 1 w ⊤ w + C n = 1 ∑ N ( ξ n ∨ + ξ n ∧ ) − ϵ − ξ n ∨ ≤ y n − w ⊤ z n − b ≤ ϵ + ξ n ∧ ξ n ∨ ≥ 0 , ξ n ∧ ≥ 0
右邊的不等式管上方:y n y_n y n 比分數高出超過 ϵ \epsilon ϵ 時,ξ n ∧ \xi_n^{\wedge} ξ n ∧ 必須補上超出的量。左邊的不等式管下方。課堂上對著圖講:資料點在線的上方、超出藍色管子的那一段紅線長度是 ξ n ∧ \xi_n^{\wedge} ξ n ∧ ;在下方超出去的那一段是 ξ n ∨ \xi_n^{\vee} ξ n ∨ 。把所有紅線的長度加起來,再加上正則化項,就是要最小化的東西。
這就是講義所說的 standard Support Vector Regression(SVR)primal:最小化正則化項,加上上下兩種管狀違反量。現在目標函數是 w \mathbf{w} w 的二次式加 ξ \xi ξ 的一次式,所有限制式對 ( b , w , ξ ) (b, \mathbf{w}, \xi) ( b , w , ξ ) 都是一次的,是 QP。
本文補充:同一筆資料的兩個違反量不會同時是正的。ξ n ∧ > 0 \xi_n^{\wedge} > 0 ξ n ∧ > 0 需要 y n y_n y n 比分數高出超過 ϵ \epsilon ϵ ,ξ n ∨ > 0 \xi_n^{\vee} > 0 ξ n ∨ > 0 需要 y n y_n y n 比分數低超過 ϵ \epsilon ϵ ,兩件事不可能同時發生。所以最佳解上 ξ n ∨ + ξ n ∧ \xi_n^{\vee} + \xi_n^{\wedge} ξ n ∨ + ξ n ∧ 就等於原本的那一個 ξ n \xi_n ξ n ,拆開沒有改變問題。
兩個參數與 QP 的大小
第 12 頁整理這個 QP:
參數 C C C :正則化與管狀違反之間的取捨。課堂上對照 SVM:SVM 的 C C C 管的是在乎犯錯多一點、還是在乎邊界胖一點;這裡是在乎違反量少一點、還是正則化強一點。
參數 ϵ \epsilon ϵ :管子的垂直寬度,也就是多寬容。講義特別標了一句 one more parameter to choose。課堂上說這是 SVR 和 SVM 顯著不同的地方,SVR 無論如何都比 SVM 多一個要選的參數。
大小 :變數有 b b b 一個、w \mathbf{w} w 的 d ~ \tilde{d} d ~ 個、兩組 ξ \xi ξ 各 N N N 個,共 d ~ + 1 + 2 N \tilde{d} + 1 + 2N d ~ + 1 + 2 N 個。限制式有管子的上下兩邊 2 N 2N 2 N 條,加上 ξ ≥ 0 \xi \ge 0 ξ ≥ 0 的 2 N 2N 2 N 條,共 4 N 4N 4 N 條。
變數個數裡又出現 d ~ \tilde{d} d ~ 。和 SVM 那幾堂一樣,下一步是轉成對偶問題再用 kernel trick,把 d ~ \tilde{d} d ~ 拿掉。
Fun Time:算兩個違反量
題目(第 13 頁): 用 ϵ = 0.05 \epsilon = 0.05 ϵ = 0.05 解 SVR。在最佳解上,假設 w ⊤ z 1 + b = 1.234 \mathbf{w}^\top\mathbf{z}_1 + b = 1.234 w ⊤ z 1 + b = 1.234 ,而 y 1 = 1.126 y_1 = 1.126 y 1 = 1.126 。ξ 1 ∨ \xi_1^{\vee} ξ 1 ∨ 與 ξ 1 ∧ \xi_1^{\wedge} ξ 1 ∧ 各是多少?
ξ 1 ∨ = 0.108 \xi_1^{\vee} = 0.108 ξ 1 ∨ = 0.108 ,ξ 1 ∧ = 0.000 \xi_1^{\wedge} = 0.000 ξ 1 ∧ = 0.000
ξ 1 ∨ = 0.000 \xi_1^{\vee} = 0.000 ξ 1 ∨ = 0.000 ,ξ 1 ∧ = 0.108 \xi_1^{\wedge} = 0.108 ξ 1 ∧ = 0.108
ξ 1 ∨ = 0.058 \xi_1^{\vee} = 0.058 ξ 1 ∨ = 0.058 ,ξ 1 ∧ = 0.000 \xi_1^{\wedge} = 0.000 ξ 1 ∧ = 0.000
ξ 1 ∨ = 0.000 \xi_1^{\vee} = 0.000 ξ 1 ∨ = 0.000 ,ξ 1 ∧ = 0.058 \xi_1^{\wedge} = 0.058 ξ 1 ∧ = 0.058
答案:3。 先算 y 1 − w ⊤ z 1 − b = 1.126 − 1.234 = − 0.108 y_1 - \mathbf{w}^\top\mathbf{z}_1 - b = 1.126 - 1.234 = -0.108 y 1 − w ⊤ z 1 − b = 1.126 − 1.234 = − 0.108 。目標比分數低,而且低了 0.108 0.108 0.108 ,超過 ϵ = 0.05 \epsilon = 0.05 ϵ = 0.05 。下方的限制式 − ϵ − ξ 1 ∨ ≤ − 0.108 -\epsilon - \xi_1^{\vee} \le -0.108 − ϵ − ξ 1 ∨ ≤ − 0.108 要求 ξ 1 ∨ ≥ 0.108 − 0.05 = 0.058 \xi_1^{\vee} \ge 0.108 - 0.05 = 0.058 ξ 1 ∨ ≥ 0.108 − 0.05 = 0.058 ,最小化會讓它剛好等於 0.058 0.058 0.058 。上方的限制式 − 0.108 ≤ 0.05 + ξ 1 ∧ -0.108 \le 0.05 + \xi_1^{\wedge} − 0.108 ≤ 0.05 + ξ 1 ∧ 在 ξ 1 ∧ = 0 \xi_1^{\wedge} = 0 ξ 1 ∧ = 0 時就成立了。講義的解答說,某筆資料有下方違反時,顯然不會有上方違反。
選項 1 的 0.108 0.108 0.108 是分數和目標的差距,忘了扣掉管子免費容忍的 0.05 0.05 0.05 。選項 4 的數字對了,但放錯邊:y 1 y_1 y 1 在分數的下方,違反的是下管壁。選項 2 兩個錯都犯了。
取對偶:擺脫特徵維度,並且看到哪些點的 β 是 0
YouTube:Support Vector Regression :: Support Vector Regression Dual @ Machine Learning Techniques (機器學習技法)
(影片 00:00–04:26 是拉格朗日乘數與幾條 KKT 條件,04:26–09:25 對照 SVM 與 SVR 的對偶,09:25–12:38 稀疏性,之後是 Fun Time。)
兩組拉格朗日乘數
SVR 的原始問題有兩組管壁的限制式,第 14 頁各配一組乘數:
α n ∧ \alpha_n^{\wedge} α n ∧ 配上方的限制式 y n − w ⊤ z n − b ≤ ϵ + ξ n ∧ y_n - \mathbf{w}^\top\mathbf{z}_n - b \le \epsilon + \xi_n^{\wedge} y n − w ⊤ z n − b ≤ ϵ + ξ n ∧ 。
α n ∨ \alpha_n^{\vee} α n ∨ 配下方的限制式 − ϵ − ξ n ∨ ≤ y n − w ⊤ z n − b -\epsilon - \xi_n^{\vee} \le y_n - \mathbf{w}^\top\mathbf{z}_n - b − ϵ − ξ n ∨ ≤ y n − w ⊤ z n − b 。
ξ n ∧ ≥ 0 \xi_n^{\wedge} \ge 0 ξ n ∧ ≥ 0 與 ξ n ∨ ≥ 0 \xi_n^{\vee} \ge 0 ξ n ∨ ≥ 0 照理也各要一組乘數。課堂上說明為什麼講義沒寫:推 soft-margin SVM 時已經看過,這類乘數最後都能用 α \alpha α 表示,所以只盯著 α \alpha α 。
講義在這一頁只列出「部分的 KKT 條件」,完整的推導留給讀者,頁尾寫 standard dual can be derived using the same steps as Lecture 4。課堂上的說法是幾乎重複一次技法第 2 堂或第 4 堂做過的所有事,只是變數多一些,鼓勵大家拿一張紙花十到十五分鐘自己寫一遍。下面把這張紙寫出來;講義列出的結果會標明,其餘步驟是本文照技法第 2 堂:對偶 SVM 與技法第 4 堂的做法補的。
把對偶推出來
寫拉格朗日函數。 每條限制式移項成「某個量 ≤ 0 \le 0 ≤ 0 」,乘上自己的乘數加到目標函數上。ξ ≥ 0 \xi \ge 0 ξ ≥ 0 的乘數記成 γ n ∧ \gamma_n^{\wedge} γ n ∧ 與 γ n ∨ \gamma_n^{\vee} γ n ∨ (這兩個記號是本文取的),所有乘數都不是負的:
L = 1 2 w ⊤ w + C ∑ n = 1 N ( ξ n ∨ + ξ n ∧ ) + ∑ n = 1 N α n ∧ ( y n − w ⊤ z n − b − ϵ − ξ n ∧ ) + ∑ n = 1 N α n ∨ ( w ⊤ z n + b − y n − ϵ − ξ n ∨ ) − ∑ n = 1 N γ n ∧ ξ n ∧ − ∑ n = 1 N γ n ∨ ξ n ∨ \begin{aligned}
\mathcal{L} = {} & \frac{1}{2}\mathbf{w}^\top\mathbf{w} + C\sum_{n=1}^{N}\big(\xi_n^{\vee} + \xi_n^{\wedge}\big) \\
& + \sum_{n=1}^{N}\alpha_n^{\wedge}\big(y_n - \mathbf{w}^\top\mathbf{z}_n - b - \epsilon - \xi_n^{\wedge}\big) + \sum_{n=1}^{N}\alpha_n^{\vee}\big(\mathbf{w}^\top\mathbf{z}_n + b - y_n - \epsilon - \xi_n^{\vee}\big) \\
& - \sum_{n=1}^{N}\gamma_n^{\wedge}\xi_n^{\wedge} - \sum_{n=1}^{N}\gamma_n^{\vee}\xi_n^{\vee}
\end{aligned} L = 2 1 w ⊤ w + C n = 1 ∑ N ( ξ n ∨ + ξ n ∧ ) + n = 1 ∑ N α n ∧ ( y n − w ⊤ z n − b − ϵ − ξ n ∧ ) + n = 1 ∑ N α n ∨ ( w ⊤ z n + b − y n − ϵ − ξ n ∨ ) − n = 1 ∑ N γ n ∧ ξ n ∧ − n = 1 ∑ N γ n ∨ ξ n ∨
和技法第 2 堂一樣,原始問題等於 min b , w , ξ max α , γ ≥ 0 L \min_{b,\mathbf{w},\xi}\max_{\alpha,\gamma \ge 0}\mathcal{L} min b , w , ξ max α , γ ≥ 0 L ,強對偶讓 min 與 max 可以對調,內層對 ( b , w , ξ ) (b, \mathbf{w}, \xi) ( b , w , ξ ) 沒有限制式,所以各個偏微分都要是 0。
對 ξ n ∧ \xi_n^{\wedge} ξ n ∧ 與 ξ n ∨ \xi_n^{\vee} ξ n ∨ 偏微分。
∂ L ∂ ξ n ∧ = C − α n ∧ − γ n ∧ = 0 , ∂ L ∂ ξ n ∨ = C − α n ∨ − γ n ∨ = 0 \frac{\partial\mathcal{L}}{\partial\xi_n^{\wedge}} = C - \alpha_n^{\wedge} - \gamma_n^{\wedge} = 0, \qquad \frac{\partial\mathcal{L}}{\partial\xi_n^{\vee}} = C - \alpha_n^{\vee} - \gamma_n^{\vee} = 0 ∂ ξ n ∧ ∂ L = C − α n ∧ − γ n ∧ = 0 , ∂ ξ n ∨ ∂ L = C − α n ∨ − γ n ∨ = 0
所以 γ n ∧ = C − α n ∧ \gamma_n^{\wedge} = C - \alpha_n^{\wedge} γ n ∧ = C − α n ∧ 、γ n ∨ = C − α n ∨ \gamma_n^{\vee} = C - \alpha_n^{\vee} γ n ∨ = C − α n ∨ ,這就是課堂上說的「可以用 α \alpha α 表示」。γ ≥ 0 \gamma \ge 0 γ ≥ 0 於是變成 α n ∧ ≤ C \alpha_n^{\wedge} \le C α n ∧ ≤ C 與 α n ∨ ≤ C \alpha_n^{\vee} \le C α n ∨ ≤ C 。把 γ \gamma γ 代回去,L \mathcal{L} L 裡 ξ n ∧ \xi_n^{\wedge} ξ n ∧ 的係數是 C − α n ∧ − γ n ∧ = 0 C - \alpha_n^{\wedge} - \gamma_n^{\wedge} = 0 C − α n ∧ − γ n ∧ = 0 ,ξ n ∨ \xi_n^{\vee} ξ n ∨ 同理,所有含 ξ \xi ξ 的項都消失。
對 b b b 偏微分。 b b b 在 α n ∧ \alpha_n^{\wedge} α n ∧ 那一項的係數是 − 1 -1 − 1 ,在 α n ∨ \alpha_n^{\vee} α n ∨ 那一項是 + 1 +1 + 1 :
∂ L ∂ b = − ∑ n = 1 N α n ∧ + ∑ n = 1 N α n ∨ = 0 ⟹ ∑ n = 1 N ( α n ∧ − α n ∨ ) = 0 \frac{\partial\mathcal{L}}{\partial b} = -\sum_{n=1}^{N}\alpha_n^{\wedge} + \sum_{n=1}^{N}\alpha_n^{\vee} = 0 \quad\Longrightarrow\quad \sum_{n=1}^{N}\big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big) = 0 ∂ b ∂ L = − n = 1 ∑ N α n ∧ + n = 1 ∑ N α n ∨ = 0 ⟹ n = 1 ∑ N ( α n ∧ − α n ∨ ) = 0
這是講義第 14 頁列的第二條。加上它之後,含 b b b 的項也消失。
對 w \mathbf{w} w 偏微分。
∂ L ∂ w i = w i − ∑ n = 1 N α n ∧ z n , i + ∑ n = 1 N α n ∨ z n , i = 0 ⟹ w = ∑ n = 1 N ( α n ∧ − α n ∨ ) ⏟ β n z n \frac{\partial\mathcal{L}}{\partial w_i} = w_i - \sum_{n=1}^{N}\alpha_n^{\wedge}z_{n,i} + \sum_{n=1}^{N}\alpha_n^{\vee}z_{n,i} = 0 \quad\Longrightarrow\quad \mathbf{w} = \sum_{n=1}^{N}\underbrace{\big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big)}_{\beta_n}\mathbf{z}_n ∂ w i ∂ L = w i − n = 1 ∑ N α n ∧ z n , i + n = 1 ∑ N α n ∨ z n , i = 0 ⟹ w = n = 1 ∑ N β n ( α n ∧ − α n ∨ ) z n
這是講義列的第一條。w \mathbf{w} w 又是 z n \mathbf{z}_n z n 的線性組合,係數 β n = α n ∧ − α n ∨ \beta_n = \alpha_n^{\wedge} - \alpha_n^{\vee} β n = α n ∧ − α n ∨ 就是 SVR 版本的 β n \beta_n β n 。課堂上指出 z n \mathbf{z}_n z n 是從限制式裡的 w ⊤ z n \mathbf{w}^\top\mathbf{z}_n w ⊤ z n 微分跑出來的,和 soft-margin SVM 的情況類似。
代回去。 消掉 ξ \xi ξ 與 b b b 之後,L \mathcal{L} L 剩下
1 2 w ⊤ w − w ⊤ ∑ n = 1 N ( α n ∧ − α n ∨ ) z n + ∑ n = 1 N α n ∧ ( y n − ϵ ) − ∑ n = 1 N α n ∨ ( y n + ϵ ) \frac{1}{2}\mathbf{w}^\top\mathbf{w} - \mathbf{w}^\top\sum_{n=1}^{N}\big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big)\mathbf{z}_n + \sum_{n=1}^{N}\alpha_n^{\wedge}(y_n - \epsilon) - \sum_{n=1}^{N}\alpha_n^{\vee}(y_n + \epsilon) 2 1 w ⊤ w − w ⊤ n = 1 ∑ N ( α n ∧ − α n ∨ ) z n + n = 1 ∑ N α n ∧ ( y n − ϵ ) − n = 1 ∑ N α n ∨ ( y n + ϵ )
第二項的加總就是 w \mathbf{w} w ,所以前兩項合成 − 1 2 w ⊤ w -\frac{1}{2}\mathbf{w}^\top\mathbf{w} − 2 1 w ⊤ w 。對偶問題是在 α \boldsymbol{\alpha} α 上取 max:
max α ∧ , α ∨ − 1 2 ∥ ∑ n = 1 N ( α n ∧ − α n ∨ ) z n ∥ 2 − ∑ n = 1 N ( ( ϵ − y n ) α n ∧ + ( ϵ + y n ) α n ∨ ) \max_{\boldsymbol{\alpha}^{\wedge},\boldsymbol{\alpha}^{\vee}}\ -\frac{1}{2}\Big\lVert\sum_{n=1}^{N}\big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big)\mathbf{z}_n\Big\rVert^2 - \sum_{n=1}^{N}\Big((\epsilon - y_n)\alpha_n^{\wedge} + (\epsilon + y_n)\alpha_n^{\vee}\Big) α ∧ , α ∨ max − 2 1 n = 1 ∑ N ( α n ∧ − α n ∨ ) z n 2 − n = 1 ∑ N ( ( ϵ − y n ) α n ∧ + ( ϵ + y n ) α n ∨ )
乘上 − 1 -1 − 1 改成 min,把長度的平方展開成雙重加總,內積換成 kernel,就是講義第 15 頁右下角的 SVR 對偶,其中 k n , m k_{n,m} k n , m 是 K ( x n , x m ) K(\mathbf{x}_n, \mathbf{x}_m) K ( x n , x m ) 的簡寫:
min α ∧ , α ∨ 1 2 ∑ n = 1 N ∑ m = 1 N ( α n ∧ − α n ∨ ) ( α m ∧ − α m ∨ ) k n , m + ∑ n = 1 N ( ( ϵ − y n ) ⋅ α n ∧ + ( ϵ + y n ) ⋅ α n ∨ ) s.t. ∑ n = 1 N 1 ⋅ ( α n ∧ − α n ∨ ) = 0 0 ≤ α n ∧ ≤ C , 0 ≤ α n ∨ ≤ C \begin{aligned}
\min_{\boldsymbol{\alpha}^{\wedge},\boldsymbol{\alpha}^{\vee}}\quad & \frac{1}{2}\sum_{n=1}^{N}\sum_{m=1}^{N}\big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big)\big(\alpha_m^{\wedge} - \alpha_m^{\vee}\big)k_{n,m} + \sum_{n=1}^{N}\Big((\epsilon - y_n)\cdot\alpha_n^{\wedge} + (\epsilon + y_n)\cdot\alpha_n^{\vee}\Big) \\
\text{s.t.}\quad & \sum_{n=1}^{N}1\cdot\big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big) = 0 \\
& 0 \le \alpha_n^{\wedge} \le C,\quad 0 \le \alpha_n^{\vee} \le C
\end{aligned} α ∧ , α ∨ min s.t. 2 1 n = 1 ∑ N m = 1 ∑ N ( α n ∧ − α n ∨ ) ( α m ∧ − α m ∨ ) k n , m + n = 1 ∑ N ( ( ϵ − y n ) ⋅ α n ∧ + ( ϵ + y n ) ⋅ α n ∨ ) n = 1 ∑ N 1 ⋅ ( α n ∧ − α n ∨ ) = 0 0 ≤ α n ∧ ≤ C , 0 ≤ α n ∨ ≤ C
式子裡只剩 kernel 值,d ~ \tilde{d} d ~ 不見了。
不重推也能對出來:SVM 與 SVR 的對照
課堂上沒有帶這段推導,改用第 15 頁的四種顏色說明「對偶問題的長相是有跡可循的」。投影片把 soft-margin SVM 與 SVR 的原始問題、對偶問題排成兩欄,同一種顏色的東西會跑到同一個位置:
原始問題裡的東西 跑到對偶的哪裡 soft-margin SVM SVR 限制式裡乘在 w \mathbf{w} w 上的 z n \mathbf{z}_n z n (與它的係數) 二次項的係數 y n y m K ( x n , x m ) y_n y_m K(\mathbf{x}_n, \mathbf{x}_m) y n y m K ( x n , x m ) k n , m k_{n,m} k n , m ,係數是 ± 1 \pm 1 ± 1 限制式裡的常數 一次項的係數 − 1 -1 − 1 (來自 ≥ 1 − ξ n \ge 1 - \xi_n ≥ 1 − ξ n 的 1)ϵ − y n \epsilon - y_n ϵ − y n 與 ϵ + y n \epsilon + y_n ϵ + y n 對 b b b 偏微分 一條等式 ∑ n y n α n = 0 \sum_n y_n\alpha_n = 0 ∑ n y n α n = 0 ∑ n 1 ⋅ ( α n ∧ − α n ∨ ) = 0 \sum_n 1\cdot(\alpha_n^{\wedge} - \alpha_n^{\vee}) = 0 ∑ n 1 ⋅ ( α n ∧ − α n ∨ ) = 0 C ∑ ξ C\sum\xi C ∑ ξ 與 ξ ≥ 0 \xi \ge 0 ξ ≥ 0 乘數的上界 0 ≤ α n ≤ C 0 \le \alpha_n \le C 0 ≤ α n ≤ C 0 ≤ α n ∧ ≤ C 0 \le \alpha_n^{\wedge} \le C 0 ≤ α n ∧ ≤ C 、0 ≤ α n ∨ ≤ C 0 \le \alpha_n^{\vee} \le C 0 ≤ α n ∨ ≤ C
投影片為了讓對照看得出來,把 SVR 的兩條限制式寫成 1 ⋅ ( y n − w ⊤ z n − b ) ≤ ϵ + ξ n ∧ 1\cdot(y_n - \mathbf{w}^\top\mathbf{z}_n - b) \le \epsilon + \xi_n^{\wedge} 1 ⋅ ( y n − w ⊤ z n − b ) ≤ ϵ + ξ n ∧ 與 1 ⋅ ( w ⊤ z n + b − y n ) ≤ ϵ + ξ n ∨ 1\cdot(\mathbf{w}^\top\mathbf{z}_n + b - y_n) \le \epsilon + \xi_n^{\vee} 1 ⋅ ( w ⊤ z n + b − y n ) ≤ ϵ + ξ n ∨ ,那個 1 就站在 SVM 的 y n y_n y n 的位置。課堂上說,掌握這四種顏色,只要知道哪個係數跑到哪裡,就能從原始問題寫出對偶。
講義這一頁的結論是 similar QP, solvable by similar solver。課堂上補充它的實際意義:為 soft-margin SVM 設計的又快又好的解法,可以用類似的方式套到 SVR 上。
稀疏性:管子裡的點 β 是 0
花這麼多力氣,是為了確認 SVR 有沒有 SVM 那種稀疏性。第 16 頁用的工具是互補鬆弛。講義第 14 頁列的兩條是
α n ∧ ( ϵ + ξ n ∧ − y n + w ⊤ z n + b ) = 0 α n ∨ ( ϵ + ξ n ∨ + y n − w ⊤ z n − b ) = 0 \begin{aligned}
\alpha_n^{\wedge}\big(\epsilon + \xi_n^{\wedge} - y_n + \mathbf{w}^\top\mathbf{z}_n + b\big) &= 0 \\
\alpha_n^{\vee}\big(\epsilon + \xi_n^{\vee} + y_n - \mathbf{w}^\top\mathbf{z}_n - b\big) &= 0
\end{aligned} α n ∧ ( ϵ + ξ n ∧ − y n + w ⊤ z n + b ) α n ∨ ( ϵ + ξ n ∨ + y n − w ⊤ z n − b ) = 0 = 0
每條都是「乘數」乘上「對應限制式的餘裕」,兩者至少一個是 0。技法第 2 堂的課堂上把這個關係比喻成哈利波特與佛地魔,兩個不能同時活下來;這堂的課堂上沒有再提這兩個名字,只沿用同一種講法:括號活下來,乘數就得掛掉。
考慮一筆嚴格落在管子裡的資料,∣ w ⊤ z n + b − y n ∣ < ϵ \lvert\mathbf{w}^\top\mathbf{z}_n + b - y_n\rvert < \epsilon ∣ w ⊤ z n + b − y n ∣ < ϵ ,講義的推論分四步:
它沒有任何違反,所以 ξ n ∧ = 0 \xi_n^{\wedge} = 0 ξ n ∧ = 0 、ξ n ∨ = 0 \xi_n^{\vee} = 0 ξ n ∨ = 0 。
兩個括號變成 ϵ − ( y n − w ⊤ z n − b ) \epsilon - (y_n - \mathbf{w}^\top\mathbf{z}_n - b) ϵ − ( y n − w ⊤ z n − b ) 與 ϵ + ( y n − w ⊤ z n − b ) \epsilon + (y_n - \mathbf{w}^\top\mathbf{z}_n - b) ϵ + ( y n − w ⊤ z n − b ) 。差距的絕對值嚴格小於 ϵ \epsilon ϵ ,所以兩個括號都嚴格大於 0。
括號不是 0,互補鬆弛逼得 α n ∧ = 0 \alpha_n^{\wedge} = 0 α n ∧ = 0 、α n ∨ = 0 \alpha_n^{\vee} = 0 α n ∨ = 0 。
β n = α n ∧ − α n ∨ = 0 \beta_n = \alpha_n^{\wedge} - \alpha_n^{\vee} = 0 β n = α n ∧ − α n ∨ = 0 。
這筆資料對 w \mathbf{w} w 沒有貢獻。反過來說,β n ≠ 0 \beta_n \ne 0 β n = 0 的支援向量只會是落在管壁上或管子外面的點(講義:on or outside tube)。講義的結論用字是 SVR allows sparse β \boldsymbol{\beta} β :管子裡的點愈多,β \boldsymbol{\beta} β 愈稀疏。
本文再補三件從這些條件直接推得出來的事,講義沒有寫:
管子外的點,乘數頂到 C C C 。 上方違反時 ξ n ∧ > 0 \xi_n^{\wedge} > 0 ξ n ∧ > 0 。ξ n ∧ ≥ 0 \xi_n^{\wedge} \ge 0 ξ n ∧ ≥ 0 這條限制式也有自己的互補鬆弛 γ n ∧ ξ n ∧ = 0 \gamma_n^{\wedge}\xi_n^{\wedge} = 0 γ n ∧ ξ n ∧ = 0 ,所以 γ n ∧ = 0 \gamma_n^{\wedge} = 0 γ n ∧ = 0 ,也就是 α n ∧ = C \alpha_n^{\wedge} = C α n ∧ = C 。下方違反同理得到 α n ∨ = C \alpha_n^{\vee} = C α n ∨ = C 。
同一筆資料的兩個乘數不會都是正的。 如果都是正的,兩個括號都得是 0;兩個括號相加是 2 ϵ + ξ n ∧ + ξ n ∨ 2\epsilon + \xi_n^{\wedge} + \xi_n^{\vee} 2 ϵ + ξ n ∧ + ξ n ∨ ,在 ϵ > 0 \epsilon > 0 ϵ > 0 時一定是正的,不可能兩個都是 0。所以 β n \beta_n β n 不是 α n ∧ \alpha_n^{\wedge} α n ∧ 就是 − α n ∨ -\alpha_n^{\vee} − α n ∨ ,大小介於 0 和 C C C 之間。
b b b 怎麼算。 找一筆 0 < α n ∧ < C 0 < \alpha_n^{\wedge} < C 0 < α n ∧ < C 的資料:α n ∧ < C \alpha_n^{\wedge} < C α n ∧ < C 表示 γ n ∧ > 0 \gamma_n^{\wedge} > 0 γ n ∧ > 0 ,所以 ξ n ∧ = 0 \xi_n^{\wedge} = 0 ξ n ∧ = 0 ;α n ∧ > 0 \alpha_n^{\wedge} > 0 α n ∧ > 0 表示括號是 0。兩者合起來得到 b = y n − w ⊤ z n − ϵ b = y_n - \mathbf{w}^\top\mathbf{z}_n - \epsilon b = y n − w ⊤ z n − ϵ ,這筆資料剛好在上管壁。用 0 < α n ∨ < C 0 < \alpha_n^{\vee} < C 0 < α n ∨ < C 的資料則是 b = y n − w ⊤ z n + ϵ b = y_n - \mathbf{w}^\top\mathbf{z}_n + \epsilon b = y n − w ⊤ z n + ϵ 。這和技法第 4 堂用 free support vector(0 < α n < C 0 < \alpha_n < C 0 < α n < C 的支援向量)算 b b b 是同一個做法。
三種位置整理成一張表:
資料的位置 違反量 乘數 β n \beta_n β n 嚴格在管子裡 都是 0 都是 0 0 0 0 剛好在上管壁/下管壁 都是 0 0 ≤ α n ∧ ≤ C 0 \le \alpha_n^{\wedge} \le C 0 ≤ α n ∧ ≤ C /0 ≤ α n ∨ ≤ C 0 \le \alpha_n^{\vee} \le C 0 ≤ α n ∨ ≤ C 介於 0 0 0 與 C C C /介於 − C -C − C 與 0 0 0 在管子上方/下方 ξ n ∧ > 0 \xi_n^{\wedge} > 0 ξ n ∧ > 0 /ξ n ∨ > 0 \xi_n^{\vee} > 0 ξ n ∨ > 0 α n ∧ = C \alpha_n^{\wedge} = C α n ∧ = C /α n ∨ = C \alpha_n^{\vee} = C α n ∨ = C C C C /− C -C − C
數值例子:三個點的 SVR,原始與對偶都解完
以下是本文自擬的例子,不在講義上。三筆一維資料落在同一條直線上,不做特徵轉換(z n = x n z_n = x_n z n = x n ,kernel 是 K ( x , x ′ ) = x x ′ K(x, x') = xx' K ( x , x ′ ) = x x ′ ),取 ϵ = 0.5 \epsilon = 0.5 ϵ = 0.5 、C = 1 C = 1 C = 1 :
n n n x n x_n x n y n y_n y n 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3
第一步:解原始問題。 記 r n = y n − w x n − b r_n = y_n - wx_n - b r n = y n − w x n − b 。第 3 點的上方違反量至少是 r 3 − ϵ r_3 - \epsilon r 3 − ϵ ,第 1 點的下方違反量至少是 − r 1 − ϵ -r_1 - \epsilon − r 1 − ϵ ,所以違反量的總和至少是
( r 3 − ϵ ) + ( − r 1 − ϵ ) = ( 3 − 3 w − b ) − ( 1 − w − b ) − 2 ϵ = 1 − 2 w (r_3 - \epsilon) + (-r_1 - \epsilon) = (3 - 3w - b) - (1 - w - b) - 2\epsilon = 1 - 2w ( r 3 − ϵ ) + ( − r 1 − ϵ ) = ( 3 − 3 w − b ) − ( 1 − w − b ) − 2 ϵ = 1 − 2 w
違反量也不會是負的,所以目標函數至少是 1 2 w 2 + C max ( 0 , 1 − 2 w ) \frac{1}{2}w^2 + C\max(0, 1 - 2w) 2 1 w 2 + C max ( 0 , 1 − 2 w ) ,這個下界和 b b b 無關。w ≥ 1 2 w \ge \frac{1}{2} w ≥ 2 1 時它是 1 2 w 2 \frac{1}{2}w^2 2 1 w 2 ,最小在 w = 1 2 w = \frac{1}{2} w = 2 1 ,值是 1 8 \frac{1}{8} 8 1 。w < 1 2 w < \frac{1}{2} w < 2 1 時它是 1 2 w 2 + 1 − 2 w \frac{1}{2}w^2 + 1 - 2w 2 1 w 2 + 1 − 2 w ,微分是 w − 2 < 0 w - 2 < 0 w − 2 < 0 ,w w w 愈小值愈大,所以比 1 8 \frac{1}{8} 8 1 大。下界的最小值是 1 8 \frac{1}{8} 8 1 ,發生在 w = 1 2 w = \frac{1}{2} w = 2 1 。
接著確認這個下界做得到。w = 1 2 w = \frac{1}{2} w = 2 1 而且完全不違反,需要第 1 點 ∣ 1 2 + b − 1 ∣ ≤ 1 2 \lvert\frac{1}{2} + b - 1\rvert \le \frac{1}{2} ∣ 2 1 + b − 1 ∣ ≤ 2 1 與第 3 點 ∣ 3 2 + b − 3 ∣ ≤ 1 2 \lvert\frac{3}{2} + b - 3\rvert \le \frac{1}{2} ∣ 2 3 + b − 3 ∣ ≤ 2 1 ,也就是 b ≤ 1 b \le 1 b ≤ 1 與 b ≥ 1 b \ge 1 b ≥ 1 ,所以 b = 1 b = 1 b = 1 。最佳解是
w = 1 2 , b = 1 , 所有 ξ n ∨ = ξ n ∧ = 0 , 目標值 = 1 8 w = \frac{1}{2},\qquad b = 1,\qquad \text{所有 } \xi_n^{\vee} = \xi_n^{\wedge} = 0,\qquad \text{目標值} = \frac{1}{8} w = 2 1 , b = 1 , 所有 ξ n ∨ = ξ n ∧ = 0 , 目標值 = 8 1
第二步:看每筆資料在管子的哪裡。
n n n 分數 w x n + b wx_n + b w x n + b r n = y n − r_n = y_n - r n = y n − 分數位置 1 1.5 1.5 1.5 − 0.5 -0.5 − 0.5 剛好在下管壁 2 2 2 2 0 0 0 嚴格在管子裡 3 2.5 2.5 2.5 + 0.5 +0.5 + 0.5 剛好在上管壁
第三步:由 KKT 條件算乘數。 第 2 點嚴格在管子裡,兩個乘數都是 0。第 1 點在下管壁,上方的括號是 ϵ − r 1 = 1 ≠ 0 \epsilon - r_1 = 1 \ne 0 ϵ − r 1 = 1 = 0 ,所以 α 1 ∧ = 0 \alpha_1^{\wedge} = 0 α 1 ∧ = 0 ,只有 α 1 ∨ \alpha_1^{\vee} α 1 ∨ 可能是正的。第 3 點同理只有 α 3 ∧ \alpha_3^{\wedge} α 3 ∧ 可能是正的。剩下兩條等式:
∑ n ( α n ∧ − α n ∨ ) = α 3 ∧ − α 1 ∨ = 0 , w = ∑ n ( α n ∧ − α n ∨ ) x n = 3 α 3 ∧ − α 1 ∨ = 1 2 \sum_n \big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big) = \alpha_3^{\wedge} - \alpha_1^{\vee} = 0, \qquad w = \sum_n \big(\alpha_n^{\wedge} - \alpha_n^{\vee}\big)x_n = 3\alpha_3^{\wedge} - \alpha_1^{\vee} = \frac{1}{2} n ∑ ( α n ∧ − α n ∨ ) = α 3 ∧ − α 1 ∨ = 0 , w = n ∑ ( α n ∧ − α n ∨ ) x n = 3 α 3 ∧ − α 1 ∨ = 2 1
解得 α 3 ∧ = α 1 ∨ = 1 4 \alpha_3^{\wedge} = \alpha_1^{\vee} = \frac{1}{4} α 3 ∧ = α 1 ∨ = 4 1 ,都在 0 與 C = 1 C = 1 C = 1 之間。所以
β = ( − 1 4 , 0 , 1 4 ) , g ( x ) = ∑ n β n K ( x n , x ) + b = ( − 1 4 ⋅ 1 + 1 4 ⋅ 3 ) x + 1 = 1 2 x + 1 \boldsymbol{\beta} = \Big(-\frac{1}{4},\ 0,\ \frac{1}{4}\Big), \qquad g(x) = \sum_n \beta_n K(x_n, x) + b = \Big(-\frac{1}{4}\cdot 1 + \frac{1}{4}\cdot 3\Big)x + 1 = \frac{1}{2}x + 1 β = ( − 4 1 , 0 , 4 1 ) , g ( x ) = n ∑ β n K ( x n , x ) + b = ( − 4 1 ⋅ 1 + 4 1 ⋅ 3 ) x + 1 = 2 1 x + 1
b b b 也可以用上面補充的公式算:第 3 點 b = 3 − 1.5 − 0.5 = 1 b = 3 - 1.5 - 0.5 = 1 b = 3 − 1.5 − 0.5 = 1 ,第 1 點 b = 1 − 0.5 + 0.5 = 1 b = 1 - 0.5 + 0.5 = 1 b = 1 − 0.5 + 0.5 = 1 ,一致。
第四步:檢查對偶的目標值。 二次項是 1 2 ∥ ∑ n β n x n ∥ 2 = 1 2 w 2 = 1 8 \frac{1}{2}\lVert\sum_n\beta_n x_n\rVert^2 = \frac{1}{2}w^2 = \frac{1}{8} 2 1 ∥ ∑ n β n x n ∥ 2 = 2 1 w 2 = 8 1 。一次項是 ( ϵ − y 3 ) α 3 ∧ + ( ϵ + y 1 ) α 1 ∨ = ( − 2.5 ) ( 0.25 ) + ( 1.5 ) ( 0.25 ) = − 1 4 (\epsilon - y_3)\alpha_3^{\wedge} + (\epsilon + y_1)\alpha_1^{\vee} = (-2.5)(0.25) + (1.5)(0.25) = -\frac{1}{4} ( ϵ − y 3 ) α 3 ∧ + ( ϵ + y 1 ) α 1 ∨ = ( − 2.5 ) ( 0.25 ) + ( 1.5 ) ( 0.25 ) = − 4 1 。合計 − 1 8 -\frac{1}{8} − 8 1 ,正好是原始最佳值 1 8 \frac{1}{8} 8 1 的負號(對偶乘過 − 1 -1 − 1 才寫成 min),強對偶成立。
這個結果代表什麼。
三筆資料只有兩筆是支援向量,中間那筆的 β 2 = 0 \beta_2 = 0 β 2 = 0 ,預測時用不到它。
資料其實在 y = x y = x y = x 上,SVR 卻學到斜率 1 2 \frac{1}{2} 2 1 的線。管子容忍 0.5 0.5 0.5 的誤差,正則化項又偏好小的 w w w ,所以它挑了「剛好還能把三個點都收進管子」的最平的線。ϵ \epsilon ϵ 相對於資料的範圍選得太大,模型就會偏平,這是多出來的那個參數要付的代價。
拿同一組資料跑 kernel ridge regression(同一個 kernel,λ = 1 \lambda = 1 λ = 1 ):K = x x ⊤ \mathrm{K} = \mathbf{x}\mathbf{x}^\top K = x x ⊤ 、y = x \mathbf{y} = \mathbf{x} y = x 、∥ x ∥ 2 = 14 \lVert\mathbf{x}\rVert^2 = 14 ∥ x ∥ 2 = 14 。試 β = c x \boldsymbol{\beta} = c\,\mathbf{x} β = c x ,( I + x x ⊤ ) c x = c ( 1 + 14 ) x (\mathrm{I} + \mathbf{x}\mathbf{x}^\top)c\,\mathbf{x} = c(1 + 14)\mathbf{x} ( I + x x ⊤ ) c x = c ( 1 + 14 ) x ,要等於 x \mathbf{x} x 就是 c = 1 15 c = \frac{1}{15} c = 15 1 ,所以 β = ( 1 15 , 2 15 , 3 15 ) \boldsymbol{\beta} = (\frac{1}{15}, \frac{2}{15}, \frac{3}{15}) β = ( 15 1 , 15 2 , 15 3 ) ,三個都不是 0,g ( x ) = 14 15 x g(x) = \frac{14}{15}x g ( x ) = 15 14 x 。兩個模型一稀疏一稠密的差別,在三筆資料上就看得到。
本文用 Python 驗算過:以 scipy 的數值最佳化分別解原始與對偶問題,得到 w = 0.5 w = 0.5 w = 0.5 、b = 1 b = 1 b = 1 、α 3 ∧ = α 1 ∨ = 0.25 \alpha_3^{\wedge} = \alpha_1^{\vee} = 0.25 α 3 ∧ = α 1 ∨ = 0.25 、目標值 0.125 0.125 0.125 與 − 0.125 -0.125 − 0.125 ;scikit-learn 的 SVR(kernel='linear', C=1, epsilon=0.5) 回報的支援向量是第 1、3 筆,係數 − 0.25 -0.25 − 0.25 與 0.25 0.25 0.25 ,截距 1 1 1 。
Fun Time:SVR 對偶有幾個變數
題目(第 17 頁): SVR 對偶的 QP 有幾個變數?
d ~ + 1 \tilde{d} + 1 d ~ + 1
d ~ + 1 + 2 N \tilde{d} + 1 + 2N d ~ + 1 + 2 N
N N N
2 N 2N 2 N
答案:4。 講義的解答:α ∨ \boldsymbol{\alpha}^{\vee} α ∨ 有 N N N 個變數,α ∧ \boldsymbol{\alpha}^{\wedge} α ∧ 另有 N N N 個。
其他選項各是另一個問題的答案(本文的對照):d ~ + 1 \tilde{d} + 1 d ~ + 1 是 hard-margin SVM 原始問題的變數個數;d ~ + 1 + 2 N \tilde{d} + 1 + 2N d ~ + 1 + 2 N 是 SVR 原始問題的;N N N 是 SVM 對偶的。SVR 的對偶比 SVM 的對偶多一倍變數,因為每筆資料有上下兩條管壁。
六堂課的 kernel 模型放在一張地圖上
YouTube:Support Vector Regression :: Summary of Kernel Models @ Machine Learning Techniques (機器學習技法)
(影片 00:00–02:25 是線性模型的地圖,02:25–04:05 加上 kernel 模型,04:05–05:47 談哪些實務上常用,05:47–06:44 是 kernel 的威力與責任,06:44–07:20 是 Fun Time,之後是總結與下一堂預告。)
線性模型有五個
講義第 18 頁先整理線性模型。基石教了三個:PLA/pocket 做分類,線性(ridge)迴歸做實數的迴歸,邏輯迴歸做軟性分類。技法在分類那一欄加了線性 soft-margin SVM,這堂又在迴歸那一欄加了線性 SVR。課堂上說明排版的邏輯:解同一種問題的模型排在同一欄。
加上 kernel 之後的完整地圖
第 19 頁往下長出兩列 kernel 模型。課堂上的總綱是:線性模型只要有正則化,就有機會延伸到 kernel。合起來是四列三欄,下表的欄名是本文依課堂上的說明加的,格子裡的做法照講義:
列 分類 迴歸 軟性分類 1 PLA/pocket:用特別的方式最小化 0/1 誤差 線性 SVR:用 QP 最小化正則化的管狀誤差 2 線性 soft-margin SVM:用 QP 最小化正則化的 hinge 誤差 線性 ridge regression:用解析解最小化正則化的平方誤差 正則化邏輯迴歸:用 GD/SGD 最小化正則化的 cross-entropy 3 kernel ridge regression:把線性 ridge regression kernel 化 kernel 邏輯迴歸:把正則化邏輯迴歸 kernel 化 4 SVM:用 QP 解 SVM 對偶 SVR:用 QP 解 SVR 對偶 機率化 SVM:在 SVM 轉換後的分數上跑邏輯迴歸
第 3 列靠的是 representer theorem,第 4 列靠的是對偶問題(機率化 SVM 是上一堂的兩階段做法)。
哪些常用,哪些少用
講義第 18 到 20 頁對四列各有一句評語:
列 講義的評語 課堂上的理由 1 比較少用,因為表現較差 PLA/pocket 比不上 soft-margin SVM:後者能處理線性不可分的資料,解起來也有效率。在意平方誤差時,線性 ridge regression 通常比線性 SVR 表現好 2 LIBLINEAR 裡常用這三個模型是 LIBLINEAR 實作的核心,另有一些變化形式 3 比較少用,因為 β \boldsymbol{\beta} β 稠密 預測要多花很多力氣,又沒有額外的好處。很多人會選 SVR 而不選 kernel ridge regression,選機率化 SVM 而不選 kernel 邏輯迴歸 4 LIBSVM 裡常用三個模型在 LIBSVM 裡都有實作
課堂上提到這兩套軟體都是在台大開發的,LIBSVM 是非常多人使用的 SVM 軟體。
威力愈大,責任愈大
第 21 頁把 kernel 模型收成一句話:可以選的 kernel 有多項式、Gaussian,或自己設計的(要滿足 Mercer 條件),配上第 3、4 列那五個模型,是線性模型很強大的延伸。講義接著引了電影《蜘蛛人》的台詞:with great power comes great responsibility。
課堂上把這句話講白了。Gaussian kernel 對應無限多維的轉換,威力很大;基石談特徵轉換時就提醒過,有了這種力量要小心。具體的責任是小心選參數、小心做驗證,確保這些威力不會被誤用在過擬合上。
Fun Time:哪個模型比較少用
題目(第 22 頁): 下列哪一個模型在實務上比較少用?
pocket
ridge regression
(線性或 kernel 的)soft-margin SVM
正則化邏輯迴歸
答案:1。 講義的解答是 pocket 演算法一般來說不會比線性 soft-margin SVM 表現好,所以比較少用。對照上面的地圖:pocket 在第 1 列;ridge regression 與正則化邏輯迴歸在第 2 列,是 LIBLINEAR 裡常用的;soft-margin SVM 的線性版在第 2 列、kernel 版在第 4 列,兩個都在常用的那幾列。
第 23 頁的總結把四節各收成一句:kernel ridge regression 是 representer theorem 用在 ridge regression 上;SVR 的原始問題是最小化正則化的管狀誤差;SVR 的對偶是和 SVM 對偶類似的 QP;kernel 模型威力大、責任也大。下一堂的預告是 making cocktail from learning models,課堂上的比喻是調雞尾酒或打綜合果汁,把不同方法的長處混在一起。
自我檢查
1. 兩筆資料 x 1 = − 1 x_1 = -1 x 1 = − 1 、y 1 = − 1 y_1 = -1 y 1 = − 1 ;x 2 = 1 x_2 = 1 x 2 = 1 、y 2 = 1 y_2 = 1 y 2 = 1 。用 K ( x , x ′ ) = ( 1 + x x ′ ) 2 K(x, x') = (1 + xx')^2 K ( x , x ′ ) = ( 1 + x x ′ ) 2 、λ = 1 \lambda = 1 λ = 1 做 kernel ridge regression,求 β \boldsymbol{\beta} β 與 g ( x ) g(x) g ( x ) 。
答案:K ( x 1 , x 1 ) = K ( x 2 , x 2 ) = 4 K(x_1, x_1) = K(x_2, x_2) = 4 K ( x 1 , x 1 ) = K ( x 2 , x 2 ) = 4 ,K ( x 1 , x 2 ) = 0 K(x_1, x_2) = 0 K ( x 1 , x 2 ) = 0 ,所以 λ I + K \lambda\mathrm{I} + \mathrm{K} λ I + K 是對角線為 5 的對角矩陣,β = ( − 1 5 , 1 5 ) \boldsymbol{\beta} = (-\frac{1}{5}, \frac{1}{5}) β = ( − 5 1 , 5 1 ) 。g ( x ) = − 1 5 ( 1 − x ) 2 + 1 5 ( 1 + x ) 2 = 4 5 x g(x) = -\frac{1}{5}(1 - x)^2 + \frac{1}{5}(1 + x)^2 = \frac{4}{5}x g ( x ) = − 5 1 ( 1 − x ) 2 + 5 1 ( 1 + x ) 2 = 5 4 x ,在 x = 1 x = 1 x = 1 預測 0.8 0.8 0.8 ,比目標 1 1 1 小,是正則化的效果。
2. ϵ = 0.2 \epsilon = 0.2 ϵ = 0.2 。某筆資料的分數是 3.0 3.0 3.0 、目標是 3.5 3.5 3.5 ;另一筆的分數是 3.0 3.0 3.0 、目標是 2.9 2.9 2.9 。各自的 ξ ∨ \xi^{\vee} ξ ∨ 、ξ ∧ \xi^{\wedge} ξ ∧ 、管狀誤差與平方誤差是多少?
答案:第一筆 y − s = 0.5 > 0.2 y - s = 0.5 > 0.2 y − s = 0.5 > 0.2 ,目標在分數上方,ξ ∧ = 0.3 \xi^{\wedge} = 0.3 ξ ∧ = 0.3 、ξ ∨ = 0 \xi^{\vee} = 0 ξ ∨ = 0 ,管狀誤差 0.3 0.3 0.3 ,平方誤差 0.25 0.25 0.25 。第二筆 ∣ y − s ∣ = 0.1 ≤ 0.2 \lvert y - s\rvert = 0.1 \le 0.2 ∣ y − s ∣ = 0.1 ≤ 0.2 ,在管子裡,兩個違反量與管狀誤差都是 0,平方誤差是 0.01 0.01 0.01 。
3. 為什麼嚴格落在管子裡的點 β n \beta_n β n 一定是 0?β n ≠ 0 \beta_n \ne 0 β n = 0 的點一定在管子外面嗎?
判準:第一問要用到互補鬆弛,說出管子裡的點兩個違反量都是 0、兩個括號都嚴格大於 0,所以兩個乘數都是 0。第二問的答案是不一定:剛好在管壁上的點也可以有非零的 β n \beta_n β n ,本文三個點的例子裡,兩個支援向量都在管壁上,沒有任何一點在管子外面。
4. 在三個點的 SVR 例子裡,把 C C C 改成 0.1 0.1 0.1 (ϵ \epsilon ϵ 仍是 0.5 0.5 0.5 ),最佳的 w w w 與目標值是多少?改成 ϵ = 0 \epsilon = 0 ϵ = 0 、C = 1 C = 1 C = 1 呢?
答案:沿用例子裡的下界 1 2 w 2 + C max ( 0 , 1 − 2 w ) \frac{1}{2}w^2 + C\max(0, 1 - 2w) 2 1 w 2 + C max ( 0 , 1 − 2 w ) 。C = 0.1 C = 0.1 C = 0.1 時,w < 1 2 w < \frac{1}{2} w < 2 1 那一段的微分是 w − 2 C = w − 0.2 w - 2C = w - 0.2 w − 2 C = w − 0.2 ,在 w = 0.2 w = 0.2 w = 0.2 最小,值是 0.02 + 0.1 × 0.6 = 0.08 0.02 + 0.1 \times 0.6 = 0.08 0.02 + 0.1 × 0.6 = 0.08 ,比不違反的 0.125 0.125 0.125 小。違反量變便宜之後,模型寧可讓頭尾兩點超出管子共 0.6 0.6 0.6 ,換一條更平的線;這兩點的乘數都頂到 C = 0.1 C = 0.1 C = 0.1 ,w = 0.1 × 3 − 0.1 × 1 = 0.2 w = 0.1 \times 3 - 0.1 \times 1 = 0.2 w = 0.1 × 3 − 0.1 × 1 = 0.2 對得上。這時 b b b 不唯一:要讓第 3 點在上管壁或更上方、第 1 點在下管壁或更下方、第 2 點留在管子裡,需要 1.3 ≤ b ≤ 1.9 1.3 \le b \le 1.9 1.3 ≤ b ≤ 1.9 ,這個範圍裡的每個 b b b 都給出同樣的違反量總和 0.6 0.6 0.6 與同樣的目標值。原因是沒有任何一筆資料的乘數嚴格介於 0 和 C C C 之間,稀疏性那一小節「b b b 怎麼算」的公式找不到可以用的點;技法第 4 堂的講義對 soft-margin SVM 也寫了同一件事:沒有 free support vector 時,只能得到 b b b 的範圍。ϵ = 0 \epsilon = 0 ϵ = 0 時,違反量總和的下界變成 2 − 2 w 2 - 2w 2 − 2 w ,目標函數的下界是 1 2 w 2 + max ( 0 , 2 − 2 w ) \frac{1}{2}w^2 + \max(0, 2 - 2w) 2 1 w 2 + max ( 0 , 2 − 2 w ) :w < 1 w < 1 w < 1 時微分 w − 2 < 0 w - 2 < 0 w − 2 < 0 ,所以最小在 w = 1 w = 1 w = 1 ,此時 b = 0 b = 0 b = 0 、目標值 0.5 0.5 0.5 ,三個點都在直線上。管子沒有寬度時,SVR 把資料完全配適。兩個答案本文都用數值最佳化驗算過。
5. N = 10,000 N = 10{,}000 N = 10 , 000 筆資料,特徵轉換後 d ~ = 10 6 \tilde{d} = 10^6 d ~ = 1 0 6 。SVR 的原始與對偶 QP 各有幾個變數?改用 kernel ridge regression 要對多大的矩陣求逆?
答案:原始問題 d ~ + 1 + 2 N = 1,020,001 \tilde{d} + 1 + 2N = 1{,}020{,}001 d ~ + 1 + 2 N = 1 , 020 , 001 個變數、4 N = 40,000 4N = 40{,}000 4 N = 40 , 000 條限制式。對偶 2 N = 20,000 2N = 20{,}000 2 N = 20 , 000 個變數,和 d ~ \tilde{d} d ~ 無關。kernel ridge regression 要對 10,000 × 10,000 10{,}000 \times 10{,}000 10 , 000 × 10 , 000 的稠密矩陣求逆,有 10 8 10^8 1 0 8 個元素,O ( N 3 ) O(N^3) O ( N 3 ) 是 10 12 10^{12} 1 0 12 的量級,而且解出來的 β \boldsymbol{\beta} β 一萬個幾乎都不是 0。
練習與對應閱讀
兩個學期的實體課都沒有排這堂。 Fall 2024 課程頁 在 W11(11/11)上了改寫過的第 5 堂(投影片 205u),同一週就接著講 blending 與 bagging,第 6 堂沒排。Fall 2026 課程頁 在 W10 講完 kernel 與 soft-margin SVM 之後,W11(11/18)直接進入 blending、bagging 與 AdaBoost,第 5、6 堂都沒排。所以這堂只能以 MOOC 的講義與影片為準,兩者都免費公開。只想跟台大實體課進度的人可以先跳過這堂;想把 kernel 模型看完整的人,這堂補上了迴歸這一塊。
作業。 這堂沒有對應的公開作業題。技法其他堂的作業對照見技法作業與期末專題 。
自己動手。 拿一份迴歸資料,用 scikit-learn 的 KernelRidge 與 SVR 配同一個 RBF kernel 各跑一次。比較兩者的測試誤差,再數 SVR 的 support_ 有幾個元素、KernelRidge 的 dual_coef_ 有幾個不是 0,就能在真實資料上看到這堂講的稀疏與稠密。接著把 epsilon 調大、調小,觀察支援向量的數量怎麼變。
延伸閱讀。 CS229 主講義第 5 章 用另一種方式推導 kernel 方法;Caltech Learning from Data 是同一本教科書的英文課。
下一堂。 技法第 7 堂:Blending 與 Bagging 進入技法的第二種技巧 Combining Predictive Features: Aggregation Models:手上有好幾個模型時,怎麼把它們合起來。
課程影片來源
原始影片:Kernel Ridge Regression 、Support Vector Regression Primal 、Support Vector Regression Dual 、Summary of Kernel Models
查核日期:2026-10-13。影片 ID、標題與長度於當天從官方播放清單取得;YouTube 上沒有字幕軌,本文的課堂說法來自自行轉錄的逐字稿。
更新紀錄
2026-10-13:改為一堂一篇,這篇只寫技法第 6 堂,依講義與影片逐字稿重寫。
參考資料