最小二乘法是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。这种方法在统计学、工程学和机器学习中被广泛使用,特别是在线性回归分析中。以下是最小二乘法的原理和详细推导。

原理

最小二乘法的基本思想是找到一组参数,使得模型预测值与实际观测值之间的差异(残差)的平方和最小。这种方法假设误差是随机的,并且服从正态分布,误差的期望值为零。

问题表述

假设我们有一组观测数据 (xi,yi)(x_i,y_i)(xi,yi),其中 i=1,2,…,n。我们想要找到一个模型(例如线性模型)来拟合这些数据。对于线性模型,我们可以表示为:

y=ax+b y=ax+b y=ax+b

其中,ab 是我们想要估计的参数。

目标函数

我们定义目标函数(或损失函数)为残差的平方和:

S(a,b)=∑i=1n(yi−(axi+b))2 S(a, b) = \sum_{i=1}^{n} (y_i - (ax_i + b))^2 S(a,b)=i=1n(yi(axi+b))2

我们的目标是找到 ab 的值,使得 S(a,b) 最小。

推导

为了找到 S(a,b) 的最小值,我们需要对 ab 分别求偏导数,并令这些偏导数等于零。

  1. a 求偏导数:

∂S∂a=−2∑i=1nxi(yi−(axi+b)) \frac{\partial S}{\partial a} = -2 \sum_{i=1}^{n} x_i (y_i - (ax_i + b)) aS=2i=1nxi(yi(axi+b))

  1. b 求偏导数:

∂S∂b=−2∑i=1n(yi−(axi+b)) \frac{\partial S}{\partial b} = -2 \sum_{i=1}^{n} (y_i - (ax_i + b)) bS=2i=1n(yi(axi+b))

令这两个偏导数等于零,我们得到两个方程:

∑i=1nxiyi−a∑i=1nxi2−b∑i=1nxi=0∑i=1nyi−a∑i=1nxi−nb=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=1nxiyiai=1nxi2bi=1nxii=1nyiai=1nxinb=0=0

这是一个线性方程组,我们可以通过求解这个方程组来找到 ab 的值。

解线性方程组

我们可以将这个方程组表示为矩阵形式:

[∑i=1nxi2∑i=1nxi∑i=1nxin][ab]=[∑i=1nxiyi∑i=1nyi] \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=1nxi2i=1nxii=1nxin][ab]=[i=1nxiyii=1nyi]

解这个方程组,我们得到:

a=n∑i=1nxiyi−∑i=1nxi∑i=1nyin∑i=1nxi2−(∑i=1nxi)2b=∑i=1nxi2∑i=1nyi−∑i=1nxi∑i=1nxiyin∑i=1nxi2−(∑i=1nxi)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=ni=1nxi2(i=1nxi)2ni=1nxiyii=1nxii=1nyi=ni=1nxi2(i=1nxi)2i=1nxi2i=1nyii=1nxii=1nxiyi

这就是最小二乘法的解,它给出了使得残差平方和最小的参数 ab 的值。

当我们使用最小二乘法拟合一个二次函数时,模型可以表示为:

y=ax2+bx+c y=ax^2+bx+c y=ax2+bx+c

其中,abc 是我们想要估计的参数。

目标函数

我们定义目标函数(或损失函数)为残差的平方和:

S(a,b,c)=∑i=1n(yi−(axi2+bxi+c))2 S(a, b, c) = \sum_{i=1}^{n} (y_i - (ax_i^2 + bx_i + c))^2 S(a,b,c)=i=1n(yi(axi2+bxi+c))2

我们的目标是找到 abc 的值,使得 S(a,b,c) 最小。

推导

为了找到 S(a,b,c) 的最小值,我们需要对 abc 分别求偏导数,并令这些偏导数等于零。

  1. a 求偏导数:

∂S∂a=−2∑i=1nxi2(yi−(axi2+bxi+c))=0 \frac{\partial S}{\partial a} = -2 \sum_{i=1}^{n} x_i^2 (y_i - (ax_i^2 + bx_i + c)) = 0 aS=2i=1nxi2(yi(axi2+bxi+c))=0

  1. b 求偏导数:

∂S∂b=−2∑i=1nxi(yi−(axi2+bxi+c))=0 \frac{\partial S}{\partial b} = -2 \sum_{i=1}^{n} x_i (y_i - (ax_i^2 + bx_i + c)) = 0 bS=2i=1nxi(yi(axi2+bxi+c))=0

  1. c 求偏导数:

∂S∂c=−2∑i=1n(yi−(axi2+bxi+c))=0 \frac{\partial S}{\partial c} = -2 \sum_{i=1}^{n} (y_i - (ax_i^2 + bx_i + c)) = 0 cS=2i=1n(yi(axi2+bxi+c))=0

这是一个线性方程组,我们可以通过求解这个方程组来找到 abc 的值。

解线性方程组

我们可以将这个方程组表示为矩阵形式:

[∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin][abc]=[∑i=1nxi2yi∑i=1nxiyi∑i=1nyi] \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=1nxi4i=1nxi3i=1nxi2i=1nxi3i=1nxi2i=1nxii=1nxi2i=1nxin abc = i=1nxi2yii=1nxiyii=1nyi

解这个方程组,我们得到 abc 的值。

a=∣∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin∑i=1nxi2yi∑i=1nxiyi∑i=1nyi∣∣∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin∣ 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=1nxi4i=1nxi3i=1nxi2i=1nxi3i=1nxi2i=1nxii=1nxi2i=1nxin i=1nxi3i=1nxi2i=1nxi2yii=1nxi2i=1nxii=1nxiyii=1nxini=1nyi

b=∣∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi3yi∑i=1nxi2yi∑i=1nxiyi∣∣∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin∣ 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=1nxi4i=1nxi3i=1nxi2i=1nxi3i=1nxi2i=1nxii=1nxi2i=1nxin i=1nxi4i=1nxi3i=1nxi3yii=1nxi3i=1nxi2i=1nxi2yii=1nxi2i=1nxii=1nxiyi

c=∣∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2yi∑i=1nxi1yi∑i=1nyi∣∣∑i=1nxi4∑i=1nxi3∑i=1nxi2∑i=1nxi3∑i=1nxi2∑i=1nxi∑i=1nxi2∑i=1nxin∣ 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=1nxi4i=1nxi3i=1nxi2i=1nxi3i=1nxi2i=1nxii=1nxi2i=1nxin i=1nxi4i=1nxi3i=1nxi2yii=1nxi3i=1nxi2i=1nxi1yii=1nxi2i=1nxii=1nyi

以上就是使用最小二乘法拟合二次函数的推导过程。这个过程与拟合线性函数类似,只是模型和方程的形式更复杂一些。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