TimesFM 3预测藻类水华:零样本打赢监督学习

某地区实测:多因子协变量让T+3预测R²从0.19升至0.48,水华预警F1最高0.97。

图

某地区 X 点位,2025 年 6 月 27 日。

水华预警系统提前 3 天发出红色警报:叶绿素 a 浓度预计突破 90 µg/L。现场人员提前采取拦截措施,最终实测值 94.2 µg/L,误差仅 4.2 µg/L。

这不是偶然的精准,而是一个 0.3B 参数的时间序列基础模型做到的。

过去两年,我们团队用传统监督模型(LightGBM)反复调参,T+3 预测 R² 始终卡在 0.15 左右。今年我们把 Google 的 TimesFM 3.0 放进来做零样本对比,结果出乎意料:同一套数据、同样测试段,T+3 R² 直接拉到 0.48,水华预警 F1 最高 0.97。

这篇文章把完整实验链路摊开:从数据清洗、PCA 因子筛选中,我们看到哪些变量真正驱动藻类爆发;从多因子协变量接入 TimesFM 的方式里,我们看到基础模型如何用” season-dynamic prior “弥补小样本瓶颈。

结论先行:零样本 + 多因子,已经可以上岗。

从”手工作坊”到”通用预测器”

时间序列预测曾经高度依赖领域专家手工设计特征:把气温、光照、降雨、流量排进 LightGBM,再靠交叉验证调参。这种模式有两个硬伤:

  • 数据量受限:某地区只有 2 个完整季节循环,监督模型学不到年际规律;

  • 因子冗余严重:38 个候选气象/水质/水文变量里,很多只是同一物理过程的不同表述。

TimesFM 3.0 给出的替代路径是:不做任务定制,直接喂原始序列 + 协变量,让模型自己找规律。

我们在某湖泊 4 个代表性点位(记为 A、B、C、D 站)上做了对照实验,测试段统一为 2025-04-01 至 2025-06-27,共 88 个滚动预测起点。

数据清洗:先剔除”坏站”,再修”坏点”

原始数据来自 6 个水质站(小时级)+ 3 个水文站 + ERA5 再分析气象。但数据质量参差不齐。

站点级体检

我们对每个站点做了 6 项证据综合判决:

  • 有效率:有效数据占比是否达标;

  • 高值截断占比:超过 300 µg/L 的占比是否异常;

  • 前后期基线比:是否存在传感器漂移;

  • 与他站相关性:孤立信号会被剔除;

  • 变异健康度:CV% 是否合理;

  • 与藻密度一致性:仅作参考,不硬门槛。

判决结果(A~D 为保留的目标站,E、F 为剔除站):

|
站点

|

原始小时数

|

有效率

|

高值截断

|

前后基线比

|

判决

|
| — | — | — | — | — | — |
|

A 站

|

15,318

|

75.7%

|

2.1%

|

1.27

|

保留

|
|

B 站

|

15,796

|

84.2%

|

6.1%

|

1.40

|

保留

|
|

C 站

|

15,808

|

97.1%

|

3.5%

|

0.91

|

保留

|
|

D 站

|

17,415

|

96.9%

|

1.6%

|

1.77

|

保留

|
|

E 站

|

17,351

|

93.0%

|

24.8%

|

3.54

|

剔除

|
|

F 站

|

14,479

|

7.6%

|

0%

|

|

剔除

|

E 站被剔除:24.8% 的时间被高值截断(传感器疑似饱和),前后期基线漂移 3.54 倍,数据不可信。

F 站被剔除:有效率仅 7.6%,清洗后与所有站零相关,属于孤立信号,疑似反演失效。

注意:E、F 两站的其他指标仍作为特征保留,只是不做预测目标。它们与湖体动态联动,对模型仍有参考价值。

小时级四类信号清洗

保留的 4 个目标站,小时级数据再做 4 类异常判定:

|
信号

|

判定规则

|

处理

|
| — | — | — |
|

S1 物理不可能

|

叶绿素 a ≤ 0 或 > 400 µg/L

|

硬剔除

|
|

S2 传感器卡死

|

48h 滚动标准差 < 0.5

|

整段剔除

|
|

S3 孤立尖峰

|

偏离 ±12h 局部中位数 > max(5×MADσ, 50 µg/L)

|

单点剔除

|
|

S4 反演饱和

