最小二乘法
最小二乘法(又称最小平方法)是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。这种方法可以用于求得目标函数的最优值,也可以用于曲线拟合,解决回归问题。利用最小二乘法,可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。
最小二乘法的作用主要体现在以下几个方面:
拟合曲线:最小二乘法是解决曲线拟合问题最常用的方法。在已知一组数据点的情况下,可以利用最小二乘法求得一条最能代表这些数据的曲线。
求解未知量:最小二乘法可以用于求解未知量,使得误差值最小。例如,在回归分析中,可以利用最小二乘法求得回归直线的斜率和截距,使得预测值与实际值之间的误差平方和最小。
最小二乘法成立的前提条件是假设系统中无系统误差,误差均为偶然误差,并且假设误差符合正态分布,即整个系统最后的误差均值为零。
代码
package main
import (
"gonum.org/v1/gonum/mat"
)
// 最小二乘法函数
func leastSquares(X, Y *mat.Dense) (mat.Dense, error) {
var b mat.Dense
XT := X.T()
var XTX mat.Dense
XTX.Mul(XT, X)
var invXTX mat.Dense
err := invXTX.Inverse(&XTX)
if err != nil {
return b, err
}
var XTY mat.Dense
XTY.Mul(XT, Y)
b.Mul(&invXTX, &XTY)
return b, nil
}