拟合算法

拟合算法

与插值算法不同,拟合算法不要求曲线严格经过所有数据点,而是寻求一个函数(曲线),使得该曲线在某种准则下与所有数据点的总体误差最小。拟合的核心目标是通过对已有数据特征拟合构建最佳数学模型,广泛应用于趋势预测、参数估计等领域。


一、与插值的区别

方法 特点 适用场景
插值 曲线必须经过所有样本点,易受龙格现象影响 数据精确、样本量少
拟合 曲线无需经过所有点,通过最小化误差平方和寻找全局最优解 数据含噪声、趋势分析

当样本点过多时,高阶插值多项式会出现震荡现象,而拟合算法通过低阶函数(如线性、指数函数)能更稳定地反映数据趋势。


二、原理

1. 数学模型

设样本点为 \((x_i, y_i), i = 1, 2, \ldots, n\),拟合曲线为 \(y = kx + b\),目标是最小化误差平方和\[ \min_{k,b} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \quad \text{其中} \quad \hat{y}_i = kx_i + b \]

2. 参数求解

通过求偏导并令导数为零,可得闭合解: \[ k = \frac{n \sum x_i y_i - \sum x_i \sum y_i}{n \sum x_i^2 - (\sum x_i)^2}, \quad b = \frac{\sum x_i^2 \sum y_i - \sum x_i \sum x_i y_i}{n \sum x_i^2 - (\sum x_i)^2} \]

3. 拓展

多项式线性,如二次函数等: \[ \quad \hat{y}_i = kx_i + kx_i^2 + b \]


三、拟合优度评价

1. 判定系数 \(R^2\)

  • 总体平方和(SST):反映数据总波动
    \[ SST = \sum_{i=1}^n (y_i - \overline{y})^2 \]
  • 误差平方和(SSE):反映拟合误差
    \[ SSE = \sum_{i=1}^n (y_i - \hat{y}_i)^2 \]
  • 回归平方和(SSR):反映模型解释的波动
    \[ SSR = \sum_{i=1}^n (\hat{y}_i - \overline{y})^2 \]

拟合优度
\[ R^2 = \frac{SSR}{SST} = 1 - \frac{SSE}{SST} \]
- $ R^2 \(,越接近1说明拟合效果越好。 - **注意**:\) R^2 $ 仅适用于线性参数模型(如 $ y = a + bx^2 $ 视为线性,因其对参数 (a,b) 为线性)。


四、MATLAB实现

1. 代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
% 导入数据
load data1
plot(x, y, 'o')
xlabel('x'); ylabel('y');

% 计算参数
n = length(x);
k = (n*sum(x.*y) - sum(x)*sum(y)) / (n*sum(x.^2) - sum(x)^2);
b = (sum(x.^2)*sum(y) - sum(x)*sum(x.*y)) / (n*sum(x.^2) - sum(x)^2);

% 绘制拟合曲线
hold on
fplot(@(x) k*x + b, [min(x), max(x)])
legend('样本数据', '拟合曲线')

2. 拟合工具箱(cftool)

输入 cftool 调用MATLAB拟合工具箱,支持多种函数类型(多项式、指数、自定义方程),自动计算参数及拟合优度。


五、应用

案例1:美国人口预测

使用Logistic模型拟合历史数据: \[ x(t) = \frac{x_m}{1 + \left( \frac{x_m}{3.9} - 1 \right) e^{-r(t-1790)}} \] 通过非线性最小二乘法估计参数 \(x_m\)\(r\),预测未来30年人口趋势。

案例2:鱼类生长模型

对鲨鱼体长-体重数据采用指数和正弦函数拟合,通过SSE选择最优模型: \[ \text{体长增长方程:} \quad y = 69.32e^{-0.004x} \quad (R^2 = 0.9704) \]


六、总结

  1. 适用场景:数据含噪声、需提取整体趋势、变量间关系复杂时优先选用拟合。
  2. 模型选择:优先线性参数模型以利用 \(R^2\) 评价,非线性模型直接比较SSE。
  3. 工具推荐:MATLAB cftool可快速实现多函数拟合与可视化。

拟合算法
http://example.com/2025/05/02/数学建模/预测类模型/2025-05-02-拟合算法/
作者
ZHW
发布于
2025年5月2日
许可协议