我们将详细讲解简单线性回归的数学原理,通过一个具体的例子一步一步推导最后结果。
假设我们有以下数据点(x,y),表示房屋面积(x)与房价(y)之间的关系:
x | y |
---|---|
1 | 2 |
2 | 3 |
3 | 4 |
4 | 5 |
我们要找到一条直线 y = a * x + b,使得预测值与实际值之间的误差最小。这里的误差可以用均方误差(MSE)来表示:
MSE = (1 / n) * ∑(y_i - (a * x_i + b))^2其中,n 是数据点的个数,y_i 和 x_i 分别是实际值和特征值。
我们的目标是找到 a 和 b 的值,使得 MSE 最小。为了实现这个目标,我们需要计算 MSE 对 a 和 b 的偏导数,并令它们等于零。这是因为当梯度为零时,函数达到极值。
首先,计算偏导数:
d(MSE) / da = (-2 / n) * ∑(y_i - (a * x_i + b)) * x_i d(MSE) / db = (-2 / n) * ∑(y_i - (a * x_i + b))现在,我们需要找到 a 和 b 的值,使得这两个偏导数等于零:
∑(y_i - (a * x_i + b)) * x_i = 0 ∑(y_i - (a * x_i + b)) = 0我们可以将这两个方程重写为:
∑(y_i * x_i) - a * ∑(x_i^2) - b * ∑(x_i) = 0 ∑(y_i) - a * ∑(x_i) - b * n = 0接下来,我们可以将这两个方程组用 a 和 b 表示,然后求解:
a = (∑(x_i * y_i) - (∑(x_i) * ∑(y_i)) / n) / (∑(x_i^2) - (∑(x_i))^2 / n) b = (1 / n) * ∑(y_i) - a * (1 / n) * ∑(x_i)将我们的数据点代入这两个方程,得到:
a = ((1 * 2 + 2 * 3 + 3 * 4 + 4 * 5) - (1 + 2 + 3 + 4) * (2 + 3 + 4 + 5) / 4) / ((1^2 + 2^2 + 3^2 + 4^2) - (1 + 2 + 3 + 4)^2 / 4) = 1 b = (1 / 4) * (2 + 3 + 4 + 5) - 1 * (1 / 4) * (1 + 2 + 3 + 4) = 1因此,我们找到了最佳的 a 和b 值,使得线性回归模型的预测误差最小。这个简单线性回归模型的方程为:
y = a * x + b = 1 * x + 1在这个例子中,我们发现房价(y)与房屋面积(x)之间的关系为 y = x + 1。这意味着,当房屋面积增加一个单位时,房价将增加一个单位。
通过这个例子,我们可以看到线性回归的数学原理是通过最小化预测误差(MSE)来找到最佳的直线方程。我们通过计算 MSE 对 a 和 b 的偏导数,并将它们设为零,从而求解 a 和 b 的最优值。最后得到一个可以预测房价和房屋面积之间关系的线性方程。
现在,我们可以使用这个线性回归模型来预测新数据点上的房价。例如,假设我们有一个房屋面积为 5 的新房子,我们可以将这个值代入我们的模型:
预测房价 = 1 * 5 + 1 = 6
所以,对于面积为 5 的房子,我们预测其房价为 6。
需要注意的是,这里我们只讨论了简单线性回归的情况,即只有一个特征变量。对于多元线性回归,我们需要考虑多个特征变量,但求解过程仍然类似。我们需要通过最小化预测误差来求解多个权重参数,从而得到一个可以预测目标变量与多个特征变量之间关系的线性方程。
Python代码实现见:MLearnPractice/lineRegr.py