Neuromatch Academy课程内容解析:多元线性回归与多项式回归
引言
在数据分析与建模领域,回归分析是最基础且强大的工具之一。本文基于Neuromatch Academy课程内容,深入讲解多元线性回归和多项式回归的核心概念与实现方法。我们将从简单的线性回归出发,逐步扩展到多维特征空间,最终探讨如何通过多项式回归处理非线性关系。
多元线性回归基础
模型定义
多元线性回归是简单线性回归的自然扩展,当我们的输入特征从一个扩展到多个时,模型可以表示为:
y = θ₀ + θ₁x₁ + θ₂x₂ + ... + θₙxₙ + ε
其中:
- y是因变量(响应变量)
- x₁到xₙ是自变量(特征/预测变量)
- θ₀是截距项
- θ₁到θₙ是各特征的系数
- ε是误差项
矩阵表示
为了更简洁地表示和计算,我们通常使用矩阵形式:
y = Xθ + ε
其中:
- y是测量值的向量(N×1)
- X是设计矩阵(N×(n+1)),包含一列1(对应截距)和各特征值
- θ是参数向量((n+1)×1)
- ε是误差向量(N×1)
普通最小二乘(OLS)估计
OLS估计的目标是最小化残差平方和(MSE)。其解析解为:
θ̂ = (XᵀX)⁻¹Xᵀy
这个解可以通过对MSE函数求导并令导数为零得到。
实现多元线性回归
数据准备
我们首先生成模拟数据:
- 设置真实参数θ = [0, -2, -3]
- 生成40个样本点,x₁和x₂在[-2,2)区间均匀分布
- 添加高斯噪声
# 设置随机种子保证可重复性
np.random.seed(1234)
# 参数设置
theta = [0, -2, -3]
n_samples = 40
# 生成数据
n_regressors = len(theta)
x0 = np.ones((n_samples, 1)) # 截距项
x1 = np.random.uniform(-2, 2, (n_samples, 1))
x2 = np.random.uniform(-2, 2, (n_samples, 1))
X = np.hstack((x0, x1, x2)) # 设计矩阵
noise = np.random.randn(n_samples)
y = X @ theta + noise
OLS估计实现
def ordinary_least_squares(X, y):
"""普通最小二乘估计器"""
theta_hat = np.linalg.inv(X.T @ X) @ X.T @ y
return theta_hat
theta_hat = ordinary_least_squares(X, y)
print(f"估计参数: {theta_hat}")
执行后应得到类似[0.14, -2.09, -3.16]的估计值,接近真实参数[0, -2, -3]。
模型评估
计算预测值和MSE:
y_hat = X @ theta_hat
mse = np.mean((y - y_hat)**2)
print(f"MSE = {mse:.2f}")
多项式回归
当数据呈现非线性关系时,多项式回归是强有力的工具。它通过将特征的高次项加入模型来捕捉非线性关系。
模型形式
d阶多项式回归模型:
y = θ₀ + θ₁x + θ₂x² + ... + θₙxⁿ + ε
这实际上是多元线性回归的特例,其中特征为x的各次幂。
设计矩阵构建
关键步骤是构建包含各次幂的设计矩阵:
def make_design_matrix(x, order):
"""构建多项式设计矩阵"""
X = np.ones((len(x), 1)) # 截距列
for i in range(1, order+1):
X = np.hstack((X, x**i))
return X
多项式回归实现
我们可以对不同阶数的多项式进行拟合比较:
max_order = 5
theta_hat = {}
for order in range(max_order + 1):
X_design = make_design_matrix(x, order)
theta_hat[order] = ordinary_least_squares(X_design, y)
模型比较
通过绘制不同阶数多项式的拟合曲线和计算MSE,我们可以评估模型复杂度与拟合效果的关系:
def evaluate_fits(order_list, mse_list):
"""比较不同多项式拟合的MSE"""
plt.bar(order_list, mse_list)
plt.title('多项式拟合比较')
plt.xlabel('多项式阶数')
plt.ylabel('MSE')
plt.show()
实际应用建议
-
特征缩放:对于多项式回归,高次项可能导致数值不稳定,建议对特征进行标准化处理。
-
模型选择:高阶多项式可能过拟合,需要通过交叉验证等方法选择合适复杂度。
-
可视化:对于低维问题,可视化拟合曲线有助于直观理解模型表现。
-
正则化:当特征较多时,考虑使用岭回归或Lasso等正则化方法防止过拟合。
总结
本文详细介绍了多元线性回归和多项式回归的理论基础与Python实现。关键要点包括:
- 多元线性回归通过设计矩阵扩展简单线性回归
- OLS估计提供了参数的解析解
- 多项式回归通过特征工程处理非线性关系
- 模型复杂度与拟合效果需要平衡
这些技术构成了回归分析的基础,在实际数据分析中有广泛应用。理解这些概念对于掌握更复杂的机器学习模型至关重要。