I am new to deep learning and data science and trying to increase my knowledge by working on some hackathons. Currently, the hackathon project I am working on has the task to predict the closing price of crypto-currency based on 48 parameters with ~1200 records.
By far I was able to achieve some good accuracy from the model but still, my score is very low. I have tried many things from knowledge but it doesn't seem to be affecting the performance a bit. So I just want a little suggestion and tips, since there is scope to improve the performance.
Here are some sample records from my dataset.
The dataset has 48 features however, the model is performing well only with 5 columns that are ['open', 'high', 'low', 'market_cap', 'market_cap_global']
I have tried a small neural network with only 2 hidden layers. And I have fed the model with the above 5 features which are scaled with a standard scaler. Apart from this, I also have utilized
early stopping, and a custom loss function for calculating rmse.
Till now this is the best performing model I was able to create
# create model model_dl2 = Sequential() model_dl2.add(Dense(50, input_dim=5, activation='relu')) model_dl2.add(Dense(75, activation='relu')) model_dl2.add(Dense(1, activation='linear')) # custom loss function from keras import backend as k def root_mean_squared_error(y_true, y_pred): return k.sqrt(k.mean(k.square(y_pred - y_true))) # callbacks loss = ModelCheckpoint('Models/best_model2.h5', monitor='val_loss', verbose=1, save_best_only=True) es = EarlyStopping(patience=500) # Compile model opt = tf.keras.optimizers.Adam(learning_rate=0.5, amsgrad=True) model_dl2.compile(loss= root_mean_squared_error, optimizer=opt) model_dl2.fit(x_trainS2, y_trainS2, validation_data=(x_testS2, y_testS2), epochs=3000, batch_size=128, callbacks=[loss, es]) ## accuracy rmse:53
My attempt to increase the performance
The accuracy of the model is stuck around rmse of 53, I have tried many things such as
- different activation function, optimizer functions with different learning rate
- increased/decreased hidden layers neurons (vertical scaling)
- increased/decreased neurons (horizontal scaling)
- I tried to take PCA of the rest 43 or some selected columns
But none of this increased the accuracy.
Apart from this, Dataset also have few issues such as
- many null values in both target and features 'close', about ~30%
To solve these issues I have tried few things which weren't that helpful except the 1st one.
- For null values it seems to be working well if we fill it with 0's in both features and the target column. So not dropped any rows
- For skewness I tried to do Power transformation but it didn't work. Also, I can't do a log transformation because the dataset contains negative values. So basically did nothing
- Because of multicollinearity I used only 5 features (mentioned above) that are working well. However, these 5 features are also highly correlated and for that, I was relying on data transformation but it didn't work.
My problems may sound very basic but I have applied many things that I have learned by myself and now I am out of ideas. I don't know what to do. Improving the dataset issue could be one solution but I don't know what to do, after trying those things. Also if the issue is in the model then it will be great if you can recommend some tuning that I may be missing
feel free to ask for more details if you need to.