实战:用线性函数、梯度下降解决线性回归问题

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 实战:用线性函数、梯度下降解决线性回归问题

线性回归是机器学习中最简单的模型之一,在许多应用中都有广泛的应用。本篇文章将介绍如何用线性函数、梯度下降来解决线性回归问题。

线性回归

线性回归是一种用来预测连续输出变量(也叫做响应变量)与一个或多个自变量(也叫做解释变量)之间关系的模型。它的基本形式是:

y=β0+β1x1+β2x2++βnxn+ϵ

其中,y是目标变量,xi是自变量,βi 是每个自变量对应的权重,ϵ 是随机误差。该方程表明,目标变量y 与自变量 xi 的关系是线性的。

线性回归的目标是找到一组权重 βi,使得通过βi 和自变量xi 求得的y 值与实际目标变量y 值的差别最小。这个差别通常使用平方误差(Mean Squared Error,MSE)来表示:

MSE=n1i=1n(yiyi^)2

其中n 是训练数据的数量,yi 是目标变量的真实值,yi^ 是通过自变量和权重求得的预测值。

线性函数

为了使用线性函数来估计权重 βi,我们首先需要定义一个线性函数,它的形式是:

y^=f(x;w)=w0+w1x1+w2x2++wpxp

其中,wi 是权重向量,xi 是输入向量。我们还可以将输入向量 x i x_ixi 表示为 [1,x1,x2,,xp],这样就可以用一个向量 w 来表示所有的权重。这个线性函数也可以写成矩阵乘法的形式:y^=Xw

其中,X 是输入矩阵,它的每一行表示一个样本,每一列表示一个特征(也就是输入向量中的 xi)。权重向量w 是一个列向量,它的长度等于输入向量的长度加一(因为我们增加了一个截距项w0)。

我们可以使用线性函数来估计训练数据中的目标变量y 的值,也就是将输入向量xi 代入线性函数中得到yi^。然后,我们可以使用 MSE 函数来计算估计值 yi^ 和真实值 yi 之间的平方误差,如下所示:

MSE=n1i=1n(yiyi^)2

我们的目标是使 MSE 最小化。我们可以通过最小化MSE 来找到最优的权重向量w,使得基于该向量的线性函数可以最好地拟合数据。

梯度下降

现在我们已经定义了线性函数和目标函数,我们需要找到一种方法来最小化目标函数。一种常用的方法是使用梯度下降。

梯度下降是一种数值优化算法,用于寻找一个函数的最小值。梯度下降的基本思想是,沿着函数的梯度(也称导数)的反方向进行移动,直到达到函数的最小值。梯度下降的算法包括以下几个步骤:

  1. 随机初始化权重向量w 的值。
  2. 计算目标函数MSE 的梯度。
  3. 更新权重向量w 的值。
  4. 重复步骤 2-3,直到达到收敛条件。

在第 2 步中,我们需要计算目标函数MSE 对权重向量w 的梯度。梯度是一组偏导数,它表示函数在每个方向上的变化率。对于目标函数MSE,其对权重向量w 的梯度为:wMSE=n2XT(Xwy)

其中,w 表示对 w 向量取偏导数。这个式子可以用来计算梯度向量,它包含了每个权重向量wMSE 的影响程度。因此,我们可以使用梯度向量来更新权重向量,使得权重向量向最小化MSE 的方向移动。更新权重向量的公式如下所示:w=wαwMSE

其中,α 是学习率,它是用来控制每次迭代中的权重调整量大小的参数。我们可以根据经验来设定学习率,通常取值范围在 0.01 到 0.0001 之间。

实现代码

下面是一个 Python 实现的线性回归模型,使用了梯度下降法来最小化目标函数。该模型包括以下几个部分:

  • 计算 MSE 函数和梯度向量。
  • 实现梯度下降算法,并在每次迭代中更新权重向量。
  • 计算训练数据和测试数据的 MSE。
  • 绘制训练数据和测试数据的预测结果。


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
7月前
|
机器学习/深度学习 算法 数据挖掘
【MATLAB】数据拟合第10期-二阶多项式的局部加权回归拟合算法
【MATLAB】数据拟合第10期-二阶多项式的局部加权回归拟合算法
192 0
|
2月前
|
机器学习/深度学习 Python
深度学习笔记(六):如何运用梯度下降法来解决线性回归问题
这篇文章介绍了如何使用梯度下降法解决线性回归问题,包括梯度下降法的原理、线性回归的基本概念和具体的Python代码实现。
118 0
|
7月前
|
数据可视化
R语言lasso惩罚稀疏加法(相加)模型SPAM拟合非线性数据和可视化
R语言lasso惩罚稀疏加法(相加)模型SPAM拟合非线性数据和可视化
|
7月前
|
算法 vr&ar Python
【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例
【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例
|
7月前
|
算法
MATLAB最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
MATLAB最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
|
7月前
|
数据可视化
R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
|
7月前
|
人工智能
R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
|
7月前
|
算法 vr&ar Python
R语言用极大似然和梯度下降算法估计GARCH(p)过程
R语言用极大似然和梯度下降算法估计GARCH(p)过程
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
基于PyTorch实战权重衰减——L2范数正则化方法(附代码)
基于PyTorch实战权重衰减——L2范数正则化方法(附代码)
449 0
|
机器学习/深度学习 人工智能 数据可视化
F(x)构建方程 ,梯度下降求偏导,损失函数确定偏导调整,激活函数处理非线性问题
F(x)构建方程 ,梯度下降求偏导,损失函数确定偏导调整,激活函数处理非线性问题
154 0
F(x)构建方程 ,梯度下降求偏导,损失函数确定偏导调整,激活函数处理非线性问题
下一篇
DataWorks