使用PRCP_cq34_FY3DL2_202005_08_daily_T_order.csv
目前暂实现的各个模型的输入情况
model_1: FY3D-MWHS 1-15, daily, 5-8month, not exist NAN
model_4: FY4A cn1-14, hourly, 5-8month, exists NAN
model_14: FY4A cn1-14, daily, 5-8month, not exist NAN
model_19: FY3D-MWHS 1-15 + FY4A cn1-14, daily, 5-8month, not exist NAN
简单编写了数据的样本生成, 编写初步的LSTM模型, 期望可以得到尚可的结果 遇到的问题: 尝试使用同时期的X预测同时期的Y, 效果很差, 原因有想法但是 目前时间有限暂不做解释和验证; 换了LSTM常用思路: 利用过去的X(或继续 加入过去的Y)训练模型, 用训练好的模型预测未来的Y。
整理了样本生成的代码, 方便后续各种情况下样本的生成; 下一步: 完善和优化模型的核心部分, 并尝试加入参数寻优等方法; 后续可能的问题: 注意样本中存在的无效值对LSTM的影响如何解决?
上次已经修改了训练存在的瑕疵, 这个问题是此前process_timeseries.py进行样本/特征处理时, 由于 索引两边取值(我认为是左闭右开, 然而在pd中是两边闭), 因此意外地将目标数据放到特征数据中去训练了 导致训练结果过好, 上次已经修复这个问题.
但是现在存在新问题就是, 训练的模型在R2上表现极差了, 这个是目前存在的最大问题
.
另外总结现有完成的工作, 梳理一下脉络, 方便后续进一步搭建框架. 在Scripts文件夹下核心是
- process_timeseries.py(生成样本)
- model_train.py(模型训练) 在utils文件夹中
- utils.py存在相关常用函数
现在为了方便管理, 项目根目录增加Config.py配置文件, 用于全局控制相关变量的处理. 初步的添加model_eval.py, 可以进行简单的评估, 但是还没有完善绘图部分和计算评估指标. 优化了model_train.py, 对utils.py和model.py的相关函数进行了优化和重构. 现在重点在着手解决model训练的loss虽然看着很小, 至少相对于RF,而且目前评估时的各类 指标也比较小,但是实际绘图:
- 优化配置文件
- 增加自注意力机制的LSTM模型,期望得到更好结果
- 完善各类数据排列组合传入的模型的运行流程
- 解决部分训练数据(时间分辨率: 小时)中存在的无效值,暂通过多项式插值解决
- 是否需要类似径流模拟项目中类似做法对时间序列进行卡尔曼滤波?
- 为process_timeseries.py等脚本增加基本信息的输出以明晰运行情况(最好通过日志生成)
- 注意为了减少随机性,取五次平均值作为最后的预测
- 不能独立地对测试机的X进行scale