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'}' 此参数表示在计算例程中使用哪个求解器。以下是此参数下选项的属性
|
| 8 |
random_state − int,RandomState 实例或 None,可选,默认值 = none 此参数表示生成的伪随机数的种子,用于对数据进行混洗。以下是选项 −
|
属性
下表包含 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

