Topic:
- LASSO 回歸 的 幾何意義
- LASSO 代碼
- LASSO 的 L1 正則項 與 嶺回歸 的 L2
一、LASSO回歸的幾何意義
與嶺回歸相似,LASSO 回歸優化的目标函數也等價于:
FLASSO=∥y−Xw∥22
F
L
A
S
S
O
=
‖
y
−
X
w
‖
2
2
s.t.∥w∥1⩽t(1)
(1)
s
.
t
.
‖
w
‖
1
⩽
t
其中,t
t
是 λλ 對于的一個常數,這裡通過限制 ∥w∥1
‖
w
‖
1
的大小來避免過拟合的發生。是以,假設我們有 2 個變量, 殘差平方和 (y1−wT1x)2+(y2−wT2x)2
(
y
1
−
w
1
T
x
)
2
+
(
y
2
−
w
2
T
x
)
2
當抛物面受到 ∥w1∥1+∥w2∥1≤t
‖
w
1
‖
1
+
‖
w
2
‖
1
≤
t
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SM1ATM1MjYjdTOxYTM1ITNzYzX5ITO1UTMxIzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
二、LASSO 代碼
LASSO 回歸通過添加正則項來改進普通的最小二乘法,這裡添加的是 L1
L
1
FLASSO=∥y−Xw∥22+λ∥w∥1(2)
(2)
F
L
A
S
S
O
=
‖
y
−
X
w
‖
2
2
+
λ
‖
w
‖
1
同樣通過
scikit-learn
提供的 LASSO 回歸方法
Lasso()
來進行資料拟合。
sklearn.linear_model.Lasso(alpha=1.0, fit_intercept=True, normalize=False, precompute=False,
copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection='cyclic')
-
: 正則化強度,預設為 1.0。alpha
-
: 預設為 True,計算截距項。fit_intercept
-
: 預設為 False,不針對資料進行标準化處理。normalize
-
: 是否使用預先計算的 Gram 矩陣來加速計算。precompute
-
: 預設為 True,即使用資料的副本進行操作,防止影響原資料。copy_X
-
: 最大疊代次數,預設為 1000。max_iter
-
: 資料解算精度。tol
-
: 重用先前調用的解決方案以适合初始化。warm_start
-
: 強制系數為正值。positive
-
: 随機數發生器。random_state
-
: 每次疊代都會更新一個随機系數。selection
"""使用 LASSO 回歸拟合并繪圖
"""
from sklearn.linear_model import Lasso
alphas = np.linspace(-2,2,10)
lasso_coefs = []
for a in alphas:
lasso = Lasso(alpha=a, fit_intercept=False)
lasso.fit(x, y)
lasso_coefs.append(lasso.coef_)
plt.plot(alphas, lasso_coefs) # 繪制不同 alpha 參數下的 w 拟合值
plt.scatter(np.linspace(0,0,10), parameters[0]) # 普通最小二乘法拟合的 w 值放入圖中
plt.xlabel('alpha')
plt.ylabel('w')
plt.title('Lasso Regression')