使用递归神经网络解决时间序列任务
Using Recurrent Neural Network to solve Time Series task
我有下一个问题要解决:预测下一个 day/week 的 "demand of job"。
我有去年的样品(377 个样品,每天 1 个)。
我的变量与信息相关(或者至少我认为它是相关的):日、周、月、假日、天气条件(温度、雨、雪)、订阅量(13 个变量)
我把所有样品的需求从开始画到今天,得到:
如果我在一周内(星期一、星期二...)拆分此需求,我会得到:
我认为这是一个 "Time series" 问题,所以我试图用神经网络解决它,特别是循环神经网络。
我的问题是:
1) 真的是"Time series"问题吗?
2)用NN解决的问题好吗?哪种类型?循环神经网络?
3) 如果 RNN 是最好的,我是否应该考虑另一个可能很常见但我没有考虑的变量?
4) 如果神经网络不是最好的方法,那哪个是?
5) 我应该尝试训练 7 个不同的网络(一周中每天一个)还是应该尝试训练 1 个 "big" 网络?
6) 可以保留异常值还是应该将其删除? (异常发生在节假日)
- 不能说。似乎是。
2, 4. 是的,RNN是用来做时间序列预测的。
- 不确定按天数拆分。但可能你有这样做的理由。
- 我想,训练 7 个不同的网络比训练一个网络要难得多。
- 删除它们并替换为最近点的平均值。在我处理 RNN 的所有任务中,都很难解决异常值问题。由于缩放(但如果您不删除它们,RobustScaler 可能会有所帮助)。
1) Is it really a "Time series" problem?
根据definition,时间序列是按时间顺序索引的一系列数据点。你的问题完全符合。所以,是的,这是一个时间序列问题。
2) Is it a good problem to be solved with NN? Which type? RNN?
RNN 无疑是这个问题的候选者:RNN 擅长捕捉系列数据中的相似模式,例如,从语料库中的大量句子中学习语言规则。您的第一个图表清楚地表明连续时间步长的点之间存在依赖关系。
3) If RNN is the best, should I consider another variable that maybe is common and I am not taking it into account?
这个问题没有通用的答案。深度网络可以从输入的特征中学习新特征(称为feature extraction),但也可能无法做到这一点,你必须准备它们。
4) If neural networks is not the best approach, which one is?
再一次,这个问题太宽泛了。没有单一的最佳方法。这就是为什么我对这里的表述很谨慎:RNN 是一个很好的候选,换句话说,我看不出有什么问题可以立即尝试。
有关于时间序列分析的书籍,统计工具包括自回归、自相关、季节性等。讨论这些完全超出了 Whosebug 的范围。如果您有兴趣,我建议您在 CrossValidated.
询问
5) Should I try to train 7 different networks (one per day of the week) or should I try to train 1 "big" network?
如果不同日期之间的分布明显不同,则可以这样做。坦率地说,我没有注意到你上面的图表,但需要调查原始数据才能回答这个问题。
6) Is it okay to keep the outliers or should I remove it? (outleirs occurs on holidays)
一般来说,神经网络不擅长预测异常值,因为这里没有模式。但是您的第一个图表没有显示明显的异常值,因此使用它而不是每个工作日的图表是一个论据。
我有下一个问题要解决:预测下一个 day/week 的 "demand of job"。 我有去年的样品(377 个样品,每天 1 个)。 我的变量与信息相关(或者至少我认为它是相关的):日、周、月、假日、天气条件(温度、雨、雪)、订阅量(13 个变量) 我把所有样品的需求从开始画到今天,得到:
如果我在一周内(星期一、星期二...)拆分此需求,我会得到:
我认为这是一个 "Time series" 问题,所以我试图用神经网络解决它,特别是循环神经网络。 我的问题是:
1) 真的是"Time series"问题吗?
2)用NN解决的问题好吗?哪种类型?循环神经网络?
3) 如果 RNN 是最好的,我是否应该考虑另一个可能很常见但我没有考虑的变量?
4) 如果神经网络不是最好的方法,那哪个是?
5) 我应该尝试训练 7 个不同的网络(一周中每天一个)还是应该尝试训练 1 个 "big" 网络?
6) 可以保留异常值还是应该将其删除? (异常发生在节假日)
- 不能说。似乎是。 2, 4. 是的,RNN是用来做时间序列预测的。
- 不确定按天数拆分。但可能你有这样做的理由。
- 我想,训练 7 个不同的网络比训练一个网络要难得多。
- 删除它们并替换为最近点的平均值。在我处理 RNN 的所有任务中,都很难解决异常值问题。由于缩放(但如果您不删除它们,RobustScaler 可能会有所帮助)。
1) Is it really a "Time series" problem?
根据definition,时间序列是按时间顺序索引的一系列数据点。你的问题完全符合。所以,是的,这是一个时间序列问题。
2) Is it a good problem to be solved with NN? Which type? RNN?
RNN 无疑是这个问题的候选者:RNN 擅长捕捉系列数据中的相似模式,例如,从语料库中的大量句子中学习语言规则。您的第一个图表清楚地表明连续时间步长的点之间存在依赖关系。
3) If RNN is the best, should I consider another variable that maybe is common and I am not taking it into account?
这个问题没有通用的答案。深度网络可以从输入的特征中学习新特征(称为feature extraction),但也可能无法做到这一点,你必须准备它们。
4) If neural networks is not the best approach, which one is?
再一次,这个问题太宽泛了。没有单一的最佳方法。这就是为什么我对这里的表述很谨慎:RNN 是一个很好的候选,换句话说,我看不出有什么问题可以立即尝试。
有关于时间序列分析的书籍,统计工具包括自回归、自相关、季节性等。讨论这些完全超出了 Whosebug 的范围。如果您有兴趣,我建议您在 CrossValidated.
询问5) Should I try to train 7 different networks (one per day of the week) or should I try to train 1 "big" network?
如果不同日期之间的分布明显不同,则可以这样做。坦率地说,我没有注意到你上面的图表,但需要调查原始数据才能回答这个问题。
6) Is it okay to keep the outliers or should I remove it? (outleirs occurs on holidays)
一般来说,神经网络不擅长预测异常值,因为这里没有模式。但是您的第一个图表没有显示明显的异常值,因此使用它而不是每个工作日的图表是一个论据。