Scikit Learn - 岭回归

岭回归或 Tikhonov 正则化是一种执行 L2 正则化的正则化技术。它通过添加相当于系数幅值平方的惩罚项(收缩量)来修改损失函数。

$$\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}^nW_i^2=loss_{-}function+\alpha\displaystyle\sum\limits_{i=1}^nW_i^2$$
  • sklearn.linear_model.Ridge 模块用于求解回归模型,其中损失函数为线性最小二乘函数,正则化为 L2。

参数

下表列出了所使用的参数Ridge 模块 −

Sr.No 参数及说明
1

alpha − {float, array-like}, shape(n_targets)

Alpha 是调整参数,它决定了我们要对模型施加多少惩罚。

2

fit_intercept − 布尔值

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

3

tol − 浮点型,可选,默认值 = 1e-4

它表示解的精度。

4

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

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

5

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

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

6

max_iter − int,可选

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

7

solver − str, {'auto', 'svd', 'cholesky', 'lsqr', 'sparse_cg', 'sag', 'saga'}'

此参数表示在计算例程中使用哪个求解器。以下是此参数下选项的属性

  • auto − 它允许根据数据类型自动选择求解器。

  • svd −为了计算岭系数,此参数使用 X 的奇异值分解。

  • cholesky − 此参数使用标准 scipy.linalg.solve() 函数来获取闭式解。

  • lsqr − 它是最快的,并使用专用的正则化最小二乘程序 scipy.sparse.linalg.lsqr。

  • sag − 它使用迭代过程和随机平均梯度下降。

  • saga −它还使用了迭代过程和改进的随机平均梯度下降法。

8

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

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

  • int − 在本例中,random_state 是随机数生成器使用的种子。

  • RandomState 实例 −在本例中,random_state 是随机数生成器。

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

属性

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

Sr.No 属性和说明
1

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

此属性提供权重向量。

2

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

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

3

n_iter_ − 数组或 None,形状 = (n_targets)

仅适用于"sag"和"lsqr"求解器,返回每个目标的实际迭代次数。

实现示例

以下 Python 脚本提供了一个实现岭回归的简单示例。我们使用 15 个样本和 10 个特征。在我们的例子中,alpha 值为 0.5。有两种方法,即fit()和score(),分别用于拟合该模型和计算分数。

from sklearn.linear_model import Ridge
import numpy as np
n_samples, n_features = 15, 10
rng = np.random.RandomState(0)
y = rng.randn(n_samples)
X = rng.randn(n_samples, n_features)
rdg = Ridge(alpha = 0.5)
rdg.fit(X, y)
rdg.score(X,y)

输出

0.76294987

输出显示,上述岭回归模型的得分约为 76%。为了提高准确率,我们可以增加样本和特征的数量。

示例

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

rdg.coef_

输出

array([ 0.32720254, -0.34503436, -0.2913278 , 0.2693125 , -0.22832508,
-0.8635094 , -0.17079403, -0.36288055, -0.17241081, -0.43136046])

示例

类似地,我们可以借助以下 Python 脚本获取截距的值 −

rdg.intercept_

输出

0.527486