一、算法原理 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