最小二乘法是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。这种方法在统计学、工程学和机器学习中被广泛使用,特别是在线性回归分析中。以下是最小二乘法的原理和详细推导。
原理
最小二乘法的基本思想是找到一组参数,使得模型预测值与实际观测值之间的差异(残差)的平方和最小。这种方法假设误差是随机的,并且服从正态分布,误差的期望值为零。
问题表述
假设我们有一组观测数据 ( x i , y i ) (x_i,y_i) (xi,yi),其中 i=1,2,…,n。我们想要找到一个模型(例如线性模型)来拟合这些数据。对于线性模型,我们可以表示为:
y = a x + b y=ax+b y=ax+b
其中,a 和 b 是我们想要估计的参数。
目标函数
我们定义目标函数(或损失函数)为残差的平方和:
S ( a , b ) = ∑ i = 1 n ( y i − ( a x i + b ) ) 2 S(a, b) = \sum_{i=1}^{n} (y_i - (ax_i + b))^2 S(a,b)=i=1∑n(yi−(axi+b))2
我们的目标是找到 a 和 b 的值,使得 S(a,b) 最小。
推导
为了找到 S(a,b) 的最小值,我们需要对 a 和 b 分别求偏导数,并令这些偏导数等于零。
- 对 a 求偏导数:
∂ S ∂ a = − 2 ∑ i = 1 n x i ( y i − ( a x i + b ) ) \frac{\partial S}{\partial a} = -2 \sum_{i=1}^{n} x_i (y_i - (ax_i + b)) ∂a∂S=−2i=1∑nxi(yi−(axi+b))
- 对 b 求偏导数:
∂ S ∂ b = − 2 ∑ i = 1 n ( y i − ( a x i + b ) ) \frac{\partial S}{\partial b} = -2 \sum_{i=1}^{n} (y_i - (ax_i + b)) ∂b∂S=−2i=1∑n(yi−(axi+b))
令这两个偏导数等于零,我们得到两个方程:
∑ i = 1 n x i y i − a ∑ i = 1 n x i 2 − b ∑ i = 1 n x i = 0 ∑ i = 1 n y i − a ∑ i = 1 n x i − n b = 0 \begin{align*} \sum_{i=1}^{n} x_i y_i - a \sum_{i=1}^{n} x_i^2 - b \sum_{i=1}^{n} x_i &= 0 \\ \sum_{i=1}^{n} y_i - a \sum_{i=1}^{n} x_i - nb &= 0 \end{align*} i=1∑nxiyi−ai=1∑nxi2−bi=1∑nxii=1∑nyi−ai=1∑nxi−nb=0=0
这是一个线性方程组,我们可以通过求解这个方程组来找到 a 和 b 的值。
解线性方程组
我们可以将这个方程组表示为矩阵形式:
[ ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i n ] [ a b ] = [ ∑ i = 1 n x i y i ∑ i = 1 n y i ] \begin{bmatrix} \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\ \sum_{i=1}^{n} x_i & n \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix} = \begin{bmatrix} \sum_{i=1}^{n} x_i y_i \\ \sum_{i=1}^{n} y_i \end{bmatrix} [∑i=1nxi2∑i=1nxi∑i=1nxin][ab]=[∑i=1nxiyi∑i=1nyi]
解这个方程组,我们得到:
a = n ∑ i = 1 n x i y i − ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 b = ∑ i = 1 n x i 2 ∑ i = 1 n y i − ∑ i = 1 n x i ∑ i = 1 n x i y i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 \begin{align*} a &= \frac{n \sum_{i=1}^{n} x_i y_i - \sum_{i=1}^{n} x_i \sum_{i=1}^{n} y_i}{n \sum_{i=1}^{n} x_i^2 - \left(\sum_{i=1}^{n} x_i\right)^2} \\ b &= \frac{\sum_{i=1}^{n} x_i^2 \sum_{i=1}^{n} y_i - \sum_{i=1}^{n} x_i \sum_{i=1}^{n} x_i y_i}{n \sum_{i=1}^{n} x_i^2 - \left(\sum_{i=1}^{n} x_i\right)^2} \end{align*} ab=n∑i=1nxi2−(∑i=1nxi)2n∑i=1nxiyi−∑i=1nxi∑i=1nyi=n∑i=1nxi2−(∑i=1nxi)2∑i=1nxi2∑i=1nyi−∑i=1nxi∑i=1nxiyi
这就是最小二乘法的解,它给出了使得残差平方和最小的参数 a 和 b 的值。
当我们使用最小二乘法拟合一个二次函数时,模型可以表示为:
y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c
其中,a、b 和 c 是我们想要估计的参数。
目标函数
我们定义目标函数(或损失函数)为残差的平方和:
S ( a , b , c ) = ∑ i = 1 n ( y i − ( a x i 2 + b x i + c ) ) 2 S(a, b, c) = \sum_{i=1}^{n} (y_i - (ax_i^2 + bx_i + c))^2 S(a,b,c)=i=1∑n(yi−(axi2+bxi+c))2
我们的目标是找到 a、b 和 c 的值,使得 S(a,b,c) 最小。
推导
为了找到 S(a,b,c) 的最小值,我们需要对 a、b 和 c 分别求偏导数,并令这些偏导数等于零。
- 对 a 求偏导数:
∂ S ∂ a = − 2 ∑ i = 1 n x i 2 ( y i − ( a x i 2 + b x i + c ) ) = 0 \frac{\partial S}{\partial a} = -2 \sum_{i=1}^{n} x_i^2 (y_i - (ax_i^2 + bx_i + c)) = 0 ∂a∂S=−2i=1∑nxi2(yi−(axi2+bxi+c))=0
- 对 b 求偏导数:
∂ S ∂ b = − 2 ∑ i = 1 n x i ( y i − ( a x i 2 + b x i + c ) ) = 0 \frac{\partial S}{\partial b} = -2 \sum_{i=1}^{n} x_i (y_i - (ax_i^2 + bx_i + c)) = 0 ∂b∂S=−2i=1∑nxi(yi−(axi2+bxi+c))=0
- 对 c 求偏导数:
∂ S ∂ c = − 2 ∑ i = 1 n ( y i − ( a x i 2 + b x i + c ) ) = 0 \frac{\partial S}{\partial c} = -2 \sum_{i=1}^{n} (y_i - (ax_i^2 + bx_i + c)) = 0 ∂c∂S=−2i=1∑n(yi−(axi2+bxi+c))=0
这是一个线性方程组,我们可以通过求解这个方程组来找到 a、b 和 c 的值。
解线性方程组
我们可以将这个方程组表示为矩阵形式:
[ ∑ i = 1 n x i 4 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i 2 ∑ i = 1 n x i n ] [ a b c ] = [ ∑ i = 1 n x i 2 y i ∑ i = 1 n x i y i ∑ i = 1 n y i ] \begin{bmatrix} \sum_{i=1}^{n} x_i^4 & \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 \\ \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\ \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i & n \end{bmatrix} \begin{bmatrix} a \\ b \\ c \end{bmatrix}= \begin{bmatrix} \sum_{i=1}^{n} x_i^2 y_i \\ \sum_{i=1}^{n} x_i y_i \\ \sum_{i=1}^{n} y_i \end{bmatrix} ∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin abc = ∑i=1nxi2yi∑i=1nxiyi∑i=1nyi
解这个方程组,我们得到 a、b 和 c 的值。
a = ∣ ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i 2 ∑ i = 1 n x i n ∑ i = 1 n x i 2 y i ∑ i = 1 n x i y i ∑ i = 1 n y i ∣ ∣ ∑ i = 1 n x i 4 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i 2 ∑ i = 1 n x i n ∣ a = \frac{\begin{vmatrix} \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\ \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i & n \\ \sum_{i=1}^{n} x_i^2 y_i & \sum_{i=1}^{n} x_i y_i & \sum_{i=1}^{n} y_i \end{vmatrix}}{\begin{vmatrix} \sum_{i=1}^{n} x_i^4 & \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 \\ \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\ \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i & n \end{vmatrix}} \\ a= ∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin ∑i=1nxi3∑i=1nxi2∑i=1nxi2yi∑i=1nxi2∑i=1nxi∑i=1nxiyi∑i=1nxin∑i=1nyi
b = ∣ ∑ i = 1 n x i 4 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i 3 y i ∑ i = 1 n x i 2 y i ∑ i = 1 n x i y i ∣ ∣ ∑ i = 1 n x i 4 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i 2 ∑ i = 1 n x i n ∣ b = \frac{\begin{vmatrix}\sum_{i=1}^{n} x_i^4 & \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 \\\sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\\sum_{i=1}^{n} x_i^3 y_i & \sum_{i=1}^{n} x_i^2 y_i & \sum_{i=1}^{n} x_i y_i\end{vmatrix}}{\begin{vmatrix}\sum_{i=1}^{n} x_i^4 & \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 \\\sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\\sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i & n\end{vmatrix}} b= ∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin ∑i=1nxi4∑i=1nxi3∑i=1nxi3yi∑i=1nxi3∑i=1nxi2∑i=1nxi2yi∑i=1nxi2∑i=1nxi∑i=1nxiyi
c = ∣ ∑ i = 1 n x i 4 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i 2 y i ∑ i = 1 n x i 1 y i ∑ i = 1 n y i ∣ ∣ ∑ i = 1 n x i 4 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i 3 ∑ i = 1 n x i 2 ∑ i = 1 n x i ∑ i = 1 n x i 2 ∑ i = 1 n x i n ∣ c = \frac{\begin{vmatrix}\sum_{i=1}^{n} x_i^4 & \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 \\\sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\\sum_{i=1}^{n} x_i^2 y_i & \sum_{i=1}^{n} x_i^1 y_i & \sum_{i=1}^{n} y_i\end{vmatrix}}{{\begin{vmatrix}\sum_{i=1}^{n} x_i^4 & \sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 \\\sum_{i=1}^{n} x_i^3 & \sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i \\\sum_{i=1}^{n} x_i^2 & \sum_{i=1}^{n} x_i & n\end{vmatrix}}} c= ∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin ∑i=1nxi4∑i=1nxi3∑i=1nxi2yi∑i=1nxi3∑i=1nxi2∑i=1nxi1yi∑i=1nxi2∑i=1nxi∑i=1nyi
以上就是使用最小二乘法拟合二次函数的推导过程。这个过程与拟合线性函数类似,只是模型和方程的形式更复杂一些。