目录
一、时间序列预测的核心概念
1.1 什么是时间序列?
时间序列是按时间顺序排列的数据集合,具有以下特点:
-
时间依赖性:当前值与历史值相关
-
趋势性:长期上升/下降趋势(如电商年增长曲线)
-
季节性:周期性波动(如空调销量夏高冬低)
真实案例:某电商平台发现每年"双十一"订单量是平日的50倍,这种周期性波动就是典型的时间序列特征。
1.2 预测任务的类型对比
任务类型 | 描述 | 应用场景 |
---|---|---|
单步预测 | 预测下一个时间点的值 | 明日股价预测 |
多步预测 | 预测未来多个时间点的值 | 未来一周天气预测 |
缺失值填补 | 补全历史缺失数据 | 传感器数据修复 |
异常检测 | 识别异常波动 | 金融欺诈监测 |
二、构建预测模型的四大关键步骤
2.1 数据准备与特征工程
from sklearn.preprocessing import MinMaxScaler
# 标准化处理
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(raw_data)
# 创建滑动窗口数据集
def create_dataset(data, window_size=10):
X, y = [], []
for i in range(len(data)-window_size):
X.append(data[i:i+window_size])
y.append(data[i+window_size])
return np.array(X), np.array(y)
2.2 基准模型搭建
# 自定义评估指标
def last_time_step_mse(y_true, y_pred):
return keras.metrics.mean_squared_error(y_true[:, -1], y_pred[:, -1])
model.compile(loss="mse", metrics=[last_time_step_mse])
朴素预测法:直接使用最后一个观测值作为预测值
naive_pred = test_data[:-1]
mse = mean_squared_error(test_data[1:], naive_pred)
2.3 RNN模型进化之路
2.3.1 简单RNN结构
model = Sequential([
SimpleRNN(20, input_shape=[None, 1]),
Dense(1)
])
2.3.2 深度RNN架构
model = Sequential([
SimpleRNN(20, return_sequences=True, input_shape=[None, 1]),
SimpleRNN(20, return_sequences=True),
SimpleRNN(20),
Dense(1)
])
2.4 模型评估与优化
# 自定义评估指标
d