# Dynamic Ensemble Selection for EEG Signal Classification in Distributed Data Environments
## 3 Datasets and Experimental Results
In each case, the training objects were randomly partitioned among the local tables using a stratified sampling strategy to preserve class distributions across all subsets. To ensure the stability and reliability of the results, each experiment was repeated 10 times. Given the inherent randomness in some of the evaluated methods, a fixed set of 10 randomly selected seeds was used to enhance reproducibility. Each repetition was executed with a specific seed, consistently applied throughout the entire pipeline. The evaluation of classification performance was conducted on the test set using a variety of metrics: Classification Accuracy (Acc), Recall, Precision (Prec. ), Balanced Accuracy (BAcc), and the F1-score. To provide a more comprehensive assessment, two variants of the F1-score were calculated: macro-averaged F1, which treats all classes equally, and weighted F1, which accounts for class imbalance by weighting classes according to their support. The results are summarized in Tables 1 and 2 (for the EEG Epilepsy dataset) and Tables 3 and 4 (for the BCI Competition IV Dataset 1), presenting averaged metric values from all 10 achieved metrics. The dataset, characterized by varying degrees of dispersion (indicated by annotations such as '3 LT', meaning the dataset has been divided into three separate local tables), is evaluated using three approaches: without coalitions, with coalitions representing agents' agreement, and with coalitions representing agents' disagreement. The following notations are used:  
* Abstract level, sum: Each local classifier (Random Forest, AdaBoost, Gradient Boosting, k-Nearest Neighbours, and Logistic Regression) makes an independent prediction, one decision class. The final decision is the result of majority voting. * Probability level, sum: Each local classifier makes an independent prediction. The resulting probability vectors are summed element-wise, and the class with the highest aggregated score is selected as the final decision. * Unified groups, abstract level: Models are grouped using compliance coalition formation. One strongest coalition makes the final decision by voting. * Diverse groups, abstract level: Models are grouped using diversified coalition formation. One strongest coalition makes the final decision by voting. * Unified groups, measurement level: Models are grouped using compliance coalition formation. One strongest coalition prediction vectors are summed. The final class is the one with the highest aggregated score. * Diverse groups, measurement level: Models are grouped using diversified coalition formation. One strongest coalition prediction vectors are summed. The final class is the one with the highest aggregated score. All methods and experiments were implemented in Python 3.12, utilizing the scikit-learn library for the implementation of classifiers such as Random Forest, AdaBoost, Gradient Boosting, and Logistic Regression, as well as NumPy and Pandas for efficient data processing and analysis. To assess the influence of hyperparameter settings on model performance, a comprehensive evaluation of selected configurations was conducted for each classification algorithm. The following ranges of hyperparameters were examined:  
* Random Forest: The number of estimators (n_estimators) was varied among \(\{10,20,50,100,200\}\). Two splitting criteria were evaluated: gini and entropy. The maximum depth of trees was fixed at max_depth = 6, while the minimum number of samples required to split an internal node (min_samples_split) was tested with values \(\{2,3,4\}\). * AdaBoost: The ensemble size was controlled by varying n_estimators in \(\{10,20,50,100,200\}\). Two boosting algorithms were considered: SAMME and SAMME.R. Additionally, the learning_rate parameter was evaluated with values \(\{0.1,0.5,1.0,1.5\}\) to control the contribution of each weak learner. * Gradient Boosting: The number of boosting stages (n_estimators) was set to values among \(\{10,20,50,100,200\}\), with the learning_rate adjusted across \(\{0.1,0.5,1.0\}\).