跳到主要内容

曲线拟合

曲线拟合是用数学函数近似数据的方法!理解曲线拟合,能帮助我们分析数据、预测趋势。

什么是曲线拟合?

曲线拟合(Curve Fitting)是用数学函数近似一组数据点的方法。

简单理解

曲线拟合就像"找一条曲线,尽可能接近所有数据点":

  • 给定一组数据点
  • 选择一个函数形式
  • 确定函数参数
  • 使函数尽可能接近数据点

目的

曲线拟合的目的:

  • 📊 数据分析:分析数据的趋势和规律
  • 🔮 预测:预测未来的值
  • 📈 建模:建立数据的数学模型

最小二乘法

定义

最小二乘法(Least Squares Method)是使误差平方和最小的拟合方法。

误差

对于数据点 (xi,yi)(x_i, y_i) 和拟合函数 f(x)f(x)误差

ei=yif(xi)e_i = y_i - f(x_i)

目标函数

误差平方和

S=i=1nei2=i=1n[yif(xi)]2S = \sum_{i=1}^{n} e_i^2 = \sum_{i=1}^{n} [y_i - f(x_i)]^2

最小二乘法的目标是使 SS 最小。

线性拟合

定义

线性拟合是用直线 y=ax+by = ax + b 拟合数据。

方法

对于数据点 (xi,yi)(x_i, y_i)i=1,2,,ni = 1, 2, \ldots, n),拟合直线 y=ax+by = ax + b

误差平方和

S=i=1n[yi(axi+b)]2S = \sum_{i=1}^{n} [y_i - (ax_i + b)]^2

最小化条件

Sa=0,Sb=0\frac{\partial S}{\partial a} = 0, \quad \frac{\partial S}{\partial b} = 0

a=nxiyixiyinxi2(xi)2a = \frac{n \sum x_i y_i - \sum x_i \sum y_i}{n \sum x_i^2 - (\sum x_i)^2}

b=yiaxinb = \frac{\sum y_i - a \sum x_i}{n}

例子

数据点(1,2),(2,3),(3,5),(4,6)(1, 2), (2, 3), (3, 5), (4, 6)

计算

  • xi=10\sum x_i = 10yi=16\sum y_i = 16
  • xi2=30\sum x_i^2 = 30xiyi=42\sum x_i y_i = 42
  • a=4×4210×164×30100=820=0.4a = \frac{4 \times 42 - 10 \times 16}{4 \times 30 - 100} = \frac{8}{20} = 0.4
  • b=160.4×104=3b = \frac{16 - 0.4 \times 10}{4} = 3

拟合直线y=0.4x+3y = 0.4x + 3

多项式拟合

定义

多项式拟合是用多项式 y=a0+a1x+a2x2++amxmy = a_0 + a_1 x + a_2 x^2 + \cdots + a_m x^m 拟合数据。

方法

对于 nn 个数据点,可以用 mm 次多项式拟合(通常 m<nm < n)。

误差平方和

S=i=1n[yij=0majxij]2S = \sum_{i=1}^{n} \left[y_i - \sum_{j=0}^{m} a_j x_i^j\right]^2

最小化条件

Saj=0(j=0,1,2,,m)\frac{\partial S}{\partial a_j} = 0 \quad (j = 0, 1, 2, \ldots, m)

这得到一个线性方程组,可以求解 a0,a1,,ama_0, a_1, \ldots, a_m

例子

二次拟合y=a0+a1x+a2x2y = a_0 + a_1 x + a_2 x^2

对于数据点,可以建立方程组求解 a0,a1,a2a_0, a_1, a_2

非线性拟合

定义

非线性拟合是用非线性函数拟合数据。

常见函数

指数函数

y=aebxy = ae^{bx}

线性化lny=lna+bx\ln y = \ln a + bx

对数函数

y=alnx+by = a \ln x + b

幂函数

y=axby = ax^b

线性化lny=lna+blnx\ln y = \ln a + b \ln x

正弦函数

y=asin(bx+c)+dy = a \sin(bx + c) + d

方法

非线性拟合通常使用迭代方法:

  • 牛顿法
  • 梯度下降法
  • 遗传算法

拟合质量评估

决定系数

决定系数(Coefficient of Determination)R2R^2

R2=1(yif(xi))2(yiyˉ)2R^2 = 1 - \frac{\sum (y_i - f(x_i))^2}{\sum (y_i - \bar{y})^2}

其中 yˉ=1nyi\bar{y} = \frac{1}{n} \sum y_i 是平均值。

R2R^2 越接近 1,拟合越好。

均方误差

均方误差(Mean Squared Error,MSE):

MSE=1ni=1n[yif(xi)]2\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} [y_i - f(x_i)]^2

MSE 越小,拟合越好。

均方根误差

均方根误差(Root Mean Squared Error,RMSE):

RMSE=MSE=1ni=1n[yif(xi)]2\text{RMSE} = \sqrt{\text{MSE}} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} [y_i - f(x_i)]^2}

过拟合和欠拟合

过拟合

过拟合(Overfitting)是模型过于复杂,过度拟合训练数据,但泛化能力差。

特征

  • 训练误差小
  • 测试误差大
  • 模型复杂

解决方法

  • 简化模型
  • 增加数据
  • 正则化

欠拟合

欠拟合(Underfitting)是模型过于简单,无法很好地拟合数据。

特征

  • 训练误差大
  • 测试误差也大
  • 模型简单

解决方法

  • 增加模型复杂度
  • 增加特征
  • 减少正则化

曲线拟合的应用

数据分析

  • 📊 趋势分析:分析数据的趋势
  • 📈 预测:预测未来的值

科学研究

  • 🔬 实验数据分析:分析实验数据
  • 📐 建立模型:建立科学模型

工程实践

  • 🏗️ 系统建模:建立系统模型
  • ⚙️ 性能预测:预测系统性能

常见错误

错误 1:过度拟合

使用过于复杂的模型,导致过拟合。

错误 2:忽略异常值

没有处理异常值,影响拟合结果。

错误 3:选择错误的函数形式

选择的函数形式不适合数据。

小练习

  1. 用最小二乘法拟合数据点 (1,2),(2,4),(3,6)(1, 2), (2, 4), (3, 6) 的直线
  2. 计算拟合直线的决定系数 R2R^2
  3. 说明过拟合和欠拟合的区别
  4. 应用题:在数据分析中,如何选择合适的拟合函数?

💡 小贴士:曲线拟合是用数学函数近似数据的方法。记住:最小二乘法使误差平方和最小,决定系数 R2R^2 越接近 1 越好。掌握曲线拟合,你就能分析数据和预测趋势!