神经网络与PyTorch:线性回归

线性回归

1 一元线性回归

线性回归具有如下性质

y = x[0]w[0]+x[1]w[1]+…+x[m-1]w[m-1]+w[m]

其中w[0],w[1]…w[m-1],w[m]是m+1个权重值

线性回归是假设自变量和因变量之间的关系有这样子的形式,再利用数据确定出这m+1个权重值,最终找到自变量和因变量之间的关系。

1.1 最小二乘法

最小二乘法(Linear Least Squares, LLS) 是一种最基本的线性回归方法。在最小二乘回归中,有n条数据,每条数据有m个自变量数值x[i,0],x[i,1],…x[i,m-1]和一个因变量数值y[i],0<=i<n,一般情况下n>>m,即数据的条目远大于自变量的个数,因变量的个数等于数据的条目。在机器学习领域,数据条目中的自变量的数值又称为 “特征”(feature)因变量的数值成为标签(label)。用张量记号,可以把所有的数据条目的特征和标签分别记为一个张量。

在这里插入图片描述

​ 如果特征和标签之间完全由W指定的线性关系精确确定,则有y[i,:] = X[i,:]·W。若以上等式对所有条目都成立,则有Y = X·W

。线性回归,就是试图找到权重值W,使得Y和X·W尽可能接近

​ 最小二乘法用均方误差(Mean Squared Error,MSE),表示Y和XW的接近程度,均方差的表达式为:
在这里插入图片描述

​ PyTorch中的函数torch.lstsq() 实现了最小二乘法。这个函数有两个参数,分别对应了MSE里的张量Y和X。这个函数有两个返回值,前一个返回值包括了所有的权重值,后一个返回值是QR分解的结果。当X的大小为 (n,m+1) ,Y的大小为 (n,),这个返回值是一个大小为 (n,1) 的张量(这是个 二维张量)。取这个张量的 前m+1 个元素,可以得到大小为 (m+1,) 的张量w。(这个张量的其他元素是表示残差的量,平方和就是MSE的值)

demo

import torch
x = torch.tensor([[1., 1., 1.], [2., 3., 1., ], [
                 3., 5., 1., ], [4., 2., 1.], [5., 4., 1.]])
y = torch.tensor([-10., 12., 14., 16., 18., ])
wr, _ = torch.lstsq(y, x)
w = wr[:3]
print(w)

1.2 正规方程法

正规方程(normal equation) 法是最常见的求解最小二乘法的方法。推导过程略。

​ 正规方程表达式:
在这里插入图片描述

​ 方程的解:
在这里插入图片描述

2 多元线性回归

​ 多元线性回归试图讨论自变量与多个因变量之间的关系。我们可以逐一考虑自变量和每一个因变量之间的关系,建立多个线性回归问题来求解。但是我们也可以将多个线性回归问题合并成一个问题来一次求解

​ 设自变量有m 个(不包括常数1),因变量有c个,则特征张量 X的大小为 (n,m+1),标签张量Y的大小为 (n,c),这时候的权重张量的大小为(n,c),用torch.lstsq()求解同一元线性回归。

demo

import torch

x = torch.tensor([[1, 1, 1], [2, 3, 1], [3, 5, 1], [
                 4, 2, 1], [5, 4, 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch是一个流行的深度学习框架,它提供了丰富的工具和函数,用于构建和训练神经网络模型。多维线性回归是一种用于预测多个特征之间线性关系的统计分析方法。 在PyTorch中实现多维线性回归需要几个关键步骤。首先,我们需要准备数据集,包括输入特征和对应的标签。然后,我们需要定义一个模型类,其中包含输入特征的维度和输出标签的维度。接下来,我们需要定义损失函数,常用的是均方差损失函数(Mean Squared Loss)。最后,我们需要选择一个优化器来更新模型的参数。 在实现中,我们可以使用PyTorch提供的torch.nn模块来定义模型类和损失函数。我们可以继承nn.Module类,并在构造函数中定义模型的结构,然后在前向传播函数中定义计算过程。对于线性回归模型,前向传播函数只需要将输入特征与模型的权重矩阵相乘,并加上偏置项即可得到预测值。然后,我们可以使用定义好的损失函数计算预测值与真实标签之间的误差,并调用反向传播函数自动计算梯度。 我们还需要选择适当的优化器来更新模型的参数。PyTorch提供了各种优化器,如SGD、Adam等。我们可以根据需求选择合适的优化器,并在训练过程中使用优化器的step函数来更新模型的参数。 在训练过程中,我们可以将数据集分为训练集和测试集,使用训练集数据来训练模型,并使用测试集数据来评估模型的性能。我们可以通过迭代训练模型,反复计算损失并更新模型参数,直到达到预定的停止条件。 总之,PyTorch提供了一个灵活而强大的框架,使得多维线性回归等机器学习任务的实现变得简单和高效。通过合理使用PyTorch的工具和函数,我们可以轻松构建和训练多维线性回归模型,并应用于各种实际应用中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值