在嶺回歸那一篇說到特徵過多而樣本過少會出現過擬合的問題,嶺回歸的解決策略是加乙個懲罰函式,也就是正則化。
其實嶺回歸中的正則化只是l2正則化,如果換成是l1正則化,那麼代價函式就會變為
j (θ
0,θ1
,…,θ
n)=1
2m(∑
i=1m
(yi−
hθ(x
i))2
+λ∑i
=1m∣
θi∣)
j(\theta_0,\theta_1,…,\theta_n) = \frac(\sum_^+\lambda\sum_^m|\theta_i|)
j(θ0,
θ1,
…,θn
)=2
m1(
i=1∑
m(y
i−hθ
(xi
))2+
λi=1
∑m∣
θi∣
)這就是lasso的代價函式。
為什麼好端端的嶺回歸不用,要用這個lasso呢?
因為嶺回歸缺乏解釋力,最後就算把λ
\lambda
λ調的非常大,特徵引數也只是會趨向0,不會等於0。
明明是特徵過多導致的問題,最後你怎麼還能**這麼多特徵呢?
lasso就不一樣了,隨著λ
\lambda
λ的增大,會將乙個個特徵引數逐步變成0,這些引數對應的特徵就可以被認為是「多餘」的。
下面給出解釋
再來看一眼ridge回歸的代價函式
j (θ
0,θ1
,…,θ
n)=1
2m(∑
i=1m
(yi−
hθ(x
i))2
+λ∑i
=1mθ
i2)j(\theta_0,\theta_1,…,\theta_n) = \frac(\sum_^+\lambda\sum_^m\theta_i^2)
j(θ0,
θ1,
…,θn
)=2
m1(
i=1∑
m(y
i−hθ
(xi
))2+
λi=1
∑mθ
i2)
如果把λ
\lambda
λ看成是還未選定的引數,那麼我們就是求以下這個函式的極小值
j (θ
0,θ1
,…,θ
n,λ)
=12m
(∑i=
1m(y
i−hθ
(xi)
)2+λ
∑i=1
mθi2
)j(\theta_0,\theta_1,…,\theta_n,\lambda) = \frac(\sum_^+\lambda\sum_^m\theta_i^2)
j(θ0,
θ1,
…,θn
,λ)
=2m1
(i=
1∑m
(yi−
hθ(
xi))
2+λi
=1∑m
θi2
)如果你學過高等數學下冊的話,就很容易想到拉格朗日乘數法,也就是說,求上面這個函式的極小值和求以下這個函式的條件極值是一樣的
j (θ
0,θ1
,…,θ
n)=1
2m∑i
=1m(
yi−h
θ(xi
))2j(\theta_0,\theta_1,…,\theta_n) = \frac\sum_^
j(θ0,
θ1,
…,θn
)=2
m1i
=1∑m
(yi
−hθ
(xi)
)2條件是為:∑i=
1mθi
2≤t\sum_^m\theta_i^2\leq t
∑i=1m
θi2
≤t同理,lasso和ridge一樣,只不過條件為:∑i=
1m∣θ
i∣≤t
\sum_^m|\theta_i|\leq t
∑i=1m
∣θi
∣≤t
以二元為例,我們看一下這張圖
左邊是lasso,右邊是ridge。
殘差平方和要取到最小,並且在條件的限制下(圖中藍色區域),那麼最小值一定發生在相切處。
ridge的條件是乙個圓,剛好相切在β
1\beta_1
β1或β
2\beta_2
β2取0時的概率很小,但lasso是凸出來的角,就很容易在凸角處相切。就更容易使β
1\beta_1
β1或β
2\beta_2
β2取到0。
因為是帶絕對值的,所以有些地方是不可導的,那就不能用梯度下降或正規方程來解特徵引數,我也還沒搞明白到底是怎麼求θ
\theta
θ的,以後搞明白了再補一篇吧。
# encoding:utf-8
import numpy as np
from sklearn import linear_model
# 讀取資料
data = np.genfromtxt(
'../data/longley.csv'
,delimiter=
',')
x_data = data[1:
,2:]
y_data = data[1:
,1]# 建立模型
model = linear_model.lassocv(
)model.fit(x_data,y_data)
# 列印lasso係數
print
("lasso係數為 :"
.format
(model.alpha_)
)print
("真實值為:"
)print
(y_data)
print
("lasso**值為:"
lasso回歸 LASSO回歸求解
很感謝網上的優質部落格,正是因為有了這些知識的分享,才讓學習的成本越來越低。我們假定有 lasso回歸訓練出來的係數是稀疏的,可用於做特徵篩選。但是怎麼訓練呢,因為絕對值函式在 處是不可導的,所以直接採用梯度下降法是行不通的,需要利用別的演算法。梯度是乙個函式增長最快的方向,但是當函式在某點不可導時...
嶺回歸 lasso回歸
嶺回歸 ridge regression 和lasso least absolute shrinkage and selection operator 都是ols的改進,知乎上有關於三者異同的詳細討論 關於lasso 這裡記錄一下最近的學習心得。嶺回歸的含義 嶺回歸的權值計算公式中有單位方陣i,就像...
Lasso回歸實驗
資料集我們使用的是 sklearn包中自帶的波士頓房價資料集。乙個簡單的 lasso 回歸實驗還是那六個步驟 載入資料集 拆分資料集 建立模型 在訓練集學習得到模型 模型 模型評測 關於訓練集和測試集的劃分我們使用的是留出法。至於引數設定,我們設定隨機種子為10,學習率為0.1,迭代次數為10000...