跳到主要内容

曲线拟合

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

什么是曲线拟合?​

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

简单理解​

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

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

目的​

曲线拟合的目的:

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

最小二乘法​

定义​

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

误差​

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

ei=yi−f(xi)e_i = y_i - f(x_i)

目标函数​

误差平方和:

S=∑i=1nei2=∑i=1n[yi−f(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

最小化条件:

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

解:

a=n∑xiyi−∑xi∑yin∑xi2−(∑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=∑yi−a∑xinb = \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 = 10,∑yi=16\sum y_i = 16
  • ∑xi2=30\sum x_i^2 = 30,∑xiyi=42\sum x_i y_i = 42
  • a=4×42−10×164×30−100=820=0.4a = \frac{4 \times 42 - 10 \times 16}{4 \times 30 - 100} = \frac{8}{20} = 0.4
  • b=16−0.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[yi−∑j=0majxij]2S = \sum_{i=1}^{n} \left[y_i - \sum_{j=0}^{m} a_j x_i^j\right]^2

最小化条件:

∂S∂aj=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}

线性化:ln⁡y=ln⁡a+bx\ln y = \ln a + bx

对数函数​

y=aln⁡x+by = a \ln x + b

幂函数​

y=axby = ax^b

线性化:ln⁡y=ln⁡a+bln⁡x\ln y = \ln a + b \ln x

正弦函数​

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

方法​

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

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

拟合质量评估​

决定系数​

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

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

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

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

均方误差​

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

MSE=1n∑i=1n[yi−f(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=1n∑i=1n[yi−f(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 越好。掌握曲线拟合,你就能分析数据和预测趋势!