当前位置:  首页>> 技术小册>> 程序员必学数学基础课

40 | 线性回归(中):如何使用最小二乘法进行直线拟合?

在数据科学与机器学习的广阔领域中,线性回归无疑是最基础且应用广泛的模型之一。它不仅能够揭示变量之间的线性关系,还能通过预测分析为决策提供有力支持。本章将深入探讨线性回归模型的核心——如何使用最小二乘法(Least Squares Method)进行直线拟合,帮助读者理解其背后的数学原理及实际应用。

40.1 线性回归概述

线性回归旨在通过一条直线(在多元线性回归中则为超平面)来最佳拟合一组数据点,使得这条直线能够尽可能准确地描述自变量(解释变量)与因变量(响应变量)之间的线性关系。具体来说,线性回归模型可以表示为:

[ y = \beta_0 + \beta_1x + \epsilon ]

其中,(y) 是因变量,(x) 是自变量,(\beta_0) 是截距项(常数项),(\beta_1) 是斜率(回归系数),(\epsilon) 是误差项,代表除线性关系外其他所有影响(y)的因素或随机误差。

40.2 最小二乘法原理

最小二乘法是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。在线性回归中,这个“最佳”通常指的是找到一条直线,使得所有观测点到这条直线的垂直距离(即残差)的平方和最小。

设有一组观测数据 ((x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n)),我们希望找到直线 (y = \beta_0 + \beta_1x),使得残差平方和(Residual Sum of Squares, RSS)最小:

[ RSS = \sum_{i=1}^{n} (y_i - (\beta_0 + \beta_1x_i))^2 ]

目标即为求解 (\beta_0) 和 (\beta_1),使得 (RSS) 达到最小值。

40.3 求解最小二乘估计

为了找到使 (RSS) 最小的 (\beta_0) 和 (\beta_1),我们可以采用偏导数的方法,即分别对 (RSS) 关于 (\beta_0) 和 (\beta_1) 求偏导,并令其为0。

步骤一:对 (\beta_1) 求偏导

[ \frac{\partial RSS}{\partial \beta1} = \sum{i=1}^{n} -2x_i(y_i - (\beta_0 + \beta_1x_i)) = 0 ]

整理得:

[ \sum_{i=1}^{n} x_i(y_i - \beta_0 - \beta_1x_i) = 0 ]

步骤二:对 (\beta_0) 求偏导

[ \frac{\partial RSS}{\partial \beta0} = \sum{i=1}^{n} -2(y_i - (\beta_0 + \beta_1x_i)) = 0 ]

整理得:

[ \sum_{i=1}^{n} (y_i - \beta_0 - \beta_1x_i) = 0 ]

步骤三:解方程组

从上述两个方程中,我们可以解出 (\beta_0) 和 (\beta_1)。首先,从关于 (\beta_1) 的方程中解出 (\beta_1):

[ \beta1 = \frac{\sum{i=1}^{n} xiy_i - n\bar{x}\bar{y}}{\sum{i=1}^{n} x_i^2 - n\bar{x}^2} = \frac{\text{Cov}(x, y)}{\text{Var}(x)} ]

其中,(\bar{x}) 和 (\bar{y}) 分别是 (x) 和 (y) 的均值,(\text{Cov}(x, y)) 是 (x) 和 (y) 的协方差,(\text{Var}(x)) 是 (x) 的方差。

然后,将 (\beta_1) 代入关于 (\beta_0) 的方程中求解 (\beta_0):

[ \beta_0 = \bar{y} - \beta_1\bar{x} ]

这样,我们就得到了 (\beta_0) 和 (\beta_1) 的最小二乘估计值。

40.4 最小二乘法的几何解释

从几何角度来看,最小二乘法实际上是在寻找一个超平面(在一维情况下为直线),使得所有数据点到这个超平面的垂直投影距离之和最小。这种解释直观地展示了最小二乘法为何能够有效地拟合数据。

40.5 线性回归的假设与检验

虽然最小二乘法提供了线性回归系数的求解方法,但在实际应用中,我们还需要对模型的有效性进行检验。这通常涉及以下几个假设:

  1. 线性关系假设:自变量与因变量之间存在线性关系。
  2. 独立同分布假设:误差项 (\epsilon) 是独立同分布的,且均值为0,方差恒定。
  3. 无多重共线性:自变量之间不存在完全的线性关系。

为了验证这些假设,我们可能会进行诸如残差分析、拟合优度检验(如R²)、显著性检验(如t检验、F检验)等。

40.6 实战案例:使用Python进行线性回归

接下来,我们通过一个简单的Python示例来展示如何使用最小二乘法进行线性回归。这里我们使用scikit-learn库中的LinearRegression模型,但实际上,手动实现最小二乘法也是一个很好的练习。

  1. import numpy as np
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.linear_model import LinearRegression
  4. import matplotlib.pyplot as plt
  5. # 假设数据
  6. X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]) # 注意:X需要是二维数组
  7. y = np.array([2, 4, 5, 4, 5, 7, 8, 9, 11, 13])
  8. # 划分训练集和测试集(这里仅为示例,实际中可能需要)
  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  10. # 创建线性回归模型
  11. model = LinearRegression()
  12. # 训练模型
  13. model.fit(X_train, y_train)
  14. # 预测
  15. y_pred = model.predict(X_test)
  16. # 输出系数和截距
  17. print(f"Intercept: {model.intercept_}, Coefficient: {model.coef_}")
  18. # 可视化结果
  19. plt.scatter(X_train, y_train, color='blue', label='Training data')
  20. plt.plot(X_train, model.predict(X_train), color='red', linewidth=3, label='Regression line')
  21. plt.xlabel('X')
  22. plt.ylabel('y')
  23. plt.title('Linear Regression Example')
  24. plt.legend()
  25. plt.show()

上述代码展示了如何使用scikit-learn中的LinearRegression类进行线性回归的拟合与预测,并通过散点图和拟合直线进行可视化。

40.7 总结

本章详细介绍了如何使用最小二乘法进行线性回归的直线拟合,包括其数学原理、求解过程、几何解释以及实际应用中的假设检验和Python实现。通过掌握最小二乘法,读者可以更加深入地理解线性回归模型的本质,为后续学习更复杂的统计与机器学习模型打下坚实的基础。