V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Fluyod
V2EX  ›  机器学习

用深度学习做时间序列预测,如何选择数据标准化方法呢?

  •  
  •   Fluyod · 2020-06-18 21:02:17 +08:00 · 1972 次点击
    这是一个创建于 1623 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一批时间序列数据,记为 x,shape 为 [n(time), n(location), n(feature)],分别为时间、地点和特征维度,例如不同地点不同时间的降雨量、气温、噪音等。用简单的 LSTM 做时间序列预测,LOSS 与评价指标为 RMSE 。按理说输入数据前需要对数据做标准化处理,例如 min-max 或者 z-score

    1 、应该在哪个维度上对数据进行标准化处理呢?例如 z-score: x = np.mean(x, axis = 0) / np.std(x, axis = 0) x = np.mean(x, axis = (0, 1)) / np.std(x, axis = (0, 1)) x = np.mean(x) / np.std(x) 以上哪种是合理的呢?

    2 、在实际尝试中,我用了 min-max 、z-score 、取对数、取 sigmoid 等多种标准化方法,对应的输出层激活函数也试过 sigmoid, tanh 或者不使用激活函数,发现要么 loss 压根不下降,要么 loss 可以下降但错误率很高,反而用原始数据输入能得到比较好的结果(优于 ARIMA 等传统模型),很快模型就收敛了,这是为什么呢?不对时间序列做任何预处理就扔进网络,是可以接受的吗

    2 条回复    2020-08-28 17:36:46 +08:00
    w1573007
        1
    w1573007  
       2020-06-23 22:04:20 +08:00 via Android
    要对每一个特征分别做归一化,arima 模型比较受数据集的波动影响。连人都没有。老铁 arima 的代码可否看看,python 版的没写出来
    shm7
        2
    shm7  
       2020-08-28 17:36:46 +08:00
    如果真的不会,可以去翻翻 sklearn 的文档,里面有经过业界验证的各种预处理工具,包括 norm 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1284 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:58 · PVG 01:58 · LAX 09:58 · JFK 12:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.