深度学习基础-多元线性回归

目录

前言

一、多元线性回归原理

1.目标

2.重点:

二、使用步骤

1.导入所需的库:

2.定义数据集 x 和 y:

3.设置学习率 lr 和迭代次数 epoches:

4.初始化权重 w:

5.计算预测值 ya:

6.计算损失函数 loss:

7.初始化权重列表 w_list 和损失列表 loss_list:

8.开始迭代训练:

9.计算梯度 w_gra:

10.更新权重 w:

11.计算新的损失值 loss:

12.检查损失是否增加:

13.存储新的权重和损失值:

14.打印迭代信息:

15.打印最终的权重 w:

16.计算并打印预测值 ya:

17.绘制散点图:

18.绘制预测值 ya 和真实值 y 的折线图:

三、运行结果

总结


前言

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习-多元线性回归的基础内容。


一、多元线性回归原理

1.目标:

多元线性回归模型的一般形式是:

[ Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_nX_n ]

其中

  • (Y) 是目标变量。
  • (X_1, X_2, ..., X_n) 是特征变量。
  • (\beta_0)是截距项。
  • (\beta_1, \beta_2, ..., \beta_n) 是每个特征的系数。

目标是:让\sum_{i=1}^{m} (ya_{i}-y_{i}) 尽可能的小

为了找到最佳的系数 (\beta_0, \beta_1, ..., \beta_n),我们通常使用最小二乘法。最小二乘法的目标是最小化误差的平方和,即最小化以下损失函数:
[ J(\beta_0, \beta_1, ..., \beta_n) = \sum_{i=1}^{m} (Y_i - (\beta_0 + \beta_1X_{i1} + \beta_2X_{i2} + ... + \beta_nX_{in}))^2 ]

为了找到损失函数的最小值,我们对每个系数分别求偏导数,并将它们设为零。这样我们可以得到以下方程组:
[ \frac{\partial J}{\partial \beta_0} = -2\sum_{i=1}^{m} (Y_i - \beta_0 - \beta_1X_{i1} - ... - \beta_nX_{in}) = 0 ]
[ \frac{\partial J}{\partial \beta_1} = -2\sum_{i=1}^{m} (Y_i - \beta_0 - \beta_1X_{i1} - ... - \beta_nX_{in})X_{i1} = 0 ]
[ \frac{\partial J}{\partial \beta_n} = -2\sum_{i=1}^{m} (Y_i - \beta_0 - \beta_1X_{i1} - ... - \beta_nX_{in})X_{in} = 0 ]

2.重点:

!!!

损失函数用于衡量预测值和真实值之间的差异。数学表达式如下:

[ \text{loss} = \frac{1}{2} \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 ]

其中:

  • ( m ) 是样本数量。
  • ( y_i ) 是第 ( i ) 个样本的真实值。
  • ( \hat{y}_i ) 是第 ( i ) 个样本的预测值。

在代码中,( y_i )对应于 y 数组,而 ( \hat{y}_i )对应于通过当前权重 w 预测得到的值 ya。因此,损失函数可以重写为:

[ \text{loss} = \frac{1}{2} \sum_{i=1}^{m} (y_i - (w_0 + w_1x_{i1} + w_2x_{i2} + ... + w_nx_{in}))^2 ]

其中:

  • (w_0) 是截距项。
  • ( w_1, w_2, ..., w_n) 是每个特征的系数。
  • (x_{i1}, x_{i2}, ..., x_{in}) 是第 ( i ) 个样本的特征值。

这个损失函数通过最小化预测值和真实值之间的差的平方和,来优化模型的权重参数。

此时,我们得到确定我们的损失函数,之所以在前面加上一个\frac{1}{2}是为了方便求导的时候能够消去。

二、使用步骤

1.导入所需的库:

import numpy as np
import matplotlib.pyplot as plt
  • numpy 是用于科学计算的库。
  • matplotlib.pyplot 是用于绘图的库。

2.定义数据集 x 和 y

