## 2 Methodology
### DL Networks
#### 2.5.2 Classification Network Structure  
First, we train a DL network that does not consider time dependency and therefore order of arrival of each data point is not a concern. The focus of this network is to determine if patterns can be recognized in the data features and provide a comparison to the CNN model. Figure 8 displays the CNN architecture used for classification process of layer-wise dataset.  
A typical CNN structure is constructed with a convolutional layer which contains filters (\(F\)) and activation functions (\(g\)) [99]. The activation function used for both convolutional layer stacks is the ReLU function from Equation (1). In our network, we stack two convolutional layers which then feed to a pooling layer. By stacking the two convolutional layers we theoretically create a hierarchical decomposition of the raw input data [100; 101; 102; 103]. Output from the convolution stack is fed to a max pooling layer. Max pooling is used in our network mainly due to better performance when compared to average pooling [104]. This layer reduces the spatial size by extracting feature maps through means of downsampling (reduction of parameters). Since we have a single model, research suggests the proper method to reduce over-fitting in single, fixed-size models is by applying the dropout tech  
Figure 8: CNN architecture.  
nique [105]. Therefore, the feature map is then applied to dropout set to 0.25, meaning 25% of the inputs are dropped. This process is repeated (and can be repeated as many times as specified) upon which the feature map reaches the fully connected (dense) layer and is flattened (transformed into 1D). During this layer a multi-layer perceptron (MLP) is fit on the feature map.  
Raw data from sample 1 and 2 were imported to the classification model in the command-separated value (.csv) format. Then, each dataset is cleaned and prepared with the removal of rows lacking values or containing empty cells (NaN) and unnecessary columns. Once the cleaning was complete, the data was normalized between a range of (0, 1). Next, the data was reshaped and prepared for training on a 75/25 split (training/testing, respectively). Using Keras [106] and TensorFlow [107] packages in Python, the model is formatted to a sequential model with Conv1D layers which creates a convolution kernel that is convolved with the input through a single spatial dimension to create tensors of outputs. All experiments were run on an Intel(R) Core(TM) i7-10700 CPU @ 2.90 GHz, 2.90 GHz with 64.0 GB of RAM. The raw data, after cleaning, has 4950 rows (\(n\)) and 11 features (\(p\)). Raw data was reshaped into a 3D tensor with the shape of (time steps, features, sample). A reshape function from the numpy library [108] is executed that accepts a tuple argument and we train one sample at a time so the data now takes the form: \([Xtrain[0],Xtrain[1]]\). Experiments are run through 100 epochs with a batch size of 16 for both samples, testing is performed on each sample. During training, the model slices the inputs into batch sizes then iterates over a user specified number of epoch cycles. The model iterates over the validation dataset computing the validation loss at the end of each epoch. Using Equation (8), the error is calculated at the end of each epoch. We use the sigmoid activation function to perform binary classification on the output vector. During back-propagation we utilize the standard gradient decent algorithm optimized by Adaptive Moment Estimation (ADAM) [109].