You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LSTM股票预测模型验证集波动预期及优化方案问询

LSTM股票预测模型优化疑问解答

问题背景

我通过Optuna优化参数构建了如下LSTM模型:

model = tf.keras.Sequential()
model.add(tf.keras.layers.LSTM(25, return_sequences=True, input_shape=(5,5)))
model.add(tf.keras.layers.LSTM(23, return_sequences=True))
model.add(tf.keras.layers.LSTM(24, return_sequences=False))
model.add(tf.keras.layers.Dense(1))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.023157803318723094),
                loss=tf.keras.losses.MeanAbsoluteError(),
                metrics=['mae', 'mse']
                )
history = model.fit(reshaped_train_features,
                    train_labels,
                    validation_split=0.2,
                    batch_size=131072,
                    callbacks=[early_stopping, sign_accuracy_callback, checkpoint_callback],
                    epochs=100
                    )

数据集为15GB股票数据,预期存在一定波动,但不确定该波动源于数据特性还是模型构建问题。正在跟踪Mean Squared Error(MSE),计划尝试0.8权重的MAE与0.2权重的MSE组合损失函数。使用RTX 4070训练仍耗时约31小时,因此希望谨慎调整。
预测值由两个对数的差值计算得出,即log(x)-log(y)。考虑采用Winsorization处理,也疑惑加入MSE到损失函数是否能达到同样效果,恳请相关反馈。


针对性反馈

1. 波动来源定位

  • 先做残差分析:提取验证集的真实值与预测值的残差,对比残差分布和行情波动时段(如大盘暴跌/暴涨期),如果残差在高波动时段显著增大,说明波动是数据特性;如果残差无规律且训练/验证集波动趋势背离,大概率是模型拟合问题(比如过拟合)。
  • 查看训练曲线:检查history中训练集与验证集的MAE、MSE走势,若验证集指标突然冲高后回落,说明模型对噪声敏感;若两者差距持续扩大,可尝试在LSTM层后添加Dropout(0.1)层抑制过拟合。

2. 组合损失与Winsorization的差异

  • 组合损失(0.8MAE+0.2MSE):MAE对异常值鲁棒,MSE会给大误差更高权重,组合后既能保持模型稳定性,又能引导模型修正大偏差。但你的预测值是对数差,已经压缩了极端值的影响,MSE的惩罚力度会被削弱,建议先从0.9MAE+0.1MSE开始测试,避免MSE引入不必要的波动。
  • Winsorization处理:直接截断或缩尾极端值,适合异常值是数据噪声(如错误交易记录)的场景。如果极端值是真实行情波动(如个股涨停),Winsorization会丢失有效信息,反而降低模型性能。
  • 两者无法互相替代:先做数据探查,统计log(x)-log(y)的分位数(比如99%分位点),判断极端值是否为有效信号,再决定用哪种方式。

3. 训练效率优化

  • 你的batch_size=131072可能过大,RTX4070 12GB显存未必能充分利用,建议减半到65536,或调整到显存占用80%-90%的水平,既能提升训练速度,又不影响收敛。
  • 将数据转为tf.data.Dataset格式,用prefetch(tf.data.AUTOTUNE)和cache()(内存足够时)加速数据加载,减少IO等待时间。
  • 检查early_stopping的patience值,若设置过大(比如超过10),会导致无效epoch训练,建议设为5-10,验证集指标不再下降就提前终止。

4. 模型结构微调

  • 当前用了三层LSTM,可尝试减少一层(比如保留前两层或后两层),降低模型复杂度,提升训练速度的同时降低过拟合风险——股票时间序列的依赖关系未必需要三层LSTM捕捉。
  • Optuna调优出的LSTM单元数(23-25)可固定,尝试添加recurrent_dropout=0.1参数,增强模型对噪声的鲁棒性。

内容的提问来源于stack exchange,提问作者mospira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:25:53