R 嶺回歸 lasso回歸

2021-08-07 20:29:17 字數 1389 閱讀 4675

1.嶺回歸:

嶺回歸(ridge regression, tikhonov regularization)實際上算是最小二乘法(ols)的改良版。最小二乘法中使用的是無偏估計回歸,而嶺回歸使用的是 有偏估計回歸——通過損失部分資訊、減低精度得到的回歸係數,但是這樣跟符合實際情況。因為ols有四個基本假設:

1.解釋變數是確定變數,不是隨機變數

2.隨機誤差項具有零均值、同方差

3.隨機誤差項與解釋變數之間不相關

4.隨機誤差項服從零均值、同方差、零協方差的正態分佈

(這就和以前做物理題目一樣:假設在理想狀態下。然而實際是不理想的-_-)

將下面之前先來了解一下什麼叫l0/l1/l2範數

l0:向量中非零元素個數

l1:向量中各元素的絕對值之和(美稱『稀疏規則運算元』)

l2:向量中各元素的平方和後再對和開平方(有點像歐式距離)

嶺回歸可以簡單理解為 在最小二乘法的基礎上加了乙個正則化項(l2範數)作為懲罰項(權值衰減)

損失函式: rss+λ∑β^2 #rss是殘差平方和,λ是調整引數,

(λ∑β^2)這個懲罰項的加入使得 帶估計引數收縮到接近0(權值衰減)

這使得嶺回歸在處理 共線性、病態資料較多的資料集更有利,但是通常嶺回歸方程的r平方值會稍低於普通回歸分析,但回歸係數的顯著性往往明顯高於普通回歸。

2.lasso回歸:

lasso( the least absolute shrinkage and selection operator);

上文提到l2範數的加入使得嶺回歸能使帶估計引數收縮到接近0,而lasso能直接使帶估計引數收縮到0(即剔除部分資料集的變數)

損失函式:rss+λ∑|β| #rss是殘差平方和,λ是調整引數

由於lasso的損失函式的懲罰項是不可導的,所以它求損失函式最小的方法比較複雜(座標下降法)有興趣可看:

lasso一般用於資料維度太多太多時,可以用它剔除一部分影響因素的維度。

r中的glmnet包的可以實現嶺回歸 和 lasso

x = model.matrix(label~.,data)[,-1]#矩陣化

y = data$label

cv.out=cv.glmnet(x[train,],y[train],alpha=0)#交叉驗證得到最優lambda 值,帶入模型

plot(cv.out)

ridge.mod = glmnet(x[train,],y[train],alpha=0)

ridge.pred=predict(ridge.mod,s =cv.out$lambda.min,newx = x[test,])

mean((ridge.pred-y.test)^2)

lasso與嶺回歸 就只有 alpha=1 的差別

嶺回歸 lasso回歸

嶺回歸 ridge regression 和lasso least absolute shrinkage and selection operator 都是ols的改進,知乎上有關於三者異同的詳細討論 關於lasso 這裡記錄一下最近的學習心得。嶺回歸的含義 嶺回歸的權值計算公式中有單位方陣i,就像...

嶺回歸與lasso回歸

a.什麼是嶺回歸和lasso回歸?為什麼要用嶺回歸和lasso回歸?嶺回歸選參的一般原則是什麼。對ols進行範數1正則化叫lasso回歸。對ols進行範數2正則化叫嶺回歸。進行嶺回歸和lasso回歸的主要目的 1.解決病態矩陣的過擬合和欠擬合問題。2.消除多重共線性造成的行列式趨近於0,從而引起的大...

嶺回歸與lasso回歸

from sklearn.linear model import ridge,linearregression linearregression 是普通線性回歸 from pandas import dataframe from sklearn import datasets import nump...