1. 程式人生 > >線性迴歸——lasso迴歸和嶺迴歸(ridge regression)

線性迴歸——lasso迴歸和嶺迴歸(ridge regression)

目錄

  • 線性迴歸
  • Lasso迴歸和嶺迴歸
  • 為什麼 lasso 更容易使部分權重變為 0 而 ridge 不行?
  • References

線性迴歸很簡單,用線性函式擬合數據,用 mean square error (mse) 計算損失(cost),然後用梯度下降法找到一組使 mse 最小的權重。

lasso 迴歸和嶺迴歸(ridge regression)其實就是在標準線性迴歸的基礎上分別加入 L1 和 L2 正則化(regularization)。

本文的重點是解釋為什麼 L1 正則化會比 L2 正則化讓線性迴歸的權重更加稀疏,即使得線性迴歸中很多權重為 0,而不是接近 0。或者說,為什麼 L1 正則化(lasso)可以進行 feature selection,而 L2 正則化(ridge)不行。

線性迴歸

線性迴歸(linear regression),就是用線性函式 \(f(\bm x) = \bm w^{\top} \bm x + b\) 去擬合一組資料 \(D = \{(\bm x_1, y_1), (\bm x_2, y_2), ..., (\bm x_n, y_n)\}\) 並使得損失 \(J = \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2\) 最小。線性迴歸的目標就是找到一組 \((\bm w^*, b^*)\),使得損失 \(J\) 最小。

線性迴歸的擬合函式(或 hypothesis)為:
\[ f(\bm x) = \bm w^{\top} \bm x + b \tag{1} \]

cost function (mse) 為:
\[ \begin{split} J &= \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2 \\ & = \frac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2 \end{split} \tag{2} \]

Lasso迴歸和嶺迴歸

Lasso 迴歸和嶺迴歸(ridge regression)都是在標準線性迴歸的基礎上修改 cost function,即修改式(2),其它地方不變。

Lasso 的全稱為 least absolute shrinkage and selection operator,又譯最小絕對值收斂和選擇運算元、套索演算法。

Lasso 迴歸對式(2)加入 L1 正則化,其 cost function 如下:
\[ J = \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2 + \lambda \|w\|_1 \tag{3} \]

嶺迴歸對式(2)加入 L2 正則化,其 cost function 如下:
\[ J = \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2 + \lambda \|w\|_2^2 \tag{4} \]

Lasso迴歸和嶺迴歸的同和異:

  • 相同:
    • 都可以用來解決標準線性迴歸的過擬合問題。
  • 不同:
    • lasso 可以用來做 feature selection,而 ridge 不行。或者說,lasso 更容易使得權重變為 0,而 ridge 更容易使得權重接近 0。

為什麼 lasso 更容易使部分權重變為 0 而 ridge 不行?

lasso 和 ridge regression 的目標都是 \(\min_{\bm w, b} J\),式(3)和(4)都是拉格朗日形式,其中 \(\lambda\) 為拉格朗日乘子,我們也可以將 \(\min_{\bm w, b} J\) 寫成如下形式:

  • lasso regression:
    \[ \begin{array}{cl} {\min \limits_{w, b}} & {\dfrac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2} \\ {\text{s.t.}} &{\|w\|_1 \le t} \end{array} \tag{5} \]

  • ridge regression:
    \[ \begin{array}{cl} {\min \limits_{w, b}} & {\dfrac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2} \\ {\text{s.t.}} &{\|w\|_2^2 \le t} \end{array} \tag{6} \]

式(5)和(6)可以理解為,在 \(\bm w\) 限制的取值範圍內,找一個點 \(\hat{\bm w}\) 使得 mean square error 最小,\(t\) 可以理解為正則化的力度,式(5)和(6)中的 \(t\) 越小,就意味著式(3)和(4)中 \(\lambda\) 越大,正則化的力度越大 。

以 \(\bm x \in R^2\) 為例,式(5)中對 \(\bm w\) 的限制空間是方形,而式(6)中對 \(\bm w\) 的限制空間是圓形。因為 lasso 對 \(\bm w\) 的限制空間是有稜角的,因此 \(\arg \min_{w, b} {\frac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2}\) 的解更容易切在 \(\bm w\) 的某一個維為 0 的點。如下圖所示:




Fig.1[1] Lasso (left) and ridge (right) regression.

Fig. 1 中的座標系表示 \(\bm w\) 的兩維,一圈又一圈的橢圓表示函式 \(J = {\frac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2}\) 的等高線,橢圓越往外,\(J\) 的值越大,\(\bm w^*\) 表示使得損失 \(J\) 取得全域性最優的值。使用 Gradient descent,也就是讓 \(\bm w\) 向著 \(\bm w^*\) 的位置走。如果沒有 L1 或者 L2 正則化約束,\(\bm w^*\) 是可以被取到的。但是,由於有了約束 \(\|w\|_1 \le t\) 或 \(\|w\|_2^2 \le t\),\(\bm w\) 的取值只能限制在 Fig. 1 所示的灰色方形和圓形區域。當然調整 \(t\) 的值,我麼能夠擴大這兩個區域。

等高線從低到高第一次和 \(\bm w\) 的取值範圍相切的點,即是 lasso 和 ridge 迴歸想要找的權重 \(\hat{\bm w}\)。

lasso 限制了 \(\bm w\) 的取值範圍為有稜角的方形,而 ridge 限制了 \(\bm w\) 的取值範圍為圓形,等高線和方形區域的切點更有可能在座標軸上,而等高線和圓形區域的切點在座標軸上的概率很小。這就是為什麼 lasso(L1 正則化)更容易使得部分權重取 0,使權重變稀疏;而 ridge(L2 正則化)只能使權重接近 0,很少等於 0。

正是由於 lasso 容易使得部分權重取 0,所以可以用其做 feature selection,lasso 的名字就指出了它是一個 selection operator。權重為 0 的 feature 對迴歸問題沒有貢獻,直接去掉權重為 0 的 feature,模型的輸出值不變。

對於 ridge regression 進行 feature selection,你說它完全不可以吧也不是,weight 趨近於 0 的 feature 不要了不也可以,但是對模型的效果還是有損傷的,這個前提還得是 feature 進行了歸一化。

References

[1] Tibshirani, R. (1996). Regression Shrinkage and Selection Via the Lasso. Journal Of The Royal Statistical Society: Series B (Methodological), 58(1), 267-288. doi: 10.1111/j.2517-6161.1996.tb02080.x
[2] Lasso演算法 -- 維基百科
[3] 機器學習總結(一):線性迴歸、嶺迴歸、Lasso迴歸 -- 她說巷尾的櫻花