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

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

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

本文的重點是解釋爲何 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} \]spa

Lasso迴歸和嶺迴歸

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

Lasso 的全稱爲 least absolute shrinkage and selection operator,又譯最小絕對值收斂和選擇算子、套索算法。3d

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} \]htm

嶺迴歸對式(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(L1 正則)等價於參數 \(\bm w\) 的先驗機率分佈知足拉普拉斯分佈,而 ridge(L2 正則)等價於參數 \(\bm w\) 的先驗機率分佈知足高斯分佈。具體參考博客 從貝葉斯角度深刻理解正則化 -- Zxdon

也許會有個疑問,線性迴歸還會有過擬合問題?

加入 L1 或 L2 正則化,讓權值儘量小,最後構造一個全部參數都比較小的模型。由於通常認爲參數值小的模型比較簡單,能適應不一樣的數據集,也在必定程度上避免了過擬合現象。

能夠設想一下對於一個線性迴歸方程,若參數很大,那麼只要數據偏移一點點,就會對結果形成很大的影響;但若是參數足夠小,數據偏移得多一點也不會對結果形成什幺影響,一種流行的說法是『抗擾動能力強』。具體參見博客 淺議過擬合現象(overfitting)以及正則化技術原理

爲何 lasso 更容易使部分權重變爲 0 而 ridge 不行?

lasso 和 ridge regression 的目標都是 \(\min_{\bm w, b} J\),式(3)和(4)都是拉格朗日形式(with KKT條件),其中 \(\lambda\) 爲 KKT 乘子,咱們也能夠將 \(\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迴歸 -- 她說巷尾的櫻花開了
[4] 從貝葉斯角度深刻理解正則化 -- Zxdon
[5] 淺議過擬合現象(overfitting)以及正則化技術原理 -- 閃念基因

相關文章
相關標籤/搜索