Scikit Learn - LASSO

LASSO(最小绝对值收缩和选择算子)

LASSO 是一种执行 L1 正则化的正则化技术。它通过添加惩罚项(收缩量)来修改损失函数,该惩罚项等于系数绝对值的总和。

$$\displaystyle\sum\limits_{j=1}^m\left(Y_{i}-W_{0}-\displaystyle\sum\limits_{i=1}^nW_{i}X_{ji} ight)^{2}+\alpha\displaystyle\sum\limits_{i=1}^n| W_i|=loss_{-}function+\alpha\displaystyle\sum\limits_{i=1}^n|W_i|$$

sklearn.linear_model. Lasso 是一个线性模型,添加了正则化项,用于估计稀疏系数。

参数

下表列出了 Lasso 模块 − 使用的参数。

Sr.No 参数及说明
1

alpha −浮点型,可选,默认值 = 1.0

Alpha 是与 L1 项相乘的常数,它是一个调整参数,决定了我们要对模型施加多少惩罚。默认值为 1.0。

2

fit_intercept − 布尔值,可选。默认值 = True

此参数指定应将一个常数(偏差或截距)添加到决策函数中。如果设置为 false,则计算中将不使用截距。

3

tol − 浮点型,可选

此参数表示优化的容差。将比较tol值和更新值,如果发现更新值小于tol,则优化将检查对偶间隙是否达到最优,并持续进行,直到其小于tol。

4

normalize − 布尔值,可选,默认值 = False

如果此参数设置为 True,则回归量 X 将在回归之前进行归一化。归一化过程将通过减去均值再除以 L2 范数来完成。如果 fit_intercept = False,此参数将被忽略。

5

copy_X − 布尔值,可选,默认值 = True

默认情况下,该参数为 True,表示将复制 X。但如果设置为 false,则 X 可能会被覆盖。

6

max_iter − int,可选

顾名思义,它表示共轭梯度求解器的最大迭代次数。

7

precompute − True|False|array-like,默认值=False

通过此参数,我们可以决定是否使用预先计算的Gram矩阵来加快计算速度。

8

warm_start − bool,可选,默认值 = false

将此参数设置为True,我们可以重用上一次调用fit的解作为初始化。如果我们选择默认值,即 false,它将清除先前的解决方案。

9

random_state − int,RandomState 实例或 None,可选,默认值 = none

此参数表示生成的伪随机数的种子,用于对数据进行混洗。以下是选项 −

  • int − 在这种情况下,random_state 是随机数生成器使用的种子。

  • RandomState 实例 − 在这种情况下,random_state 是随机数生成器。

  • None −在本例中,随机数生成器是 np.random 使用的 RandonState 实例。

10

selection − str, default='cyclic'

  • Cyclic − 默认值为 cyclic,这意味着特征将默认按顺序循环。

  • Random − 如果我们将选择设置为随机,则每次迭代都会更新随机系数。

属性

下表包含 Lasso 模块 − 使用的属性。

Sr.No 属性和说明
1

coef_ − 数组,shape(n_features,) 或 (n_target, n_features)

此属性提供权重向量。

2

Intercept_ − 浮点型 |数组,形状 = (n_targets)

它表示决策函数中的独立项。

3

n_iter_ −整数或类似数组,形状为 (n_targets)

它给出了坐标下降求解器为达到指定容差而运行的迭代次数。

实现示例

以下 Python 脚本使用 Lasso 模型,该模型进一步使用坐标下降作为拟合系数 − 的算法。

from sklearn import linear_model
Lreg = linear_model.Lasso(alpha = 0.5)
Lreg.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])

输出

Lasso(alpha = 0.5, copy_X = True, fit_intercept = True, max_iter = 1000,
   normalize = False, positive = False, precompute = False, random_state = None,
   selection = 'cyclic', tol = 0.0001, warm_start = False)

示例

现在,一旦拟合完成,模型可以预测新的值,如下所示:−

Lreg.predict([[0,1]])

输出

array([0.75])

示例

对于上述示例,我们可以借助以下 Python 脚本获取权重向量:−

Lreg.coef_

输出

array([0.25, 0. ])

示例

类似地,我们可以使用以下 Python 脚本的帮助 −

Lreg.intercept_

输出

0.75

示例

我们可以借助以下 Python 脚本 − 获得达到指定容差所需的总迭代次数

Lreg.n_iter_

输出

2

我们可以更改参数值以获得模型所需的输出。