决定如何缩放数据以及使用哪个缩放器?

2024-04-27 02:49:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在keras中训练一个具有两个稠密层的MLP模型,以便对大约100个单变量时间序列的小数据集进行预测。此模型应得到6天的值,并预测第7天的值。作为模型的输入,我首先将这些时间序列串联在一个数据帧中,如下所示:

 ts1    val1 
 ts1    val2 
   ...     
 ts1    varN 
 ts2    val1 
 ts2    val2 
   ...     
 ts3    varN 
 ts3    val1 
 ts3    val2 
   ...     
 ts3    varN 
   ...
 ts100  val1 
 ts100  val2 
   ...     
 ts100  varN 

我想知道什么是最好的方式来衡量这些数据?首先,我是否应该独立地缩放每个时间序列(ts\n),这样在最后会有100个缩放器?或者我应该把它们放在一起(最后一个acaler),这样我就不会失去它们之间的相关性了?或者既然所有这些时间序列都被认为是同一个特征,那么就没有必要有相关性了?!你知道吗

我的第二个问题是关于我应该选择哪种缩放方法?min-max或StandardScaler(来自sklearn)?有些时间序列的行为与其他时间序列完全不同,它们的值也有很大的变化。如果我使用最小-最大定标器,它会忽略这些差异,对吗?那么,使用(希望)考虑每个时间序列之间得分差异的StandardScaler不是更好吗?你知道吗

另外,我应该提到的是,缩放完成后,我将创建时间步长,最终结果如下:

        timestep1 | timestep2 | timestep3 | timestep4 | timestep5 | timestep6 | timestep7
 ts1      var1    |   var2    |   var3    |   var4    |   var5    |   var6    |   var7    
 ts1      var2    |   var3    |   var4    |   var5    |   var6    |   var7    |   var8    
 ts1      var3    |   var4    |   var5    |   var6    |   var7    |   var8    |   var9
 ...
 ts2      var1    |   var2    |   var3    |   var4    |   var5    |   var6    |   var7    
 ts2      var2    |   var3    |   var4    |   var5    |   var6    |   var7    |   var8    
 ts2      var3    |   var4    |   var5    |   var6    |   var7    |   var8    |   var9
 ...
 ts100      var1    |   var2    |   var3    |   var4    |   var5    |   var6    |   var7    
 ts100      var2    |   var3    |   var4    |   var5    |   var6    |   var7    |   var8    
 ts100      var3    |   var4    |   var5    |   var6    |   var7    |   var8    |   var9
 ...

Tags: 时间序列val1var2val2var3var4varn
2条回答

您需要注意MinMax Scale,因为在实际情况中,您的预测数据可能具有不同的Scale,换句话说,可以大于序列集中的最高值。你知道吗

我认为标准量表在这种情况下是最好的,因为我们把平均值=0(或一个定义的数字)和std=0或1。你知道吗

另一件事,你可以尝试太是使第一层网络没有激活和最后一层了。如果不使用负值,则使用relu。你知道吗

一般来说,我发现MinMaxScaler和StandardScaler在性能上几乎没有差别。当然,因为(看起来)您还将缩放目标变量,所以您应该确保使用与输出激活函数一致的缩放器。例如,如果你的输出激活函数是一个ReLU,你将无法预测任何负值。在这种情况下,我将倾向于MinMaxScaler,因为您的所有目标都将在区间[0,1]中结束。你知道吗

至于是一起缩放还是独立缩放时间序列,可能取决于具体的设置。如果这些量表倾向于具有不同的时间依赖性行为,那么最好将它们放在一起以保持差异。如果它们都以类似的模式运行,那么独立地扩展它们可能效果最好。你知道吗

还值得考虑用于时间序列预测的其他网络体系结构,例如RNNs。你知道吗

相关问题 更多 >