单变量最小二乘法
单变量线性回归模型是一个线性方程:y=w0+w1x。学习这样的模型需要将其拟合到训练数据样本 (x1,y1),…,(xn,yn) 上,以最小化损失函数(通常是均方误差,MSE):
L=n1i=1∑n(yi−(w0+w1xi))2
为了找到最小化该误差函数的最佳参数 w0 和 w1,我们需要找到误差梯度 ∂w0∂L 和 ∂w1∂L。因此,我们需要通过求偏导数来推导这些表达式,将其设为零,并求解 w0 和 w1。
- 推导单变量线性回归模型的最小二乘估计(MSE 损失函数的最小化)
-
对 w0 求偏导数并设为零:
∂w0∂L=−n2i=1∑n(yi−w0−w1xi)=0
解得:
w0=y−w1x
其中,x 和 y 分别是 x 和 y 的均值。
-
对 w1 求偏导数并设为零:
∂w1∂L=−n2i=1∑nxi(yi−w0−w1xi)=0
将 w0 的表达式代入,解得:
w1=∑i=1n(xi−x)2∑i=1n(xi−x)(yi−y)
-
最小二乘估计为:
w0=y−w1x,w1=Var(x)Cov(x,y)
- 证明数据的质心,即点 (x,y),始终位于最小二乘回归线上
- 尝试解决以下带有 L2 正则化的线性回归损失函数,其中我们添加了一个惩罚项,惩罚 w1 的大小。设 λ>0,考虑正则化损失
L(w0,w1)=n1i=1∑n(yi−(w0+w1xi))2+λw12
-
求解步骤:
- 对 w0 求偏导数并设为零,得到与普通最小二乘法相同的解:
w0=y−w1x
- 对 w1 求偏导数并设为零:
∂w1∂L=−n2i=1∑nxi(yi−w0−w1xi)+2λw1=0
- 代入 w0 的表达式,解得:
w1=∑i=1n(xi−x)2+nλ∑i=1n(xi−x)(yi−y)
-
结论:
正则化后的 w1 比普通最小二乘法的 w1 更小,体现了正则化对参数大小的惩罚。
多变量最小二乘法
Multivariate Least Squares
在多变量线性回归中,我们推广单变量线性回归到具有 p 个特征的情况。设 x1,x2,…,xn 是 Rp 中的 n 个特征向量(例如,对应于 n 个实例),即:
xi=⎣⎢⎢⎢⎢⎡xi0xi1⋮xip−1⎦⎥⎥⎥⎥⎤
我们将这些特征向量堆叠成一个矩阵 X∈Rn×p,称为设计矩阵。惯例是将特征向量堆叠起来,使得 X 的每一行对应于一个特定的实例,即:
X=⎣⎢⎢⎢⎢⎡x1Tx2T⋮xnT⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡x10x20⋮xn0x11x21⋮xn1⋯⋯⋯⋯x1,p−1x2,p−1⋮xn,p−1⎦⎥⎥⎥⎥⎤
其中上标 T 表示转置操作。通常将特征向量的第一个元素设为 1,以考虑偏置项,因此我们假设 xi0=1 对于所有 i=1,…,n。目标是学习一个权重向量 w∈Rp,并进行预测:
y^i=wTxi=w0+w1xi1+w2xi2+⋯+wp−1xi,p−1
其中 y^i 表示第 i 个预测值。为了求解 w 中的最优权重,我们可以使用均方误差(MSE)作为损失函数:
L(w)=n1∥y−Xw∥22
其中 ∥⋅∥2 是欧几里得范数。在本问题的其余部分,我们将假设 X 是一个满秩矩阵,这意味着我们可以计算 XTX 的逆。
- 证明 L(w) 有一个临界点 w^=(XTX)−1XTy
- 证明步骤:
-
展开损失函数:
L(w)=n1(y−Xw)T(y−Xw)
-
对 w 求梯度并设为零:
∇wL(w)=−n2XT(y−Xw)=0
解得:
XTXw=XTy⇒w=(XTX)−1XTy
- 证明临界点 w^ 是全局最小化器
- 证明:
由于损失函数 L(w) 是凸函数,其临界点即为全局最小化器。
- 写出 p=2 情况下的矩阵和向量
- 假设 p=2,设计矩阵 X 和向量 y 为:
X=⎣⎢⎢⎢⎢⎡11⋮1x11x21⋮xn1⎦⎥⎥⎥⎥⎤,y=⎣⎢⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎥⎤,w=[w0w1]
XTX=[n∑xi1∑xi1∑xi12],XTy=[∑yi∑xi1yi]
- 计算 p=2 情况下的最小二乘估计
w=(XTX)−1XTy
- 手工和 Python 实现最小二乘法
x=[3,6,7,8,11],y=[3,13,8,11,2,6]
-
手工计算:
- 计算 XTX 和 XTy。
- 求解 w=(XTX)−1XTy。
-
Python 实现:
1 2 3 4 5 6 7 8 9 10 11
| import numpy as np from sklearn.linear_model import LinearRegression
X = np.array([[1, 3], [1, 6], [1, 7], [1, 8], [1, 11]]) y = np.array([3, 13, 8, 11, 2])
w = np.linalg.inv(X.T @ X) @ X.T @ y print("手工计算的最小二乘估计:", w)
model = LinearRegression().fit(X[:, 1:], y) print("sklearn 的最小二乘估计:", model.intercept_, model.coef_)
|
- 伪逆的使用
- 如果 XTX 不可逆,可以使用伪逆 X+ 计算最小二乘解:
w=X+y
-
特征映射
特征映射将原始特征转换为更高维的特征空间,例如多项式回归。在最小二乘法中,可以通过设计矩阵 X 实现特征映射。
-
MSE 和 SSE 的关系
- 真,因为 argmin 只与损失函数的形状有关,与缩放无关。
- 假,因为 min 值受缩放影响。
总体与样本参数
总体和样本的区别
总体是研究对象的全集,样本是从总体中抽取的子集。
总体参数的估计
总体参数是描述总体的特征(如均值、方差),通过样本统计量(如样本均值、样本方差)估计。