一元线性回归推导最小二乘法
时间: 2025-01-04 21:30:38 浏览: 10
### 一元线性回归中的最小二乘法推导
在一元线性回归中,目标是找到一条直线来最好地描述两个变量 \( x \) 和 \( y \) 之间的关系。这条直线可以用下面的方程表示:
\[ y = wx + b \]
其中:
- \( w \) 是斜率,
- \( b \) 是截距。
为了使模型尽可能好地拟合数据集,需要定义一种衡量标准来评估不同参数组合下的误差大小。常用的方法是最小化残差平方和 (RSS),也称为最小二乘法。具体来说,对于给定的数据点集合 \( {(x_i, y_i)}_{i=1}^{n} \),希望找到最优的 \( w \) 和 \( b \),使得所有样本点到该直线的距离之和最小[^1]。
#### 定义损失函数
设实际观测值为 \( y_i \),而根据当前假设得到的预测值为 \( \hat{y}_i = wx_i + b \),则第 i 个样本对应的残差 e 可以写作:
\[ e_i = y_i - (\widehat{wx_i+b}) \]
因此,整个训练集中所有样本的总误差 E(w,b) 表达如下:
\[ E(w,b)=\sum_{i=1}^ne_i^2=\sum_{i=1}^n(y_i-(wx_i+b))^2 \]
这个表达式就是所谓的 **均方误差** 或者说 **残差平方和** ,它用来度量我们的模型与真实情况之间差距的程度[^2]。
#### 寻找最佳参数
为了让上述公式达到极小值,可以通过对 \( w \) 和 \( b \) 分别求偏导数,并令其等于零来进行优化操作。这样做的目的是让这些参数能够最大程度上减小整体误差。下面是具体的计算过程:
针对 \( w \):
\[ \frac{\partial}{\partial w}\left[\sum_{i=1}^{n}(y_i-wx_i-b)^2\right]=0 \]
展开后简化可得:
\[ 2\cdot(-)\sum_{i=1}^{n}x_ie_i=-2\sum_{i=1}^{n}x_i(y_i-wx_i-b)=0 \]
进一步整理得出关于 \( w \) 的正规方程形式:
\[ nwb+\sum_{i=1}^{n}bx_i-\sum_{i=1}^{n}xy_i+w\sum_{i=1}^{n}x_i^2=0 \]
同理,针对 \( b \):
\[ \frac{\partial}{\partial b}\left[\sum_{i=1}^{n}(y_i-wx_i-b)^2\right]=0 \]
最终获得另一个正规方程:
\[ nb+\sum_{i=1}^{n}wx_i-\sum_{i=1}^{n}y_i=0 \]
联立这两个方程式即可解出 \( w \) 和 \( b \)[^3]。
通过以上步骤完成了一元线性回归里最小二乘法公式的理论证明。当有了具体的数值之后就可以带入相应的公式去估算未知系数了。
```python
import numpy as np
def compute_coefficients(X, Y):
""" 计算简单线性回归的最佳拟合线 """
mean_x = np.mean(X)
mean_y = np.mean(Y)
num = sum((X-mean_x)*(Y-mean_y))
den = sum(pow((X-mean_x), 2))
slope = num / den
intercept = mean_y - slope*mean_x
return slope, intercept
```
阅读全文