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...