问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/shiguang521314/article/details/136788842

多元线性回归是机器学习中一种重要的预测模型,广泛应用于金融、经济、工程等领域。它通过分析多个自变量与因变量之间的线性关系,帮助研究人员和决策者理解变量间的关联并进行预测。本文将从原理到实践,详细介绍多元线性回归的基础知识和实现步骤。

前言

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

一、多元线性回归原理

1.目标:

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

  • (Y) 是目标变量。
  • (X_1, X_2, ..., X_n) 是特征变量。
  • 是截距项。
  • 是每个特征的系数。
    **目标是:让
    尽可能的小**
    为了找到最佳的系数
    ,我们通常使用最小二乘法。最小二乘法的目标是最小化误差的平方和,即最小化以下损失函数:
    为了找到损失函数的最小值,我们对每个系数分别求偏导数,并将它们设为零。这样我们可以得到以下方程组:

2.重点:

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

  • ( m ) 是样本数量。
  • (
    ) 是第 ( i ) 个样本的真实值。
  • (
    ) 是第 ( i ) 个样本的预测值。
    在代码中,
    对应于
    y
    数组,而
    对应于通过当前权重
    w
    预测得到的值
    ya
    。因此,损失函数可以重写为:
    其中:
  • (
    ) 是截距项。
  • (
    ) 是每个特征的系数。
  • (
    ) 是第 ( i ) 个样本的特征值。
    这个损失函数通过最小化预测值和真实值之间的差的平方和,来优化模型的权重参数。
    此时,我们得到确定我们的损失函数,之所以在前面加上一个
    是为了方便求导的时候能够消去。

二、使用步骤

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
    的折线图,用于比较预测值和真实值。

三、运行结果

总结

多元线性回归是机器学习中用于预测连续型因变量的一种统计方法。它通过分析多个自变量(特征)与因变量(目标)之间的关系,构建一个线性模型来进行预测。
这个模型假设因变量与自变量之间存在线性关系,即因变量可以表示为自变量的线性组合加上一个误差项。 在多元线性回归中,我们通常寻找一组参数(系数),使得模型预测值与实际观测值之间的差异(即误差)的平方和最小。这通过梯度下降法来实现,它提供了一种计算这些参数的方法,使得预测值尽可能接近真实值。
为了求解模型参数,可以使用正规方程,它提供了一种直接计算系数矩阵的方法。在实际应用中,多元线性回归模型需要满足一些基本假设,如线性关系、误差项的独立性、同方差性和正态分布等。 多元线性回归在金融、经济学、工程学等领域有广泛的应用,它可以帮助研究人员和决策者理解不同变量之间的关系,并预测未来的趋势。然而,模型的准确性受到数据质量和模型假设合理性的影响,因此在应用多元线性回归时,需要对数据进行适当的处理和验证。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号