|

多光谱反演锁定 70±2(月 std 从 12-26 降至 1-3)

|

整段剔除

|

不是”高于多少就是异常”,而是物理边界 + 统计特征 + 时间上下文三重判定。

PCA 因子分析:38 个变量里,哪几个真有用?

把气象(ERA5,25 个变量)、水质(8 个指标)、水文(9 个变量)全部纳入,共 38 个候选因子。按列插补不删行,得到 673 个有效日样本。

主成分结构

PCA 降维后,前 15 个主成分解释 90% 方差,结构高度可解释:

  • PC1 = 光照-蒸散轴:短波辐射、日照时长、参考蒸散高载荷;

  • PC2 = 暖湿降雨轴:气温最低、降雨量、降雨时长;

  • PC3 = 水位流量轴:支流水位、瞬时流量;

  • PC4 = 风扰动轴:风速、阵风;

  • PC6 = pH-溶解氧轴

核心发现:”光照-温度-清澈度”主轴驱动叶绿素 a。

因子重要性排序(与叶绿素 a 的 Spearman 相关)

|
因子

|

代表性 r

|

最优时间表征

|
| — | — | — |
|

参考蒸散

| 0.673 |

7 日均

|
|

短波辐射

| 0.673 |

14 日均

|
|

透明度

| -0.670 |

14 日均

|
|

气温最高

|

0.631

|

3 日均

|
|

气温均值

|

0.612

|

3 日均

|
|

气温最低

|

0.580

|

当日

|
|

水温

|

0.555

|

当日

|
|

日照时长

|

0.532

|

14 日均

|
|

低云量

|

-0.530

|

14 日均

|
|

高云量

|

0.504

|

14 日均

|
|

阵风

|

0.504

|

14 日均

|
|

高锰酸盐

|

0.493

|

14 日均

|

前 5 个因子全部属于”光照-温度-清澈度”主轴,解释了叶绿素 a 变异的 40% 以上

因子筛选:33 保留,5 剔除

规则:|r| ≥ 0.20 保留;0.12~0.20 且落在高相关主成分前列的保留。

剔除的 5 个因子

  • C 站瞬时流量(|r| = 0.195,弱相关)

  • 湿度(|r| = 0.184,弱相关)

  • 降雨天气标记(|r| = 0.183,弱相关)

  • 降雨时长(|r| = 0.151,弱相关)

  • F 站瞬时流量(|r| = 0.132,弱相关)

精简到 12 个代表因子:透明度、总氮、高锰酸盐、藻密度、溶解氧、pH、气温最高、短波辐射、阵风、低云量、降雨量、支流水位。

PCA 降维有效:12 因子精简模型 ≈ 33 因子全量模型。

TimesFM 3.0 怎么接多因子?

TimesFM 3.0 原生支持两类协变量:

  • past_only_covariates:仅历史可知(水质、水文、他站叶绿素 a);

  • past_future_covariates:未来可知(ERA5 气象 = 完美预报上界)。

配合 Variate Attention 机制,模型在不同变量之间做注意力交互,而不是把多变量展平成一维序列。

实验设置:

  • 回测协议:滚动起点,train 2024-01-01 ~ 2025-01-05(隔日),val 2025-01-06 ~ 03-31(每日),test 2025-04-01 ~ 06-27(每日);

  • 上下文长度:366 天(默认)/ 730 天;

  • 预测 horizon:7 天,切片取 T+1/T+3/T+7;

  • 协变量标准化:每个预测起点仅用上下文段统计量 z-score,防数据泄漏。

核心结果:零样本打赢监督学习

图

T+1 天:R² 0.76~0.86,已可上线

|
站点

|

持续性基线

|

LightGBM 直接

|

TimesFM 零样本

|

优势

|
| — | — | — | — | — |
|

A 站

|

0.823

|

0.726

| 0.821 |

+0.095

|
|

B 站

|

0.655

|

0.301

| 0.764 |

+0.463

|
|

C 站

|

0.772

|

0.263

| 0.813 |

+0.550

|
|

D 站

|

0.834

|

0.487

| 0.864 |

+0.377

|

T+1 是 TimesFM 的舒适区。零样本模型直接超过 LightGBM 重训版本,说明基础模型预训练学到的”季节-动态先验”在小样本场景下碾压手工特征。

