最小二乘多项式拟合的损失函数与最优化方法
时间: 2024-12-28 17:24:18 浏览: 7
### 最小二乘多项式拟合中的损失函数
在最小二乘多项式拟合中,损失函数通常采用均方误差(Mean Squared Error, MSE),该损失函数旨在最小化观测值与模型预测值之间的差异。具体来说,对于给定的数据集 \((x_i, y_i)\),其中 \(i=1,\ldots,n\) 表示第 i 个数据点,假设多项式的阶数为 m,则可以构建如下形式的多项式:
\[ f(x) = a_0 + a_1 x + a_2 x^2 + ... + a_m x^m \]
为了找到最佳参数向量 \(\mathbf{a}=[a_0,a_1,...,a_m]^T\) ,使得上述多项式能够尽可能好地描述实际数据分布,引入了基于残差平方和 (RSS) 的损失函数:
\[ L(a)=\sum_{i=1}^{n}(y_i-f(x_i))^2=\sum_{i=1}^{n}\left(y_i-\sum_{j=0}^{m}a_jx_i^j\right)^2 \][^1]
此表达式即为目标函数,在训练过程中需对其进行极小化处理。
### 多项式拟合中最优解的计算方式
针对未加入正则化的标准最小二乘问题,可以通过解析解的方式获得最优系数矩阵 A 。设 X 是由输入特征构成的设计矩阵,Y 则是由响应变量组成的列向量,则有:
\[ \hat{\mathbf{A}}=(X^TX)^{-1}X^TY \]
这里需要注意的是当设计矩阵接近奇异时可能会遇到数值稳定性方面的问题;另外如果存在多重共线性现象也会导致估计不稳定。因此实践中往往会对原始公式做一些改进措施比如岭回归(Ridge Regression)[^3]。
### 正规方程 vs 迭代算法
除了直接求逆得到闭型解之外,还可以借助迭代优化手段逐步逼近全局最低点。常见的几种方法包括但不限于梯度下降法、牛顿法及其变种等。这些技术特别适用于高维空间下的大规模数据集场景下,因为此时显式构造并存储整个 Hessian 矩阵变得不切实际。而像随机梯度下降(SGD)这样的增量更新策略允许我们仅依赖于单一样本或一小批样本来调整权重从而节省内存消耗的同时加快收敛速度。
```python
import numpy as np
from sklearn.linear_model import LinearRegression
def poly_fit(X, Y, degree):
# 创建多项式特征
X_poly = np.vander(X, N=degree+1)
model = LinearRegression(fit_intercept=False).fit(X_poly,Y)
return model.coef_
# 示例用法
if __name__ == "__main__":
X = np.array([0., 1., 2., 3.])
Y = np.array([-1., 0.8, 0.9, 2.1])
coef = poly_fit(X, Y, 2)
print(coef)
```
阅读全文