- Scikit-learn 教程
- Scikit-learn - 首页
- Scikit-learn - 简介
- Scikit-learn - 建模过程
- Scikit-learn - 数据表示
- Scikit-learn - 估计器 API
- Scikit-learn - 约定
- Scikit-learn - 线性建模
- Scikit-learn - 扩展线性建模
- 随机梯度下降
- Scikit-learn - 支持向量机
- Scikit-learn - 异常检测
- Scikit-learn - K 近邻
- Scikit-learn - KNN 学习
- 朴素贝叶斯分类
- Scikit-learn - 决策树
- 随机决策树
- Scikit-learn - 集成方法
- Scikit-learn - 聚类方法
- 聚类性能评估
- 使用 PCA 进行降维
- Scikit-learn 有用资源
- Scikit-learn - 快速指南
- Scikit-learn - 有用资源
- Scikit-learn - 讨论
Scikit-learn - 岭回归
岭回归或 Tikhonov 正则化是一种执行 L2 正则化的正则化技术。它通过添加等效于系数大小平方的惩罚项(收缩量)来修改损失函数。
$$\displaystyle\sum\limits_{j=1}^m\left(Y_{i}-W_{0}-\displaystyle\sum\limits_{i=1}^nW_{i}X_{ji} \right)^{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 模块使用的参数:
序号 | 参数及描述 |
---|---|
1 |
alpha − {float, array-like}, shape(n_targets) Alpha 是一个调整参数,决定我们希望对模型进行多少惩罚。 |
2 |
fit_intercept − 布尔值 此参数指定是否应将常数(偏差或截距)添加到决策函数中。如果设置为 False,则计算中不会使用截距。 |
3 |
tol − float,可选,默认为 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 模块使用的属性:
序号 | 属性及描述 |
---|---|
1 |
coef_ − array,shape(n_features,) 或 (n_target, n_features) 此属性提供权重向量。 |
2 |
Intercept_ − float | array,shape = (n_targets) 它表示决策函数中的独立项。 |
3 |
n_iter_ − array 或 None,shape (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