先修:01 模型、目标与假设;02 命题与条件;基础四则运算与平面坐标

把三个点画在纸上,再拿尺子比一比,似乎就能看见一条趋势线。可尺子稍微转动,或向上挪一点,也都说得过去。到底哪条线更好?数据会不会自己给出唯一答案?

从这一章起,我们研究怎样用少量可调的数,组织许多观测。先不急着学习新工具。把一个只有三个点的问题算透,就能看见:数据提供要求,模型规定能怎样回答,而评价标准决定怎样取舍。

从玩具读数开始

设想一件带滑杆和指针的玩具。我们想根据滑杆的位置x,估计指针的读数y,两者都以厘米计。下面是专为讲解设计的虚构数据,并非真实测量:

滑杆位置x指针读数y坐标点
01(0,1)
12(1,2)
22(2,2)

我们暂且尝试直线模型,把预测值写成ŷ=ax+b。ŷ读作“y帽”,用来区分模型给出的数与实际记录的y。a和b叫作参数,是可以调整、但一旦选定就要对所有观测共同使用的数。让它们取不同的数,就得到一整族候选直线。本章只在这个直线族里挑选,暂不考虑弯曲的预测函数。

a是斜率:x增加1厘米,预测读数改变a厘米;b是截距:x=0时,预测读数为b厘米。比如a=1、b=1给出ŷ=x+1。它说滑杆每向前1厘米,指针也前进1厘米,并且从读数1开始。

选择直线已经作了假设:我们愿意先用固定变化率,近似这一小段范围里的关系。玩具的真实结构可能并不这样工作;只有三个点,也不足以确认这种假设。

这里把滑杆位置放在横轴,指针读数放在纵轴,是因为我们先知道前者,想估计后者。若任务改成看着指针反推滑杆位置,输入和输出就换了角色,怎样比较偏差也要重想。读数不完全准确时,把一条拟合式倒过来,并不自动解决另一个拟合问题。

两个点给答案,第三个点提意见

先要求直线精确通过前两个点。

通过(0,1),必须有0×a+b=1,因此b=1。再通过(1,2),就有a+b=2,代入b=1,得到a=1。两条要求把参数确定成了一条线:ŷ=x+1。

拿第三个点检验:x=2时,模型给出3,记录却是2。因此这条线无法同时通过三个点。前两点已把a、b定死,也就不存在另一条直线,既满足前两点,又额外穿过第三点。

这里“两点确定直线”用于两个x不同的点。若x相同而y不同,同一个输入要求两个输出,就没有形如ŷ=ax+b的直线能同时满足。

换一对点会怎样?选第一点和第三点,仍有b=1,而2a+1=2给出a=1/2。这条线ŷ=x/2+1穿过两端,却在x=1时预测1.5,比中间记录低0.5。

同一组三点对应三条参数要求;前两点确定的直线A错过第三点,两端确定的直线B错过中间点

图1:左侧画的是数据与两条候选直线;右侧把“穿过一个点”翻译成对a、b的一条要求。三条要求不能同时成立。

这次翻译很重要。原来的问题是“尺子放在哪里”,现在变成了“怎样选同一对a、b,使b、a+b、2a+b尽量接近1、2、2”。一条数据给一个要求,要求多了,未必还能全部满足。

也不能因为第三条要求不合,就随手删掉第三点。它可能是一次需要核查的异常,也可能恰好提醒我们直线假设不够好。删数据需要来自测量过程的理由,不能只为了让计算更漂亮。暂时保留三个点,才有机会认真讨论怎样同时照顾它们。

把每次偏差都记下来

既然精确通过全部观测做不到,就得说明“尽量接近”是什么意思。

对每个点,计算r=y−ŷ,叫作残差。它记录观测值比预测值多多少:r为正,预测偏低;r为负,预测偏高;r为0,恰好一致。比如直线A在第三点的残差为2−3=−1。1

图上比较的是同一个x处上下两个位置之间的差,竖线长度是残差的绝对值。这里没有沿垂直于斜线的方向量最短距离,因为我们的任务是给定x,预测y,暂把滑杆位置当作已知输入。若x本身也测得不准,需要重新考虑误差怎样定义。

