I am trying to train a system that looks at some data points and predicts the quantity of surfers on a surf break. I have labeled the pattern for the past 2 months and I have 1500+ training examples with observations every 15 minutes during the day (excluding night time)
My data is shown below (*kooks = surfers):
I am using Keras and here's the code:
*I am removing the month feature from the input matrix before processing it. I also did the preprocessing.MinMaxScaler()
drill.
model = Sequential()
model.add(Dense(64, input_dim=6, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='relu'))
model.compile(optimizer='adam',loss='mse', metrics=['accuracy'])
early_stopping_monitor = EarlyStopping(patience=10)
history = model.fit(X, y, validation_split=0.33, epochs=200, batch_size=15, verbose=0, callbacks=[early_stopping_monitor])
The results I am getting are extremely poor:
Test score: 0.015
Test accuracy: 0.12
I have tried multiple optimizers and multiple activation functions, but haven't landed at a satisfactory model yet.
I have a couple of suspicions:
- The data is not really predictable, as the system is getting confused as some times many of the features are the same (see lines 0 and 1), but the expected output is completely different.
- The design of the model is not well suited (I don't really know how to design the hidden layer dimensions)
- The loss function, optimizer and/or activation functions on each layer (including the output layer) are not well suited.
Am I doing something really wrong or this is just the nature of the beast? Any thoughts / advices?