T+3 天:R² 0.19~0.48,趋势预测可用

|
站点

|

持续性基线

|

LightGBM 直接

|

TimesFM 零样本

|

优势

|
| — | — | — | — | — |
|

A 站

|

0.332

|

-0.066

| 0.478 |

+0.544

|
|

B 站

|

0.053

|

0.109

| 0.194 |

+0.085

|
|

C 站

|

0.328

|

0.152

| 0.427 |

+0.275

|
|

D 站

|

0.210

|

-0.726

| 0.288 |

+1.014

|

T+3 是最大突破区间。相比持续性基线提升 +0.08+0.15,相比 LightGBM 直接提升 +0.09+1.01。D 站从 -0.73 跃升到 +0.29,代际级领先。

T+7 天:R² -0.37~+0.10,仅个别站点有参考价值

T+7 整体仍偏弱,但 C 站达到 +0.10,B 站达到 -0.14,说明局部点位在短中期内有规律可循,但周尺度预测需要再积累 1~2 个季节循环。

水华预警 F1:T+1 最高 0.97,T+3 最高 0.90

以各站训练期 P75 为阈值:

|
预见期

|

A 站

|

B 站

|

C 站

|

D 站

|

业务判定

|
| — | — | — | — | — | — |
|

T+1

|

0.86

|

0.88

|

0.79

| 0.97 |

可靠,可直接上线

|
|

T+3

|

0.57

|

0.70

|

0.57

|

0.90

|

有技巧,趋势/预警可用

|
|

T+7

|

|

0.35

|

0.60

|

0.86

|

仅 C、D 站有参考价值

|

D 站水华最频繁、预警最准,T+1 F1=0.97,T+3 F1=0.90,T+7 F1=0.86。这与该站叶绿素 a 变异 CV% 较高、响应气象更快有关。

多因子到底起了多大作用?

我们把 TimesFM 的三种设置做了对比:

  1. univ_c366:零样本单变量,366 天上下文;

  2. covfull_c366:33 因子全量协变量;

  3. covred_c366:12 因子精简协变量(PCA 精选)。

结果:covfull ≈ covred ≈ 略优于 univ,但在 T+3/T+7 上,多因子版本普遍高出 0.03~0.14。

典型案例

  • C 站 T+7:univ -0.10 → covfull +0.10

  • D 站 T+7:univ -0.64 → covfull -0.37

协变量在长期预测上挽回了模型,说明**气象和水文因子确实提供了超越历史模式的”未来信息”**。

残差融合层为什么失败?

我们尝试在 TimesFM 零样本输出后接一个 LightGBM 残差融合层,希望在 val 上学习系统偏差。结果:最优融合权重 α = 0,即完全不用 LightGBM。

这意味着 TimesFM 的系统偏差无法用当前因子集解释。残差里是”新信息”——2025 年春季水华的新状态,而不是因子可修正的偏差。

换句话说,模型在 2025 年遇到了它预训练数据里没见过的”新情况”,而且它诚实地说”我不确定”。

下一步建议

基于本次实验,我们建议:

① 立即上线四站 T+1/T+3 预测 + 分级预警

TimesFM-covfull 为主模型,LightGBM 为备份。T+1 数值预测误差 5.826.5 µg/L,水华 F1 0.790.97,已满足业务需求。

② 修复 E、F 站传感器后重新纳入

E 站高值截断、F 站反演失效,硬件问题解决后数据可恢复。

③ 用真实数值天气预报替换 ERA5

当前 ERA5 是”完美预报上界”,接入 NWP 后会折损,需重测校准。

④ 每季度滚动复评,满 3 个季节循环后重攻 T+7

当前只有 2 个完整季节,T+7 的不确定性主要来自年际规律不足,不是模型能力问题。


实验环境:TimesFM 3.0 (google/timesfm-3.0-pytorch),局域网 GPU 服务器(RTX 5070 Ti),timesfm 3.0.1 + torch 2.14 + CUDA。测试段 2025-04-01~06-27,全程未参与训练/调参。站点均已脱敏。


TimesFM 3预测藻类水华:零样本打赢监督学习
https://maoyu92.github.io/2026/09/10/07 AI笔记/AI工具与模型/a011_TimesFM 3预测藻类水华:零样本打赢监督学习/
作者
陈文茂
发布于
2026年9月10日
许可协议