回归:从直线到曲面

从已知房子的成交价,预测另一套房子值多少。

同一批 56 套模拟房子

每个蓝点是一套已成交房子。面积用 ㎡,房龄用年,价格用万元。

教学模拟
换一批模拟数据

已成交房子预测直线待预测房子点选蓝点,查看这套房子的记录。

放入一套待预测的房子

沿面积找到线,读出价格
—万元

与这批已成交价平均相差
—万元

这是对已知数据的贴合程度。

文字版:回归:从直线到曲面在做什么

回归要回答的是「给一个数,猜另一个数」:知道一套房子的面积和房龄,猜它值多少钱。这一页用同一批模拟成交记录,把直线、曲线、平面、曲面四种拟合方式摆在一起对比,让你看清「多加一个特征」和「让线弯起来」分别改变了什么。

画面上正在发生什么

蓝点是已成交的房子,横轴是面积,纵轴是成交价。拟合出的那条线不是画上去的,是按最小二乘法实时算出来的——它在找一条让所有点到线的竖直距离的平方和最小的线。打开「显示猜错的差距」,每个点到线的那一小段竖线就是它被猜错了多少。

切到三维,纵轴仍是价格,多出来的一个横轴是房龄。这时拟合出来的不再是线而是一个平面:价格同时随面积和房龄变化。切换直线与曲线时所有蓝点都留在原处,变的只是模型,不是数据。

什么时候它会骗你

  • 曲线更贴合,不等于预测更准。页面上曲线对已知点的平均偏差确实比直线小,但那是对已经看过的点。次数调得越高,线越会绕着每个点走,把这批数据里的噪声也当成规律学了进去——换一批新房子往往更差。这就是过拟合,靠「拟合得好不好」这一个数字永远看不出来。
  • 看不见的那些因素,都被塞进了系数里。模型只知道你给它的那几列。学区、楼层、朝向没有进来,它们的影响就会被硬摊到面积和房龄的系数上,让系数看起来比真实作用更大。
  • 外推是另一回事。在已有点的范围内读数还算可靠;把面积拖到远超样本范围的地方,那一段线没有任何数据支撑,读出来的价格只是公式的延伸。

常见问题

拟合成曲线,就不是线性回归了吗?
不一定。「线性」指模型对待估计系数是线性的,不要求图像一定是直线。本页加入输入的平方、立方等特征后,虽然能拟合曲线,仍属于对系数线性的多项式回归。
为什么用平方误差而不是直接用差的绝对值?
平方误差便于求导,并会更重地惩罚较大的偏差;因此也更容易受离群点影响。系数解是否唯一取决于设计矩阵是否满列秩,不能仅凭损失可导就保证唯一或稳定。
多加一个特征,模型一定变好吗?
对已知数据的贴合程度只会变好或持平,永远不会变差——这正是不能只看它的原因。真正要看的是在没参与训练的数据上表现如何,例如本站「交叉验证」那一页的做法。

参考资料

本页为教学模拟数据,价格、面积与房龄均非真实成交记录;拟合系数由页面按最小二乘法当场计算。

作者与维护:覃秉丰 · 关于覃秉丰 · 引用本页讲解

继续学习