基本原理
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。
对于线性拟合,最小二乘法存在解析解,其矩阵形式的公式如下所示:
XB=Y⇒B=(XTX)−1XTY\mathbf{X B}=\mathbf{Y} \Rightarrow \mathbf{B}=\left(\mathbf{X}^{T} \mathbf{X}\right)^{-1} \mathbf{X}^{T} \mathbf{Y} XB=Y⇒B=(XTX)−1XTY
代码实现
import numpy as npfrom matplotlib import pyplot as pltX = np.array([[0,1],[1,1],[2,1],[3,1],[4,1]])y = np.array([0,2,1,2,4])Xt = X.transpose()Xs = np.matmul(Xt,X)Xsi = np.linalg.inv(Xs)Wstar = np.matmul(np.matmul(Xsi,Xt),y)print(Wstar)Xhat = Wstar[0]*y + Wstar[1]print(Xhat)Xp = X[:,0]plt.scatter(Xp,y)plt.plot(Xhat,y)plt.show()