我们知道线性回归试图在数据点中找到一条最符合的直线。但到底是什么让一条直线“最符合”呢?我们如何量化某条直线与数据的拟合程度?我们需要一种方法来衡量给定直线相关的误差,或者说“成本”。这种衡量方法帮助我们比较不同的可能直线,并告诉学习算法如何调整直线以改进其拟合。可以这样考虑:对于我们绘制的穿过数据的任何一条直线,有些点会靠近直线,而另一些点可能会离得更远。实际数据点与我们的直线预测点之间的距离代表了该特定预测的误差。计算单个点的误差机器学习中,为找到表现最优的模型,需要量化模型预测误差的方法。特别是线性回归模型,目标是拟合一条最能代表数据的直线。那么,如何衡量一条直线与数据点的契合程度?如何判断哪条直线表现最优?这要求定义一种方式来量化给定直线的误差,或称为“成本”。这种度量标准有助于比较不同的潜在直线,并指导学习算法调整直线以改进其拟合效果。误差 = 实际值 - 预测值 误差 = $y_i - \hat{y}_i$这种差值通常被称为 残差。正残差表示预测过低,负残差表示预测过高。残差为零表示该数据点的预测是完美的。{"layout": {"title": {"text": "残差:单个点的误差"}, "xaxis": {"title": {"text": "特征 (例如:房屋大小)"}}, "yaxis": {"title": {"text": "目标 (例如:价格)"}}, "showlegend": false, "annotations": [{"x": 3.5, "y": 4.5, "ax": 3.5, "ay": 3.0, "xref": "x", "yref": "y", "axref": "x", "ayref": "y", "showarrow": true, "arrowhead": 2, "arrowcolor": "#fa5252", "font": {"color": "#f03e3e"}, "text": "误差 (残差)<br>y_i - \u0177_i"}, {"x": 3.5, "y": 3.0, "xref": "x", "yref": "y", "showarrow": false, "text": "\u0177_i (预测值)"}, {"x": 3.5, "y": 4.5, "xref": "x", "yref": "y", "showarrow": false, "text": "y_i (实际值)"}], "margin": {"l": 40, "r": 20, "t": 40, "b": 40}}, "data": [{"x": [1, 2, 3, 3.5, 4, 5, 6], "y": [1.5, 2.5, 2.0, 4.5, 3.5, 5.0, 5.5], "mode": "markers", "type": "scatter", "marker": {"color": "#4263eb", "size": 8}, "name": "数据点"}, {"x": [0, 7], "y": [1, 4.5], "mode": "lines", "type": "scatter", "line": {"color": "#adb5bd", "width": 2}, "name": "回归线"}, {"x": [3.5, 3.5], "y": [3.0, 4.5], "mode": "lines", "type": "scatter", "line": {"color": "#fa5252", "width": 2, "dash": "dash"}, "name": "误差线"}]}垂直虚线显示了一个数据点的误差(残差):实际值(蓝点)与直线预测值(灰线上的点)之间的差。聚合误差:成本函数我们需要一个单一的数字来概括训练集中 所有 数据点的 总 误差。简单地将单个误差 ($y_i - \hat{y}_i$) 相加并没有太大作用,因为正误差和负误差可能会相互抵消,即使直线拟合效果很差,也会给我们一个误导性的很小的总误差。一种常见的方法是:将每个单独误差平方: $(y_i - \hat{y}_i)^2$。这解决了抵消问题(平方总是非负的),并且对更大的误差给予比小误差更重的惩罚。误差为 2 变为 4,而误差为 10 变为 100。计算这些平方误差的平均值: 将所有平方误差相加,然后除以数据点的数量。这就得到了 均方误差 (MSE),这是回归问题中非常常用的成本函数。MSE 的公式是:$$ J(\theta_0, \theta_1) = \frac{1}{N} \sum_{i=1}^{N} (\hat{y}_i - y_i)^2 $$让我们分解说明:$N$: 训练集中的数据点总数。$i=1$: 我们从第一个数据点开始求和...$... N$: ...直到最后一个数据点。$\sum$: 求和符号,表示我们将每个点的结果相加。$y_i$: 第 $i$ 个数据点的实际目标值。$\hat{y}_i$: 我们的线性模型对第 $i$ 个数据点预测的值。请记住,对于简单线性回归,$\hat{y}_i = \theta_0 + \theta_1 x_i$(其中 $\theta_0$ 是截距,$\theta_1$ 是斜率,这些是我们的模型需要学习的参数)。$(\hat{y}_i - y_i)^2$: 第 $i$ 个数据点的平方误差。(注意:有时你会看到 $(y_i - \hat{y}_i)^2$,这在平方后结果相同)。$\frac{1}{N}$: 我们将平方误差的总和除以 $N$ 以获得 平均值。$J(\theta_0, \theta_1)$: 这表明 MSE 是模型参数 ($\theta_0$ 和 $\theta_1$) 的一个 函数。斜率和截距的不同值将导致不同的直线、不同的预测值 ($\hat{y}_i$),因此也会产生不同的 MSE 值。有时,特别是在统计学环境或其他课程中,你可能会看到公式中使用 $1/(2N)$ 而不是 $1/N$。因子 2 是为了在之后计算导数(特别是梯度下降)时便于数学运算而添加的,但这不会改变最小误差的位置。为了方便理解这个思想,$1/N$ 代表平均值通常更清楚。目标:最小化成本“均方误差为我们提供了一个单一的正值,它表示由特定参数 $\theta_0$ 和 $\theta_1$ 定义的直线与整体数据的拟合程度。完美拟合的 MSE 将为 0(尽管这在数据中很少发生)。拟合效果差的直线将具有较大的 MSE。”因此,我们学习算法的目标是 找到使 MSE 尽可能低的 $\theta_0$ 和 $\theta_1$ 值。最小化这个成本函数意味着找到一条直线,它在预测训练数据中的目标值时,平均而言会产生最小的平方误差。在下一节关于梯度下降的内容中,我们将看到算法 如何 系统地调整 $\theta_0$ 和 $\theta_1$ 以降低这个成本函数的值,从而有效地找到最符合的直线。