x = np.array([[0.180, 0.001*1], [0.100, 0.001*2], ...])
y = np.array([[0.180+0.001*1, 0.100+0.001*2, ...]])
  • x 是一个二维数组,包含11个样本,每个样本有两个特征。
  • y 是一个二维数组,包含11个样本,每个样本有一个目标值。

3.设置学习率 lr 和迭代次数 epoches

lr = 0.0002
epoches = 100000
  • lr 是学习率,用于控制权重更新的步长。
  • epoches 是迭代次数,表示模型训练的总轮数。

4.初始化权重 w

w = np.array([[0.5214, 0.5215]])
  • w 是权重向量,用于线性模型的参数。

5.计算预测值 ya

ya = np.matmul(w, x.T)
  • ya 是通过当前权重 w 对特征 x 进行线性变换后的预测值。

6.计算损失函数 loss

loss = 1/2.0 * np.sum((np.matmul(w, x.T) - y)**2)
  • loss 是损失函数值,用于衡量预测值和真实值之间的差异。

7.初始化权重列表 w_list 和损失列表 loss_list

w_list = []
loss_list = []
loss_list.append(loss)
  • w_list 用于存储每次迭代后的权重。
  • loss_list 用于存储每次迭代后的损失值。

8.开始迭代训练:

for i in range(epoches):
    ...
  • 循环进行多次迭代,每次迭代都会更新权重 w

9.计算梯度 w_gra

w_gra = np.mean(np.matmul((ya - y), x))
  • w_gra 是梯度,表示损失函数关于权重的导数。

10.更新权重 w

w = w - lr * w_gra
  • 根据梯度下降算法更新权重 w

11.计算新的损失值 loss

loss = 1/2.0 * np.sum((np.matmul(w, x.T) - y)**2)
  • 计算更新权重后的预测值,并计算新的损失值。

12.检查损失是否增加:

if (loss > loss_list[-1]):
    break
  • 如果损失值没有减小,则停止训练。

13.存储新的权重和损失值:

w_list.append(w)
loss_list.append(loss)
  • 将新的权重和损失值添加到列表中。

14.打印迭代信息:

print(f"迭代第{i}次,梯度为:{w_gra:10f},权重为:{w},损失为{loss:10f}")
  • 打印每次迭代的梯度、权重和损失值。

15.打印最终的权重 w

print(w)
  • 打印训练完成后的权重。

16.计算并打印预测值 ya

ya = np.matmul(w, x.T)
print("输出预测值", ya)
  • 打印最终的预测值。

17.绘制散点图:

x_coords = x[:, 0]
plt.scatter(x_coords, y)
plt.title('Scatter Plot of x vs y')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
  • 使用 matplotlib 绘制 x 和 y 的散点图。

18.绘制预测值 ya 和真实值 y 的折线图:

x = ya.flatten()
y = y.flatten()
plt.plot(x, y)
plt.title('Scatter Plot of ya vs y')
plt.xlabel('ya')
plt.ylabel('y')
plt.show()
  • 绘制 ya 和 y 的折线图,用于比较预测值和真实值。

三、运行结果


总结

多元线性回归是机器学习中用于预测连续型因变量的一种统计方法。它通过分析多个自变量(特征)与因变量(目标)之间的关系,构建一个线性模型来进行预测。

这个模型假设因变量与自变量之间存在线性关系,即因变量可以表示为自变量的线性组合加上一个误差项。 在多元线性回归中,我们通常寻找一组参数(系数),使得模型预测值与实际观测值之间的差异(即误差)的平方和最小。这通过梯度下降法来实现,它提供了一种计算这些参数的方法,使得预测值尽可能接近真实值。

为了求解模型参数,可以使用正规方程,它提供了一种直接计算系数矩阵的方法。在实际应用中,多元线性回归模型需要满足一些基本假设,如线性关系、误差项的独立性、同方差性和正态分布等。 多元线性回归在金融、经济学、工程学等领域有广泛的应用,它可以帮助研究人员和决策者理解不同变量之间的关系,并预测未来的趋势。然而,模型的准确性受到数据质量和模型假设合理性的影响,因此在应用多元线性回归时,需要对数据进行适当的处理和验证。

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想敲代码的小趴菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值