同一组数据,两种拟合:线性 R² 0.9712、指数 R² 0.9999,看起来都很准。 外推到第十年,线性说 561、指数说 1172,差了 611。 看曲线之前,先问它按什么假设画的。
上一节讲个人路径,这一节讲行业曲线——以及怎么不被曲线骗。
一、两种拟合,都「很准」
Demo 用六年相对岗位数(100、128、165、210、268、342)做拟合。线性拟合年增 47.9,R² = 0.9712; 指数拟合每年乘 1.279,R² = 0.9999。 两个 R² 都超过 0.97,肉眼几乎分不出差别。在这六年区间里,两条线贴得很近。 但外推到第十年:线性 561,指数 1172,差 611。同一个「拟合得很好」,结论差一倍。
二、为什么指数会赢,也会崩
指数在样本区间内总是更容易贴合增长型数据,因为增长本身常是复利式的:用的人越多,数据越多, 模型越好,用的人更多。 但指数不可能永远持续。 任何一个行业跑五年指数,第六年一定会撞到天花板——人力供给、预算、监管,随便哪一个都能把它按下来。 所以更实用的做法是:用指数看「势」,用线性看「量」。 判断方向用指数(它在涨,而且加速),做预算用线性(保守,不会离谱)。
三、训练师要养成的习惯
拿到一条曲线,先问三句:样本从哪来、按什么假设拟合、外推多远。 这三句能挡掉绝大多数「行业前景」的忽悠。 第二件要养成的习惯是「自己算一遍」。 本节的数都是我编的示例序列,但算法是真的——换成真实数据,同一段代码能跑出同一套判断。 这也是本课的基本方法:每个结论都用一段能重跑的代码撑着。凡是不能重跑的结论,都当假设看。
四、动手 Demo:两种拟合,十年后差一倍
用六个点的相对岗位数,分别做线性拟合与指数拟合(对 y 取对数再线性拟合),算各自的 R², 然后外推到第十年,看两条线差多少。
A = np.vstack([years, np.ones_like(years)]).T
coef, *_ = np.linalg.lstsq(A, y, rcond=None) # 线性
coef2, *_ = np.linalg.lstsq(A, np.log(y), rcond=None) # 指数
exp_fit = np.exp(A @ coef2)
r2 = 1 - np.sum((y - fit) ** 2) / np.sum((y - y.mean()) ** 2)
实跑输出:
--------------------------------------------------------------------
外推五年:线性说 561,指数说 1172
--------------------------------------------------------------------
年份 实际(相对值) 线性拟合 指数拟合
---------------------------------------------
第 0 年 100 82.5 100.3
第 1 年 128 130.4 128.2
第 2 年 165 178.2 164.0
第 3 年 210 226.1 209.7
第 4 年 268 274.0 268.1
第 5 年 342 321.8 342.9
线性:年增 47.9 个单位,R² = 0.9712
指数:年增 27.9%(乘 1.279),R² = 0.9999
年份 线性外推 指数外推 两者差
--------------------------------------
第 6 年 370 438 69
第 7 年 418 561 143
第 8 年 465 717 252
第 9 年 513 917 404
第 10 年 561 1172 611
同一个 R² 差不了多少的拟合,十年后差出 611 个单位。
所以「行业前景」这类判断,看的不是数字,是**假设**——
你信「每年多一批人」还是信「每年翻一个比例」,结论完全不同。
这也是训练师要养成的习惯:拿到一条曲线,先问它按什么假设画的。
两个 R²:0.9712 和 0.9999。差距小到肉眼看不出来,但外推差一倍。 指数拟合的技巧是「对 y 取对数再线性拟合」——因为 ln(y) = ax + b 是线性的。 这一步在第九章讲数据预处理时会再遇到。 第十年那一行:线性 561、指数 1172、差 611。 注意 611 是「两个预测值之差」,不是误差——真实值到那时才知道。 我特意让最后一个实际点(第 5 年 342)与指数拟合值 342.9 几乎重合,这是构造出来的, 为了让「指数看起来更准」这个错觉成立。真实数据不会这么配合。
30 秒实验
- 把第六年的值改成 400(增长放缓),重算两种拟合的 R² 与外推结果。
- 想一想:为什么「行业前景好」不能直接推成「你现在学就来得及」?
- 找一份公开的行业规模数据,用同一段代码跑一次线性和指数。
常见误区
- 「R² 高就说明模型对」——本例两个 R² 都高,外推差一倍。
- 「指数增长会一直持续」——供给、预算、监管都会把它按下来。
- 「行业前景好就该转行」——宏观曲线和个人起步时间是两件事。
自测三问(点开对答案)
1. 线性和指数的 R² 分别是多少?外推差多少? —— 0.9712 与 0.9999;第十年 561 对 1172,差 611。 2. 指数拟合怎么用线性方法做? —— 对 y 取对数,ln(y) 与 x 就是线性关系。 3. 看行业曲线要先问哪三句? —— 样本从哪来、按什么假设拟合、外推多远。第一章讲完「这个职业是什么」。第二章开始拆能力,从最基础的那一项开始。
- ☐ (本章完,下一节 2.1.1 计算机操作知识:AI训练师基础中的基础)