
第一章 预测这件事,普通人也能做
你是不是也遇到过这种事:下个月库存备多少?下周的访问量会不会爆?店铺销量到底拐点在哪?
过去,预测是数据科学家的专利。又要懂 ARIMA,又要调 XGBoost,没个硕士学历根本摸不着门。
但 8 月 16 号,Google 把自家的时间序列基础模型 TimesFM 开源了。训练用了超过 1000 亿个数据点,关键是——完全免费、能本地跑、零样本预测。你不用懂数学,喂一段历史数据进去,它就吐出未来曲线。
今天圈圈带你把这玩意儿从安装到实战跑通。看完你会发现:预测,真没那么玄。
第二章 TimesFM 到底是什么来头
先搞懂一个词:基础模型(Foundation Model)。跟 ChatGPT 是文本的基础模型一样,TimesFM 是”时间序列的基础模型”。
传统预测麻烦在哪?每一条序列都要单独建模、单独训练。一百个商品,得训一百个模型。累死。
TimesFM 不一样。它在上亿条真实序列上预训练过,学会了”时间”这件事的通用规律。等你拿到一条从没见过的新数据,它不用重新训练,直接预测。这叫零样本(zero-shot)。
它用的是 decoder-only 架构,跟大语言模型同源。把数值切成小段、量化成词表,再用 Transformer 生成”未来”。最新版 TimesFM 2.5 只有 2 亿参数,上下文长达 1.6 万步,还支持分位数预测——不光给你一个点,还给你一个置信区间。这才叫专业。
第三章 10分钟装好,本地就能跑
最香的一点:它不吃显卡也能跑,普通笔记本就行。装起来就一行:
pip install timesfm想用 PyTorch 完整版(支持外部变量),装这个:
pip install timesfm[torch]然后从 Hugging Face 拉模型。官方推荐 google/timesfm-2.5-200m-pytorch,才 2 亿参数,下载飞快:
import timesfm
model = timesfm.TimesFM_2p5_200M_torch.from_pretrained(
"google/timesfm-2.5-200m-pytorch")
model.compile(timesfm.ForecastConfig(
max_context=1024, max_horizon=256, normalize_inputs=True))没有 GPU?加个 --cpu 参数,慢点但能跑。想白嫖算力,Google Colab 挂个免费 T4 直接上手。门槛低到离谱。

第四章 第一次预测:拿历史数据喂进去
模型就绪,来个真实预测。假设你有一组过去 100 天的数值,想看未来 12 步怎么走:
import numpy as np
vals = np.linspace(0, 1, 100) # 你的真实历史数据
point, quant = model.forecast(horizon=12, inputs=[vals])
lower, median, upper = quant[0,:,1], point[0], quant[0,:,9]就这三行,未来 12 步的预测就出来了。而且 quant 给的是分位数:quant[0,:,1] 是下沿,quant[0,:,9] 是上沿,中间 median 是基准线。
这意味着什么?你拿到的不是一根孤零零的线,而是一条带”可信区间”的带子。老板问”最差会怎样”,你直接把下沿甩过去。这才叫能交代。

第五章 真实场景:预测销量和流量
光跑 demo 没意思,来点真用场。最常见的两个:销量预测和流量预测。
假设你有某商品每天的销售记录(CSV,一列日期一列销量)。读进来、排序、转成浮点数组,直接喂:
import pandas as pd
df = pd.read_csv("sales.csv", parse_dates=["date"]).sort_values("date")
vals = df["value"].astype("float32").to_numpy()
point, quant = model.forecast(horizon=30, inputs=[vals])30 天后的销量曲线就出来了。更狠的是 TimesFM 2.5 支持外部变量(covariates)——比如你知道下个月要搞促销、要涨价,把这些”已知未来”一起喂进去,预测会更准。这叫 XReg,零售和能源场景直接起飞。
提醒一句:数据要等间隔,一行一个周期,空缺用 NaN 别删行。上下文越长通常越准,但别超过模型上限。
第六章 进阶玩法:置信区间与异常检测
会用预测只是入门,会用”区间”和”异常”才是高手。
置信区间做预警:别只盯那个点。拿上下沿去做告警——一旦真实值跌破下沿,说明情况异常,立刻发通知。这比设死阈值聪明多了。
异常检测:TimesFM 还能反过来用。先对历史做线性去趋势,再用 Z-score 找离群点,最后用预测的分位数区间框住正常波动。某个月的销量突然被标红?八成是数据错了或者真出事了。
回测别偷懒:上生产前,用滚动原点回测(rolling-origin backtest),拿 MASE 指标跟”季节朴素法”比一比。基础模型在平均意义上赢,但强趋势、短数据它可能输给老方法。先验证再上线,别盲信。
第七章 避坑清单与总结
圈圈给你一份实战避坑清单:
- 数据不等间隔:这是头号坑。缺的天补 NaN,别直接删行,否则时间轴错位全错。
- 把动态字段放 prompt 前缀:喂模型前,稳定内容放前面、时间戳这类动态字段放最后,缓存和逻辑都更干净。
- 上限要对齐:max_context 最好是 32 的倍数,max_horizon 是 128 的倍数,否则可能报错或裁切。
- 能为负的别开 infer_is_positive:股价、温差这种能负的值,记得关掉”强制正数”,不然预测被压歪。
- 别神话趋势外推:TimesFM 是”趋势收缩者”不是”趋势外推者”。强趋势、短数据,老牌方法可能更稳。它真正的强项是短时序列和带噪声的真实业务流。
说到底,Google 把这东西开源,等于把”预测能力”从实验室下放到了每个人的笔记本。销量、流量、股价、服务器负载——只要是你手里有历史数据的东西,今天就能跑出未来。别再拍脑袋了,让模型替你算。现在就去 pip install timesfm,十分钟后,你就能看见下个月的曲线。
暂无评论内容