什么是线性回归

问题:什么是线性回归?

详细介绍:

线性回归是一种统计学习方法,用于建立一个依赖于自变量的因变量的线性关系模型。它可以用来预测数值型因变量,也可以用于探索变量之间的关系。

算法原理:

线性回归算法的基本原理是寻找一条最佳拟合直线,使得预测值和真实值的误差最小化。它假设自变量和因变量之间存在一个线性关系,并且假设误差项是独立且具有相同的方差。线性回归模型可以表示为:

$$y = \beta_0 + \beta_1x_1 + \beta_2x_2 + … + \beta_nx_n + \varepsilon$$

其中,$y$是因变量,$x_1, x_2, …, x_n$是自变量,$\beta_0, \beta_1, \beta_2, …, \beta_n$是回归系数,$\varepsilon$是误差项。

公式推导:

为了找到最佳拟合直线,我们需要最小化预测值与真实值之间的误差。这里我们使用最小二乘法来估计回归系数。

最小化误差的目标函数是平方和损失函数,定义为:

$$L(\beta) = \sum_{i=1}^{m}(y_i – (\beta_0 + \beta_1x_{i1} + \beta_2x_{i2} + … + \beta_nx_{in}))^2$$

为了最小化目标函数,我们需要对回归系数进行求导并令导数为零。

对$\beta_0$求导:

$$\frac{\partial L(\beta)}{\partial \beta_0} = -2\sum_{i=1}^{m}(y_i – (\beta_0 + \beta_1x_{i1} + \beta_2x_{i2} + … + \beta_nx_{in})) = 0$$

对$\beta_1$求导:

$$\frac{\partial L(\beta)}{\partial \beta_1} = -2\sum_{i=1}^{m}x_{i1}(y_i – (\beta_0 + \beta_1x_{i1} + \beta_2x_{i2} + … + \beta_nx_{in})) = 0$$

依次对$\beta_2, …, \beta_n$求导,得到一组正规方程:

$$\frac{\partial L(\beta)}{\partial \beta_0} = -2\sum_{i=1}^{m}x_{ij}(y_i – (\beta_0 + \beta_1x_{i1} + \beta_2x_{i2} + … + \beta_nx_{in})) = 0, \ (j = 1,2,…,n)$$

解上述方程即可得到回归系数的估计值。

计算步骤:

  1. 导入数据集。
  2. 将数据集分为自变量和因变量。
  3. 初始化回归系数。
  4. 计算最佳回归系数。
  5. 使用模型进行预测。

复杂Python代码示例:

import numpy as np
import matplotlib.pyplot as plt

# 生成虚拟数据
np.random.seed(0)
X = np.linspace(0, 10, 100)
y = 2 artical cgpt2md_gpt.sh cgpt2md_johngo.log cgpt2md_johngo.sh cgpt2md.sh _content1.txt _content.txt current_url.txt history_url history_urls log nohup.out online pic.txt seo test.py topic_gpt.txt topic_johngo.txt topic.txt upload-markdown-to-wordpress.py urls X + np.random.normal(0, 1, 100)

# 计算最佳回归系数
X = X.reshape((-1, 1))
X = np.hstack((np.ones((len(X), 1)), X))
beta = np.linalg.inv(X.T @ X) @ X.T @ y

# 绘制原始数据和拟合直线
plt.scatter(X[:, 1], y, color='blue')
plt.plot(X[:, 1], X @ beta, color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression')
plt.show()

代码细节解释:

  1. 通过导入numpy库,我们可以使用其中的函数来进行矩阵运算和最小二乘法求解。
  2. 通过numpy.random.seed(0)设置随机数种子,以确保生成的虚拟数据可以被复现。
  3. 使用numpy.linspace生成等间隔的数据,作为自变量X
  4. 使用numpy.random.normal生成服从正态分布的随机误差,加到实际的因变量上,得到虚拟的观测值y
  5. 为了使用最小二乘法求解回归系数,我们需要构造包含截距项的设计矩阵X。我们在X的第一列添加全为1的列向量,用于给截距项预留位置。
  6. 最小二乘法的求解公式为:$\beta = (X^T X)^{-1} X^T y$。在这里,@表示矩阵的乘法,np.linalg.inv用于求逆。
  7. 使用matplotlib.pyplot.scatter绘制原始数据散点图,使用matplotlib.pyplot.plot绘制拟合直线。
  8. 添加坐标轴标签和标题,并使用matplotlib.pyplot.show显示图像。

这样,我们得到了使用线性回归算法拟合数据并绘制拟合直线的完整Python代码示例。

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/821882/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球