【高斯拟合最终篇】Levenberg-Marquardt(LM)算法

Levenberg-Marquardt(LM)算法是一种结合高斯-牛顿法和梯度下降法的优化方法,特别适合非线性最小二乘问题,如高斯函数拟合。它通过引入阻尼因子(damping factor)平衡高斯-牛顿法的快速收敛和梯度下降法的稳定性。以下是基于之前的 gaussian_fit.py,加入 LM 算法实现高斯拟合的 Python 示例,包含计算公式、代码和可视化结果,与高斯-牛顿法和梯度下降法的结果对比。


计算公式

高斯函数

高斯函数形式为:
f ( x ; A , μ , σ ) = A exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) f(x; A, \mu, \sigma) = A \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) f(x;A,μ,σ)=Aexp(2σ2(xμ)2)

  • A A A: 幅度,控制曲线高度。
  • μ \mu μ: 均值,控制曲线中心。
  • σ \sigma σ: 标准差,控制曲线宽度。
优化目标

最小化残差平方和:
S ( θ ) = ∑ i = 1 n ( y i − f ( x i , θ ) ) 2 , θ = [ A , μ , σ ] S(\theta) = \sum_{i=1}^n (y_i - f(x_i, \theta))^2, \quad \theta = [A, \mu, \sigma] S(θ)=i=1n(yif(xi,θ))2,θ=[A,μ,σ]

  • y i y_i yi: 观测数据。
  • f ( x i , θ ) f(x_i, \theta) f(xi,θ): 模型预测值。
  • r i = y i − f ( x i , θ ) r_i = y_i - f(x_i, \theta) ri=yif(xi,θ): 残差。
雅可比矩阵

雅可比矩阵 ( J ) 包含高斯函数对参数 θ = [ A , μ , σ ] \theta = [A, \mu, \sigma] θ=[A,μ,σ] 的偏导数:
J = [ ∂ f ( x 1 ) ∂ A ∂ f ( x 1 ) ∂ μ ∂ f ( x 1 ) ∂ σ ⋮ ⋮ ⋮ ∂ f ( x n ) ∂ A ∂ f ( x n ) ∂ μ ∂ f ( x n ) ∂ σ ] J = \begin{bmatrix} \frac{\partial f(x_1)}{\partial A} & \frac{\partial f(x_1)}{\partial \mu} & \frac{\partial f(x_1)}{\partial \sigma} \\ \vdots & \vdots & \vdots \\ \frac{\partial f(x_n)}{\partial A} & \frac{\partial f(x_n)}{\partial \mu} & \frac{\partial f(x_n)}{\partial \sigma} \end{bmatrix} J= Af(x1)Af(xn

你可能感兴趣的:(算法,机器学习,人工智能)