天天看點

【MachineLearning】之 LASSO 回歸

Topic:
  1. LASSO 回歸 的 幾何意義
  2. LASSO 代碼
  3. 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

【MachineLearning】之 LASSO 回歸

二、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')      
  • ​alpha​

    ​: 正則化強度,預設為 1.0。
  • ​fit_intercept​

    ​: 預設為 True,計算截距項。
  • ​normalize​

    ​: 預設為 False,不針對資料進行标準化處理。
  • ​precompute​

    ​: 是否使用預先計算的 Gram 矩陣來加速計算。
  • ​copy_X​

    ​: 預設為 True,即使用資料的副本進行操作,防止影響原資料。
  • ​max_iter​

    ​: 最大疊代次數,預設為 1000。
  • ​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')      
【MachineLearning】之 LASSO 回歸

三、LASSO 的 正則項 與 嶺回歸 的 有什麼不同?

繼續閱讀