LSTM-RF混合预测模型详细分析
1. 整体架构
这是一个混合预测模型,主要包含以下核心组件:
- LSTM神经网络:处理时序特征
- 随机森林集成:处理静态特征
- 布谷鸟搜索算法:优化随机森林参数
- 动态权重机制:平衡两个模型的预测结果
2. 关键类和功能
2.1 Config类
- 配置所有模型参数和超参数:包括数据参数、LSTM参数、随机森林参数、训练参数等
- 关键参数:
- PIXELS_PER_TIMESTEP = 225(每个时间步的像素点数)
- INPUT_TIMESTEPS = 4(使用前4个时间步的数据)
- LSTM_HIDDEN_SIZE = 128(LSTM隐藏层神经元数)
- RF_N_ESTIMATORS = 200(随机森林中决策树数量)
2.2 LSTMModel类
- 继承自nn.Module
- 架构:
输入层 -> LSTM层 -> Dropout层 -> 全连接层 -> 输出层
- 核心运算:
- LSTM层处理序列数据:(batch_size, sequence_length, input_size)
- Dropout防止过拟合
- 全连接层映射到预测值
2.3 CuckooSearch类(布谷鸟搜索算法)
- 用于优化随机森林参数
- 关键步骤:
- 生成初始解(参数组合)
- Lévy飞行生成新解
- 通过适应度函数评估解的质量
- 更新最优解
2.4 HybridPredictor类(核心类)
初始化阶段:
- 创建LSTM模型
- 创建随机森林集成(3个模型)
- 设置优化器(Adam)和学习率调度器
- 初始化权重(LSTM和RF各0.5)
训练流程:
-
LSTM训练:
- 批量训练
- 使用MSE损失函数
- 应用L1正则化
- 梯度裁剪防止梯度爆炸
- 动态学习率调整
-
随机森林训练:
- 使用布谷鸟搜索优化参数
- 训练3个独立的随机森林模型
- 计算特征重要性
-
动态权重计算:
- 基于各模型在验证集上的MSE
- 为每个特征维度计算单独的权重
- 更新整体模型权重
3. 数据处理流程
3.1 预处理:
- 加载CSV数据
- 提取坐标和特征
- 使用MinMaxScaler标准化特征
- 重组数据为3D张量:(pixels, timesteps, features)
3.2 数据分割:
原始数据 -> 训练集(80%) + 验证集(20%)
3.3 预测流程:
- LSTM预测时序特征
- 随机森林集成预测
- 使用动态权重组合预测结果
- 反归一化得到最终预测值
4. 性能评估
使用两个指标评估模型性能:
- RMSE(均方根误差):衡量预测值与真实值的偏差
- 相关系数:衡量预测值与真实值的相关性
5. 计算复杂度分析
LSTM部分:
- 时间复杂度:O(sequence_length * hidden_size^2)
- 空间复杂度:O(batch_size * sequence_length * hidden_size)
随机森林部分:
- 训练时间复杂度:O(n_trees * n_samples * log(n_samples))
- 预测时间复杂度:O(n_trees * log(n_samples))
布谷鸟搜索:
- 时间复杂度:O(max_generations * n_nests)