FOMC Monetary Policy Analysis v2

This is the second version of a project I've decided to do in Artificial Intelligence and Deep Learning. I've started getting quite a passion for the subject and its potential applications. This uses natural language processing (NLP) for binary classification from a multi-layer perceptron (MLP) i.e. standard neural network. It attempts to predict the EUR/USD appreciation/depreciation from the Fed's Monetary Policy Report release date up until the next report release to Congress.

With this second version of my project, I again set the optimizer to Adam. I've read some research that suggests at this point in time it is the best optimizer in dealing with gradient descent as it realizes both benefits of AdaGrad and RMSProp. I then proceeded to incorporate the Hyperas library to assist in optimizing my hyper-parameters. Those parameters chosen for optimization are listed below:

Best performing model chosen hyper-parameters:
{'Dense': 64, 'Dense_1': 16, 'Dropout_1': 0.3838088604298333, 'Dense_2': 8, 'Dropout': 0.9128294469805703}

With those hyper-parameters, I was able to get a 60% level of accuracy which does make it statistically significant but not ultimately ideal....in my opinion.

I also did some research with recurrent neural networks such as LSTM and GRU. This did achieve a similar level of accuracy, but they seemed to be more resource intensive than the standard. I also did some research and testing with a 1D convolutional neural network to see what output I could achieve. This did not lead me to higher levels of accuracy, but was certainly less resource intensive in general.

If there are issues with accessing my Gihub repo below, I have a zipped file with my code, model, and datasets here: Repo Copy

Please see my Github for code and datasets related to this project.

This is my deep learning output from Keras.

Using TensorFlow backend.
Found 8784 unique tokens.
Shape of data tensor: (34, 20000)
Shape of label tensor: (34,)
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
embedding_1 (Embedding)      (None, 20000, 256)        5120000
_________________________________________________________________
flatten_1 (Flatten)          (None, 5120000)           0
_________________________________________________________________
dense_1 (Dense)              (None, 64)                327680064
_________________________________________________________________
dropout_1 (Dropout)          (None, 64)                0
_________________________________________________________________
dense_2 (Dense)              (None, 16)                1040
_________________________________________________________________
dropout_2 (Dropout)          (None, 16)                0
_________________________________________________________________
dense_3 (Dense)              (None, 8)                 136
_________________________________________________________________
dense_4 (Dense)              (None, 1)                 9
=================================================================
Total params: 332,801,249
Trainable params: 332,801,249
Non-trainable params: 0
_________________________________________________________________
Train on 30 samples, validate on 4 samples
Epoch 1/50
 - 26s - loss: 0.6981 - acc: 0.5333 - val_loss: 0.6970 - val_acc: 0.7500
Epoch 2/50
 - 6s - loss: 2.4526 - acc: 0.4000 - val_loss: 0.7367 - val_acc: 0.7500

.........................................................................

 - 5s - loss: 1.5206 - acc: 0.5667 - val_loss: 0.6844 - val_acc: 0.5000
Epoch 45/50
 - 4s - loss: 1.1919 - acc: 0.6000 - val_loss: 0.6859 - val_acc: 0.5000
Epoch 46/50
 - 4s - loss: 3.1487 - acc: 0.6000 - val_loss: 0.6850 - val_acc: 0.5000
Epoch 47/50
 - 4s - loss: 2.0293 - acc: 0.5000 - val_loss: 0.6863 - val_acc: 0.5000
Epoch 48/50
 - 4s - loss: 1.0979 - acc: 0.5000 - val_loss: 0.6977 - val_acc: 0.5000
Epoch 49/50
 - 5s - loss: 3.5089 - acc: 0.4333 - val_loss: 0.7059 - val_acc: 0.5000
Epoch 50/50
 - 4s - loss: 1.0606 - acc: 0.6000 - val_loss: 0.7121 - val_acc: 0.5000
5/5 [==============================] - 0s 67ms/step
Test loss: 0.6752365827560425
Test accuracy: 0.6000000238418579