把两条候选记作A、B。B的三个残差是0、1/2、0,平均为1/6,说明这三处预测平均偏低1/6厘米。可以先保持斜率1/2,只把整条B向上移1/6厘米,让偏差在上下两侧分担。截距于是从1变成7/6,得到候选C:ŷ=x/2+7/6。

上移之后,每个预测都增加1/6,每个残差就减少1/6,所以新残差为−1/6、1/3、−1/6。这只是提出候选的一个可解释尝试,是否改善仍要选定标准再算。下表按同一顺序保留所有预测与残差,后面几章还会用到。

xyA预测A残差B预测B残差C预测C残差
0110107/6−1/6
12203/21/25/31/3
223−12013/6−1/6

A的参数为(1,1),B为(1/2,1),C为(1/2,7/6),括号内依次是a、b。

注意C没有精确穿过任何一个观测点。这并不妨碍它成为值得考虑的候选:是否穿过更多点,与是否总体更接近,是不同的问题。

为什么不把正负残差直接相加

对C来说,三个残差之和是−1/6+1/3−1/6=0。若把0理解成“完全准确”,就与表中每一项都不为0的事实冲突了。

更明显的反例是水平线ŷ=5/3。它的三个残差为−2/3、1/3、1/3,加起来也等于0。但第一个点已偏离2/3厘米,远大于C在该处的1/6厘米。正负相加只是在抵消方向,不能可靠地衡量偏差大小。

一种常见办法是先把每个残差平方,再求和。这个总数叫残差平方和,也常记作SSE。对本章的数据,它是关于参数的一个式子:

SSE(a,b)=(1−b)²+2−(a+b)²+2−(2a+b)²。

式子中的三项各自对应一个观测,所有项都非负。它等于0,当且仅当每个残差都为0;正负偏差再也不能互相抹掉。

我们还隐含地让每条记录具有相同分量:同样大小的残差,落在哪个位置都贡献同样的分数。如果某些读数更可靠,或者某些位置的准确性更重要,就要另行说明怎样加重它们的分量。本章先不加权,让三条记录平等参与比较。

逐项核算,A得到0²+0²+(−1)²=1;B得到0²+(1/2)²+0²=1/4;C得到1/36+1/9+1/36=1/6。刚才那条水平线的平方和则为4/9+1/9+1/9=2/3。

A、B、C在相同尺度下的竖直残差;A只错一个点,B也只错一个点,C三个点都有小偏差,但平方和最小

图2:实心点是观测,空心点是对应预测。竖线表示残差的大小;图中平方和只比较这三个候选。

于是,按平方和评判,B优于A,C又优于B。只比较A、B就把B叫作“最佳拟合线”,会漏掉已经摆在眼前的C。要说某条线在全部可能的直线中最好,需要排除所有其他a、b,而不能只赢过几个对手。

在全部候选中寻找残差平方和最小的参数,叫作最小二乘拟合。2 这个例子的答案确实是C,第17章会给出它的几何证明。本章的计算已经证明三者的高下,还没有完成那个全局证明。

换一种损失,选择也会变

把偏差汇总成一个待压低的分数,叫作选择损失标准。平方和是一种选择:同样方向或相反方向都计入,偏差从1变成2时,贡献从1变成4,所以较大的偏差受到更重的惩罚。

但“不能正负抵消”并不强迫我们一定用平方。也可以把残差的绝对值相加,称作绝对误差和;或者只盯住最大的绝对残差,称作最大误差。前者累计每处偏离,后者关注最差的一处。

仍看B、C。B的绝对误差和为1/2,C为1/6+1/3+1/6=2/3,因此这一标准更喜欢B。若看最大误差,B为1/2,C为1/3,又是C更好。

B与C的三种损失对照:平方和偏好C,绝对误差和偏好B,最大误差偏好C;各列采用不同标准,单位按列标明,不能跨列混比分数

图3:每列只在同一损失内比较上下两条线,数值越小越好。这不是在寻找各标准下的全局最优解。

平方误差并非普遍正确。如果一次很大的偏差尤其昂贵,平方惩罚可能有用;如果只关心最坏偏差是否越过容许范围,最大误差更直接。还要留意,少数异常读数可能对平方和产生很大影响,选择标准之前应先理解读数为何异常。

y以厘米计,残差也以厘米计,平方和的单位便是平方厘米,不能把SSE=1/6读成“总共错了1/6厘米”。若把y统一改用毫米,残差数值乘10,平方和乘100,同一标准下候选的排序不变。

比较时还必须使用同一组观测。多记几次读数,平方和通常也会跟着改变,不能把不同样本数量下的总和直接当作公平的精度比较。眼前的三个候选都面对这三条记录,才可以逐项相对照。

拟合以后,回到玩具上

用C估计滑杆在1.5厘米时的读数,代入得到3/4+7/6=23/12厘米,约为1.92厘米。这处输入在已有的0至2厘米范围内,但仍是未被这三条记录直接验证的预测。

若问x=10时呢?公式照样算出37/6厘米,约6.17厘米。把模型用于观测范围之外,叫作外推。算式不会提醒我们:滑杆可能已经抵达限位,指针可能卡住,变化率也可能早就改变。范围内的近似关系,不能自动延伸到范围外。2

残差也不等于测量仪器的误差。它可能混合了读数取整、装置每次运行的波动,以及直线模型遗漏的弯曲关系。仅凭这三个数,无法把这些原因分开,更不能据此宣布装置真的按C运行。

每个位置只记一次,还看不出同一位置的读数是否稳定。多次重复测量,以及在中间补测一些位置,都可能改变我们对这条趋势的判断。有限的观测能约束模型,却没有替模型覆盖所有未测过的情形。

拟合评价的是已经用来选参数的观测,预测关心尚未见到的结果。在旧数据上分数很小,不自动保证新数据上也小;因为参数原本就是照着旧数据挑的。要判断能否推广,应该取得没有参与选线的新读数,再检查偏差。3 三个点可以教我们怎样算,却远不足以给这件玩具作可靠的精度保证。

回看整个过程,我们从玩具上取出三个坐标点,把“穿过点”改写为参数要求;要求不相容时,用事先讲明的损失衡量妥协;得到预测后,再回到使用范围和实际测量中检验。

还有一个结构值得带走:调b时,三个预测一起增加同样的量;调a时,它们分别增加0倍、1倍、2倍的量。我们只有两个调节旋钮,不能任意独立修改三个预测。还能从四则运算看出一个限制:对于等间隔的0、1、2,中间预测a+b永远等于两端预测b与2a+b的平均数。而本章观测的中间值是2,两端平均却是1.5。这把刚才的“不相容”又解释了一遍:数据没有满足这组直线预测必有的关系。

下一章会把这些成组的数当作整体,看看“能调出的所有结果”究竟有什么形状。

顺手试一下

题目1: 加入候选D,ŷ=x/2+5/4。写出它在三点的预测、残差与SSE,并与C比较平方和、最大误差。能否仅凭这次比较,断言D在最大误差标准下全局最优?

**提示:**先统一用分数计算,再取残差绝对值。

**参考答案:**预测依次为5/4、7/4、9/4;残差为−1/4、1/4、−1/4。SSE=3/16,大于C的1/6,所以平方和更喜欢C;D的最大误差为1/4,小于C的1/3。仅比较两条线不足以证明全局最优,还要对全部候选给出理由。

题目2: 若第三条记录改为(2,3),能否找到精确通过三点的直线?这样是否就可以保证x=10时预测准确?

**提示:**先解前两个点给出的参数,再分别检验“第三点”和“未见过的位置”。

**参考答案:**前两点仍给出a=1、b=1;第三点现在也满足ŷ=x+1,三个残差全为0。x=10时公式给11,但零拟合残差只描述这三条记录,不能证明远处仍保持相同关系。

参考与延伸

1 加州大学伯克利分校教材,Adhikari、DeNero、Wagner,《Computational and Inferential Thinking》,15.5 Visual Diagnostics。核对残差的定义与沿y方向比较观测、预测的含义。

2 莱斯大学OpenStax,Illowsky、Dean,《Introductory Statistics 2e》,12.3 The Regression Equation。核对最小二乘准则与观测范围之外预测的限制;该书参数字母顺序与本文不同。

3 卡内基梅隆大学课程36-350,Training and Testing Errors。核对用于拟合的数据上的误差与新数据预测误差的区别。

本文使用虚构教学读数,算例展开与图解由本系列独立编排;以上资料用于核对概念。这组三点数据的平移同形算例也见于MIT最小二乘讲义,第17章一并注明。


作者:Jiancheng Wang · 数学之美(独立原创)