I am trying to use an LSTM to predict daily usage for users. I have data for (say) 90 days of usage for a large number of users. Based on business knowledge (and initial analysis) we know users fall roughly into different categories. E.g. daily users would have a non-zero usage almost every day, weekly users would have one or two days of non-zero usage every 7 days and monthly users would have a couple of days with non-zero usage per 30 days.
Sample data where each column is one day starting from October 1st and each row is data for one user. (The usage 'cycle' of each user might start on any day).
User 1: 10, 8, 10, 9, 0, 0, 11, ... User 2: 0, 0, 0, 20, 0, 0, 0, 0, 0, 18, 0, 0, 0, ... User 3: 40, 0, 0, 0, .....
where User 1 might be a "daily" user, User 2 is a "weekly" user and User 3 is a monthly user.
My first question is that can a single LSTM/deep learning model capture these different types of patterns? The goal is to predict the daily usage (next couple of days based on past 90 days) for individual users.
Currently I am using a really simple LSTM (in Keras):
model = Sequential() model.add(LSTM(1, input_shape=(90, 1), unroll=True)) model.compile(optimizer='rmsprop', loss='mse')
To help the model 'capture' the fact that different users might have different levels of usage I added the average usage (of non-zero values) for each user as the first data point for each row. The remaining 90 data points for each user remain as shown in the table above.
My second question is if I really need to add the average of the values to 'help' the model?
The problem is that even after 100 epochs the error remains unchanged. And finally what can I change to make this to work?
Thanks in advance.