# Machine Learning Techniques to Detect a DDoS Attack in SDN: A Systematic Review
## 5 Available Benchmarked DDoS Datasets and Classes of Attacks in Datasets
\begin{table}
\begin{tabular}{p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt}} \hline \hline
**Ref.** & **Preprocessing Strategies** & **Hyperparameter Values** & **Experimental Setups** & **Performance Metrics** \\ \hline [PERSON] et al. [51] & Ensemble learning & & & Accuracy = 85.2\%, Precision = 86.5\%, Recall = 85.2\%, F1-score = 84.9\% \\ \hline [PERSON] et al. [52] & Six different ML models & & & Accuracy between 4.01\% and 30.5\% \\ \hline [PERSON] et al. [53] & DNN/LSTM & Input layer = 25 pixels, dense layer = 60 neurons, dropout rate = 0.2, batch size = 0.0001, learning rate = 0.0001 & TensorFlow, Keras 1.10 & TPR = 0.998, Accuracy = 98.72\%, Precision = 0.949, F1-score = 0.974, and AUC = 0.987 \\ \hline [PERSON] et al. [54] & & Two computers with dual-core processors & Recall = 0.91, F1-score = 0.91, Support = 2140 \\ \hline [PERSON] et al. [55] & Cost-sensitive learning and min-max scaling & Seven hidden layers, input layer = 66 neurons, output layer = 5 neurons, epochs = 300, learning rate = 0.001 & Intel Xeon E5 v2 = 98\% \\ \hline [PERSON] et al. [56] & & Eighty neurons for input, five neurons in the output layer, four hidden layers, Adam optimizer & SciKit and Keras API & Precision: Benign = 0.99, Slowloris = 1.00, Slowthrptset = 0.99, Hulk = 1.00, GoldenEye = 1.00, Accuracy = 99.61\%. \\ \hline [PERSON] et al. [57] & & & Recall = 1, F1-score = 0, Accuracy = 9.9999, Precision = 0.99 \\ \hline [PERSON] et al. [58] & Min-max & Two Dropout Layers, 0.001 Learning Rate, 50 Epochs, and ReLu & Four PCs, one firewall, two switches and one server & Recall = 99.30\%, Precision = 99.52\%, F1-score = 99.99\%, Accuracy = 99.66\%. \\ \hline [PERSON] et al. [59] & Min-max & Three hidden layers, 50 units of neurons each, and sigmoid & Intel Core i7-7700 & Dataset 1: F1-Score = 0.9998, Accuracy = 0.9997, Precision = 0.9999, Recall = 0.9998, Dataset2: F1-Score = 0.8721, Accuracy = 0.9457, Precision = 0.8049, Recall = 0.9515. \\ \hline [PERSON] et al. [60] & Two convolutional layers, a max-pooling layer, a fully connected layer (250 neurons), and SoftMax & F1-score = 99\%, FPR = 1\%, FNR = 1\%, Accuracy = 99\%, Sensitivity = 99\%, Specificity = 99\% \\ \hline [PERSON] et al. [61] & Min-max & Max pooling size = 2, filter size = 3, two hidden layers, output layer with 11-9-7-6 nodes, and ReLu & Normal = 99.3\% accurate; Back = 97.8\% accurate; Neptune = 99.1\% accurate; Smurf = 99.2\% accurate; Teardrop = 83.3\% accurate; Others = 87.1\% accurate. \\ \hline [PERSON] et al. [62] & & Used a method of progressive training to train an MC–CNN & Accuracy: C7 = 98.87\%, KU (two classes) = 99.18\%, KC (five classes) = 98.54\%. \\ \hline [PERSON] et al. [63] & Padding (8 and 41) was transformed into 3 \(\times\) 3 and 6 \(\times\) 7 matrices, respectively & CNN model with softmax function, and ReLu function & Tenserflow and Keras & Dataset 1: Accuracy = 0.0067; Dataset 2: Accuracy = 0.9924, Loss = 0.0076 (NSL-KDD) \\ \hline [PERSON] et al. [64] & Z-score & Two dense FC layers, one layer to flatten three 2D CLs, two max PLs, and three 2D CLs with ReLu & Intel Core i7-6700 & F1-score = 99.61\%, Accuracy = 99.45\%, Precision = 99.5\%, Recall = 99.64\%, Testing = 0.061 min, Training = 39.52 min, CPU Usage = 6.025. \\ \hline [PERSON] et al. [65] & Image are created by turning each byte in a packet into a pixel & Two FC layers, two PL levels, and two CL layers; the limit for entropy values = 100 packets/s & Intel Core i5, 7300 HQ processor, POX controller, one server, and six switches with Hping3 and the TensorFlow framework & Precision = 98.99\%, Recall = 98.99\%, Accuracy = 98.98\%, Training time = 72.81 s, AUC = 0.949 \\ \hline \hline \end{tabular}
\end{table} 
Table 5: _Cont._  
\begin{table}
\begin{tabular}{p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt} p{113.8 pt}} \hline \hline
**Ref. ** & \begin{tabular}{c} **Preprocessing** \\ **Strategies** \\ \end{tabular}  & \begin{tabular}{c} **Hyperparameter Values** \\ **Setups** \\ \end{tabular}  & \begin{tabular}{c} **Experimental** \\ **Setups** \\ \end{tabular}  & \