240°

最小二乘法原理及在拟合函数实际应用

一、算法原理

1.1      算法简述

最小二乘法是一种数学优化算法。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以通过样本求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。如下图中,红色实线即为实际值与拟合函数之间的差距,在算法实现过程中,尽量使它的平方和最小,达到最佳拟合效果的目的。

1.2  算法详解

假设给定一系列散列值(数据集)记为D={(x1,y1),(x2,y2),(x3,y3),,,(xn,yn)},设函数f(x)=ax+b使得f(x)函数尽可能拟合D。求解函数f(x)的方法很多种。最小二乘法寻找拟合函数f(x)的原理和思想关键:平方差之和最小,即使得Q值最小。

 

即求解Q最小值如下:

因为(x1,y1),(x2,y2),,,(xn,yn)均是已知变量,问题转化为求解Q=f(a,b)的最小值,即求解(a,b)点,使得f(a,b)值极小。

 

使用偏导数解f(a,b)极小值:

最终整理简化得a值、b值公式如下:

其中,为xi,yi的算术平均值。

 

二、程序示例及解释

环境为python3,样本数据为x与y两个数据列表

x = [2, 3, 4, 5, 6, 7] 
y = [5.5,7,6.8,9.5,11,14]
mean_x = sum(x) / len(x) 
mean_y = sum(y) / len(y)  
sum_x = 0.0 
sum_y = 0.0
for i in range(0, len(x)): 
    sum_x += (x[i] - mean_x) * (y[i] - mean_y)
    sum_y += (x[i] - mean_x) ** 2
K = sum_x / sum_y 
b = mean_y - K * mean_x  

计算获得拟合公式为y=1.634 x + 1.612 

 

原文链接:https://www.cnblogs.com/mrtop/p/10242545.html

全部评论: 0

    我有话说: