name: time-series-forecaster description: 用于业务指标预测和需求规划的时间序列预测技能 alowed-tools:
- Read
- Write
- Glob
- Grep
- Bash
metadata:
specialization: 决策智能
domain: 商业
category: 预测
priority: medium
shared-candidate: true
tools-libraries:
- prophet
- statsforecast
- darts
- sktime
- nixtla
时间序列预测器
概述
时间序列预测器技能提供全面的能力,用于使用经典统计方法、机器学习和深度学习方法预测业务指标随时间的变化。它支持自动模型选择、集成预测和不确定性量化,以实现稳健的业务规划。
能力
- 经典方法(ARIMA、ETS、Theta)
- 机器学习方法(用于时间序列的XGBoost、LightGBM)
- 深度学习方法(Prophet、N-BEATS、时序融合变换器)
- 集成预测
- 预测区间生成
- 预测精度指标(MAPE、RMSE、MASE)
- 异常检测
- 季节性分解
使用流程
- 预测分析实施
- KPI框架开发
- 市场规模与机会评估
用法
数据输入
# 时间序列数据配置
time_series_data = {
"target": "monthly_revenue",
"datetime_column": "date",
"frequency": "M", # 月度
"data": [
{"date": "2023-01-01", "value": 1000000, "marketing_spend": 50000},
{"date": "2023-02-01", "value": 1050000, "marketing_spend": 55000},
# ... 更多数据
],
"exogenous_variables": ["marketing_spend", "economic_index"],
"special_events": [
{"date": "2023-11-24", "event": "black_friday", "impact": "positive"},
{"date": "2023-12-25", "event": "christmas", "impact": "mixed"}
]
}
模型配置
# 预测配置
forecast_config = {
"horizon": 12, # 向前预测12个月
"models": {
"auto_select": True,
"candidates": ["arima", "ets", "prophet", "lightgbm"],
"ensemble": {
"method": "weighted_average",
"weights": "based_on_cv_performance"
}
},
"validation": {
"method": "time_series_cv",
"n_splits": 5,
"test_size": 3
},
"prediction_intervals": [0.50, 0.80, 0.95]
}
季节性分析
# 季节性分解
seasonality_config = {
"method": "stl", # 或 "classical", "x13"
"seasonal_periods": [12], # 月度数据的年度周期
"robust": True,
"output_components": ["trend", "seasonal", "residual"]
}
模型选择指南
| 模型 | 最适合 | 处理能力 |
|---|---|---|
| ARIMA | 具有自相关性的平稳数据 | 趋势、AR/MA模式 |
| ETS | 指数模式 | 趋势、季节性、误差 |
| Prophet | 业务时间序列 | 趋势、多重季节性、节假日 |
| Theta | 简单预测 | 趋势外推 |
| N-BEATS | 复杂模式 | 非线性趋势、可解释性 |
| TFT | 多时间范围、多变量 | 外生变量、注意力机制 |
| XGBoost | 特征丰富的预测 | 外生变量 |
精度指标
| 指标 | 公式 | 使用场景 |
|---|---|---|
| MAPE | 平均绝对百分比误差 | 与尺度无关的比较 |
| RMSE | 均方根误差 | 惩罚大误差 |
| MASE | 平均绝对缩放误差 | 与朴素预测比较 |
| SMAPE | 对称MAPE | 处理接近零的值 |
| 覆盖率 | 预测区间内的百分比 | 校准检查 |
输入模式
{
"time_series": {
"target": "string",
"datetime_column": "string",
"frequency": "string",
"data": ["object"],
"exogenous_variables": ["string"]
},
"forecast_config": {
"horizon": "number",
"models": "object",
"validation": "object",
"prediction_intervals": ["number"]
},
"analysis_options": {
"decomposition": "boolean",
"anomaly_detection": "boolean",
"feature_importance": "boolean"
}
}
输出模式
{
"forecasts": {
"point_forecast": ["number"],
"prediction_intervals": {
"lower_80": ["number"],
"upper_80": ["number"],
"lower_95": ["number"],
"upper_95": ["number"]
},
"dates": ["string"]
},
"model_performance": {
"selected_model": "string",
"cv_metrics": {
"MAPE": "number",
"RMSE": "number",
"MASE": "number"
},
"all_models": "object"
},
"decomposition": {
"trend": ["number"],
"seasonal": ["number"],
"residual": ["number"]
},
"anomalies": [
{
"date": "string",
"value": "number",
"expected": "number",
"severity": "string"
}
],
"feature_importance": "object (if applicable)"
}
最佳实践
- 使用至少2-3个完整的季节性周期历史数据
- 检查并适当处理缺失值
- 考虑外部因素(节假日、促销活动、经济指标)
- 使用时间序列交叉验证(而非随机分割)进行验证
- 报告预测区间,而不仅仅是点预测
- 随时间监控预测精度,并在需要时重新训练
- 对长期预测保持谨慎(不确定性会累积)
集成点
- 为前瞻性指标输入KPI跟踪器
- 与蒙特卡洛引擎连接进行情景分析
- 支持预测分析师代理
- 与决策可视化集成以生成预测图表