最小二乘法原理及在擬合函數實際應用


一、算法原理

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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM