I am making a model for predicting the network traffic volume for our data center. Let me describe my dataset first. At this time, we have the model of 90 days, on each day, we record the network traffic volume every minute. And this data also has the seasonality pattern: the network traffic volume fluctuates and remains at night, decreases in the morning and increases in the afternoon (as I could observe, this pattern happens on all the data in my dataset)

What I want at this time is a model for predicting the network traffic volume in some next minutes(25 minutes, for example), given that the data is given for all the previous minutes. The new predicted value will be contributed for the next predicting. For example, the value at minute i will be added to a window of data with a specific length to predict the value at minute i+1.

At this time, I have tried LSTM-RNN and the feature I use is the minute of the day and the network traffic volume in that minute (with normalization before inputting to the LSTM network). However, my problem is: my model could catch the wrong pattern of the data: when the network traffic volume should increase in the afternoon, my model predicts it decreases. I have tried with different structures of LSTM network (increases the LSTMs layers, change the number of nodes in the fully-connected layers after the LSTM layers...); and also the length of the window, but that problem still remains.

So I want to ask if there is any problem with LSTM model for predicting the data with seasonal trend like my data? If no, could anybody suggest me an LSTM model or any other suitable model for my data?

Thank you in advance :-)


1 Answer 1


When represented at a minute level, the pattern is going to recur after almost 1440 minutes. So your LSTM needs to learn a really long term dependency here. And LSTMs are not great at such long term dependencies.

I'll have a contrary opinion here. Drop neural networks, fit a good linear model to get a benchmark. If the linear model (example outlined below) beats your LSTM error rate currently, invest in building a better (generalised) linear regression model instead. Also, start with a more coarse definition of output (predicting total for next 15 minutes / 1 hour).

  1. Create hand-rolled features for your data. Start with traffic at the same hour of the day yesterday, traffic in same hour of day for past 7 days, traffic on the same hour of the day on same weekday last week.

  2. Add more advanced features by defining better aggregation window than hour. Something like 6 - 9 PM, 12 midnight - 6 am.

  3. Add features related to recent data (ratio of cumulative traffic today compared to cumulative traffic till same time yesterday).

  4. Build a suitable linear model on this data, benchmark the error rate. If the traffic is being measured in number of hits, use poisson regression instead of simple linear regression.

Complex neural net models like LSTM are best used when hand-rolled features are extremely difficult to think and implement. For many time series applications, generating features yourself is intuitive, simple to achieve (most libraries like Python pandas have great date-time functionality) and good first step. It is much better than teaching LSTM to differentiate between morning and afternoon.

François Chollet's book on deep learning has a chapter on similar application. He tackles the problem of predicting weather in particular time window based on past data. He shows that many complex neural net architectures find it hard to beat simple baseline like averaging from same time period in past.

  • $\begingroup$ Thank you very much for your enthusiastic answer, Mr. hssay. It is such a good advice for a newbie like me. The hand-rolled features suggestion is so great. Now I could see that the neural network is not a magic everytime :) $\endgroup$ Aug 1, 2018 at 9:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.