天天看点

【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 的 正则项 与 岭回归 的 有什么不同?

继续阅读