现象
预测的是一个序列。
在测试集中随机取20个来看,所有的预测序列都是一个趋势,但是大小有所区别。
举例图片
原因
目前来看是数据的问题,应该是样本不均衡,某一类样本过于多,导致模型学到的都是那种样本后面的序列的形状。
在使用另一段时间的数据集,以同样的模型预测同样长度的序列后,就会有好一点的效果:
solution
后面尝试一下正样本降采样。
other solutions
另外再粘贴一些别人总结的可能的解决方法。
https://blog.csdn.net/weixin_43025542/article/details/102460601
https://zhuanlan.zhihu.com/p/400492431
https://www.zhihu.com/question/365057522/answer/2124017876
时序数据预测优化
1.负样本少的情况下,上采样增加某类难以预测的负样本
如果发现某类数据趋势样本很少所以很难预测出来,则需要在训练集中造这类样本,增加其比例。
2.工艺规律
对于预测优化,首先应该把预测不准的都拿出来看。
一方面是画出预测值与ground truth,另一方面,涉及到其他如设备参数,应该找到对应的时间戳将设备参数取出分析。分析设备参数是否会在附近的时间步内发生了变化。从而总结出标签趋势变化的原因。
然后再把我们总结的规律和工艺人员讨论。对于一些特殊类型的,工艺人员认为不合理的,或者是突变的数据,应予以剔除。
不平衡样本
处理的一种方法是
假设共有4种类型的数据,ABCD,其中A的样本特别多,BCD样本特别少。
一方面我们可以对A做抽取删除,对BCD做数据增强。
另一方面,可以把数据分为2大类,类1:A,类2:BCD,每次batch取数的时候,保证从类1抽一部分,类2抽一部分。
这样可以保证每个epoch的训练都有样本少的类型,保证其能够学到少而有用的信息。
reference:
https://blog.csdn.net/u013249853/article/details/90408122
https://www.lmlphp.com/user/57801/article/item/2581625/