多元线性回归之正规方程法(下)
1 课程概览
本课讲解多元线性回归正规方程法的完整推导和参数代入。详细解释W公式 $W = (X^TX)^{-1}X^TY$ 中各部分含义,通过代入具体参数演示计算过程,并说明正规方程法的两个弊端(矩阵必须有逆、大数据量内存问题)。
2 核心概念与定义
- 大X:特征列矩阵(所有特征列组成)。
- X的转置:行变列,列变行。
- 单位阵:对角线为1,其他为0的矩阵。
- 矩阵的逆:矩阵相乘等于单位阵的矩阵。
- W公式:$W = (X^TX)^{-1}X^TY$
3 算法与模型详解
3.1 正规方程W公式
$$W = (X^TX)^{-1}X^TY$$
各部分说明:
- $X$:特征列矩阵(所有特征列)
- $X^T$:X的转置
- $(X^TX)^{-1}$:$X^TX$ 的逆矩阵
- $Y$:标签(真实值)
3.2 公式推导步骤
步骤1:计算 $X^T$(X的转置)
- 第一行变为第一列
- 最后一行变为最后一列
步骤2:计算 $X^TX$
- 矩阵相乘,结果为方阵
步骤3:计算 $(X^TX)^{-1}$
- 求逆矩阵
- 前提:矩阵必须有逆
步骤4:计算 $X^TY$
- 转置矩阵乘以标签
步骤5:最终结果 $$W = (X^TX)^{-1}X^TY$$
3.3 数据集代入示例
数据集:
| X0 | X1 | X2 | X3 | X4 | Y |
|---|---|---|---|---|---|
| 1 | 2104 | 5 | 1 | 45 | 460 |
| 1 | 1416 | 3 | 2 | 40 | 232 |
| 1 | 1534 | 3 | 2 | 30 | 315 |
| 1 | 852 | 2 | 1 | 36 | 178 |
| 1 | 1940 | 4 | 2 | 50 | 440 |
说明:
- X0:全为1(用于计算偏置B)
- X1-X4:特征列
- Y:标签(真实值)
大X:所有特征列组成的矩阵
3.4 正规方程法的弊端
| 弊端 | 说明 |
|---|---|
| 矩阵必须有逆 | 如果矩阵不可逆,无法计算 |
| 大数据量内存问题 | 数据量大时,矩阵求逆计算量大,可能内存溢出 |
3.5 矩阵不可逆的情况
- 特征之间线性相关(多重共线性)
- 特征数大于样本数
- 数据中存在冗余特征
4 数学原理与推导
4.1 损失函数矩阵形式
$$L(W) = (XW - Y)^T(XW - Y)$$
4.2 对W求偏导
$$\frac{\partial L}{\partial W} = 2X^T(XW - Y) = 0$$
4.3 求解W
$$X^TXW = X^TY$$
$$W = (X^TX)^{-1}X^TY$$
4.4 前提条件
- $X^TX$ 必须可逆
- 矩阵必须是方阵
- 行列式不为0
5 代码示例
import numpy as np
# 数据集(5个样本,4个特征)
X = np.array([
[2104, 5, 1, 45],
[1416, 3, 2, 40],
[1534, 3, 2, 30],
[852, 2, 1, 36],
[1940, 4, 2, 50]
])
# 真实值
Y = np.array([460, 232, 315, 178, 440])
# 添加X0列(全为1,用于计算偏置B)
X_b = np.c_[np.ones((len(X), 1)), X]
# 正规方程法求解W
# W = (X^T * X)^-1 * X^T * Y
W = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(Y)
print("权重W:", W)
# W[0]是偏置B,W[1:]是各特征的权重
# 预测
X_test = np.array([[1, 2000, 4, 2, 40]]) # 添加X0=1
y_predict = X_test.dot(W)
print("预测值:", y_predict)
使用sklearn:
from sklearn.linear_model import LinearRegression
# 创建模型
model = LinearRegression()
# 训练模型
model.fit(X, Y)
# 查看权重和偏置
print("权重W:", model.coef_)
print("偏置B:", model.intercept_)
# 预测
X_test = np.array([[2000, 4, 2, 40]])
y_predict = model.predict(X_test)
print("预测值:", y_predict)
6 重难点与易错提醒
- ❗重点:W公式:$W = (X^TX)^{-1}X^TY$
- ❗重点:大X是特征列矩阵。
- ❗重点:矩阵必须有逆才能求解。
- ❗重点:正规方程法的两个弊端。
- ⚠️易错:忘记添加X0列(全为1)用于计算偏置B。
- ⚠️易错:矩阵相乘顺序错误。
- 💡深入理解:正规方程法是精确解,但要求矩阵可逆。
7 课堂问答精选
Q: 大X是什么?
A: 大X是特征列矩阵,由所有特征列组成。在数据集中,每列是一个特征,所有特征列组合在一起就是大X。
Q: 正规方程法有什么弊端?
A:
- 矩阵必须有逆:如果 $X^TX$ 不可逆(如特征线性相关、特征数大于样本数),无法计算。
- 大数据量内存问题:数据量大时,矩阵求逆计算量大,可能内存溢出。 因此,大数据量通常使用梯度下降法。
8 本课小结
- W公式:$W = (X^TX)^{-1}X^TY$
- 大X:特征列矩阵
- 计算步骤:转置 → 相乘 → 求逆 → 乘以转置 → 乘以Y
- 弊端1:矩阵必须有逆
- 弊端2:大数据量内存问题
- 替代方案:梯度下降法
9 延伸思考与实践
- 实践:用NumPy手动实现正规方程法。
- 预习:梯度下降法。
- 思考:什么情况下矩阵不可逆?