(十七)按记录配对计算均方误差
1. 预测、残差、平方与平均
自拟三条目标为 [2,4,6],预测为 [1,4,7]。残差用预测减目标,得到 [−1,0,1];平方后为 [1,0,1],平均为 2/3。平方让正负偏差不会互相抵消。
这叫均方误差(mean squared error,MSE)。n 是记录数,每个预测只和同一条记录的目标配对。
# 项目文件:demos/mse_shapes.py
# 同一条记录的预测与目标必须配对;一维目标和列形预测会扩展成全部组合。
import numpy as np
y = np.array([2.0, 4.0, 6.0])
prediction = np.array([1.0, 4.0, 7.0])
error = prediction - y
print(
"残差",
error.tolist(),
"平方",
(error**2).tolist(),
"均方",
float(np.mean(error**2)),
)
wrong = prediction[:, None] - y
print("错误配对形状", wrong.shape, "错误均方", float(np.mean(wrong**2)))两个一维数组都是 (3,),相减后仍是 (3,)。若预测改成 (3,1)、目标仍为 (3,),广播会生成 (3,3):每一个预测分别减去全部目标,错误均方约为 8.666667。计算前核对 shape,就是在核对“哪些记录正在相互配对”。