机器学习——岭回归

1、岭回归与线性回归的区别

岭回归(Ridge Regression)和线性回归(Linear Regression)都是用于回归分析的统计方法,但它们在处理方式和应用场景上有一些关键的区别:
a)基本概念
·线性回归:目标是找到一个线性函数,使得预测值与实际值之间的均方误差(MSE)最小。没有对系数的约束。
·岭回归:在最小化均方误差的同时,添加一个正则化项(L2范数),以防止过拟合。该正则化项是系数的平方和乘以一个正则化参数。
b)公式
·线性回归 : m i n w ∣ ∣ X w − y ∣ ∣ 2 min_w||Xw-y||^2 minw∣∣Xwy2
·岭回归 : m i n w ∣ ∣ X w − y ∣ ∣ 2 + λ ∣ ∣ w ∣ ∣ 2 min_w||Xw-y||^2 +λ||w||² minw∣∣Xwy2+λ∣∣w2
∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣表示 w w w的二范数,其中,𝜆是正则化参数,用于控制正则化项的权重。
c)正则化
·线性回归:没有正则化,对特征系数没有约束。
·岭回归:通过添加正则化项,迫使特征系数较小,从而减少模型复杂度,防止过拟合。
d)模型复杂度
·线性回归:当特征数量多或者特征之间高度相关时,模型可能会变得非常复杂,容易过拟合。
·岭回归:通过正则化,模型会更简洁,能够有效应对多重共线性问题,提高模型的泛化能力。
e)应用场景
·线性回归:适用于特征数量相对较少且没有多重共线性的问题。
·岭回归:适用于高维数据集和特征之间有相关性的情况,能够更好地处理共线性问题。

2、岭回归的API

在sklearn中,提供了Ridge方法,其各个参数如下:
alpha:正则化强度参数。默认为1.0。正则化参数越大,正则化强度越高,使得模型系数趋于零。需要调节该参数以找到最优值。
fit_intercept:是否计算截距。默认为True。如果数据已经中心化(例如,每个特征的均值为零),可以设置为False。
normalize:如果为True,在进行回归之前会先对数据进行归一化。默认为False。注意:在较新的版本中不推荐使用该参数,建议在数据预处理中进行归一化。
solver:用来计算岭回归的算法。可以是’auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’之一。默认是’auto’,会根据数据自动选择合适的算法。
max_iter:求解器收敛的最大迭代次数。默认是None,不限次数。对于sag和saga求解器,该参数是有用的。
tol:求解器的精度。默认是0.001。
random_state:用于随机数生成的种子。默认是None。

3、岭回归预测波士顿房价(数据集点我

import pandas as pd
data = pd.read_csv('housing.csv',sep=',')
# 数据集的切分
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(data[['RM','LSTAT','PTRATIO']],data.MEDV,train_size=0.8)
# 数据归一化
from sklearn.preprocessing import StandardScaler
transfer = StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)
# 使用岭回归进行预测
from sklearn.metrics import mean_squared_error,r2_score
from sklearn.linear_model import Ridge
estimator = Ridge(fit_intercept=True,max_iter=1000)
estimator.fit(x_train, y_train)
y_predict2 = estimator.predict(x_test)
print(f"r方系数为{r2_score(y_predict2,y_test)}")
print(f"方差为:{mean_squared_error(y_predict2,y_test)}")
print(f'优化后的权重参数为:{estimator.coef_},偏置为:{estimator.intercept_}')

在这里插入图片描述

相关推荐

  1. 零基础机器学习(6)之回归与套索回归(正则化)

    2024-07-10 14:48:06       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 14:48:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 14:48:06       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 14:48:06       58 阅读
  4. Python语言-面向对象

    2024-07-10 14:48:06       69 阅读

热门阅读

  1. 【无标题】

    2024-07-10 14:48:06       18 阅读
  2. Redis教程(二十三):Redis的底层数据结构

    2024-07-10 14:48:06       23 阅读
  3. 博客网站目录网址导航自适应主题php源码

    2024-07-10 14:48:06       21 阅读
  4. 这道笔试题,给了我一点小小的c语言震撼

    2024-07-10 14:48:06       18 阅读
  5. python压缩PDF方案(Ghostscript+pdfc)

    2024-07-10 14:48:06       21 阅读
  6. 掌握Perl命令行:深入解析命令行参数的艺术

    2024-07-10 14:48:06       29 阅读