## 4 Material and Methods
### Experimental Parameters  
The experimental setup initially attempted to mimic the study with which we compared ours, the original study that defined the dataset [4]. The same grid search using train-test 10 fold cross-validation was applied to choose the parameter values from those described in Table 2. This included the parameters for the \(k\)NN classifier, which was incorporated into our experimentation to introduce diversity by considering a proximity-based classifier. To evaluate the performance of the classification, the same internal cross-validation of ten partitions from grid search optimization was used in the original study. To obtain stable results, they repeated the experimentation 100 times. However, given that the number of combinations evaluated by grid search is in the order of the tens of thousands, overfitting is likely to occur, potentially leading to an overestimation of the expected accuracy. To address this issue, instead of repeating the experimentation 100 times, we utilized nested cross-validation with 100 folds. In this way, the results were expected to be similar in testing, as only a very small number of instances were omitted in each run, while providing a reliable estimate of the expected performance. The whole process was repeated 10 times to ensure a stable final validation result. This evaluation is illustrated in Figure 4.  
After reproducing the experimentation with the 13 features selected in the original study, the GA was applied with the goal of finding a better feature set fitting more effective classifiers. In order to configure the parameters of the GA, based on previous experimentation, we adopted the values proposed in [20], which are detailed in Table 3. Since using grid search inside the wrapper cross validation (used as fitness measure) is unfeasible, the default parameters from scikit-learn were used for the classifiers and 1 nearest neighbor for \(k\)NN. \begin{table}
\begin{tabular}{l l l l l} \hline \hline _Parameter_\({}^{\dagger}\) & \(k\)NN & **DTC** & **RFC and ETC** & **XGBC** \\ \hline k & [1,3,5,7,9] & — & — & — \\ \hline max\_depth & — & [1, 2,..., 10, None] & & [1, 2,..., 6, None] & [3, 5, 7, 10] \\ \hline min\_samples\_splits & — & [2, 3,..., 10] & [2, 3,..., 5] & — \\ \hline min\_samples\_leafs & — & [1, 2,..., 10] & [1, 2,..., 1] & — \\ \hline max\_features & — & [1, 2,..., num\_features] & [1, 2,..., sqrt(num\_features)] & — \\ \hline n\_estimators & — & — & [100, 200] & [100, 200] \\ \hline learning\_rate & — & — & — & [0.01, 0.1] \\ \hline min\_child\_weight & — & — & — & [1, 3, 5] \\ \hline subsample & — & — & — & [0.5, 0.7] \\ \hline colsample\_bytree & — & — & — & [0.5, 0.7] \\ \hline \hline \end{tabular} \({}^{\dagger}\)**k:** The number of nearest neighbors used to classify in \(k\)NN. **max\_depth:** The maximum depth of the tree. **min\_samples\_splits:** The minimum number of samples required to split an internal node. **min\_samples\_leafs:** The minimum number of samples required to be at a leaf node. **max\_features:** The number of features to consider when looking for the best split. **n\_estimators:** The number of trees in the forest. **learning\_rate:** Step size shrinkage used in update to prevent overfitting. **min\_child\_weight:** Minimum sum of instance weight needed in a child. **subsample\_**Subsample ratio of the training instances. **colsample\_bytree:** Subsample ratio of columns when constructing each tree.  
\end{table} 
Table 2: Parameters of the classifiers tested in grid search. In order to find a good setup for feature selection GA, the parameter values shown in Table 4 were tested. As part of our comparative analysis, we also executed DE. Its parameter settings are summarized in Table 5. The control parameters F and CR were selected from commonly used default values in the DE literature, based on preliminary experiments on other datasets.