## 2 Materials and Methods
### Applied Models  
The models employed in this study can be broadly categorised into three groups: 1. classical machine learning (ML) algorithms such as the Decision Tree (DT), Naive Bayes (NB), Support Vector Machine (SVM), and k-Nearest Neighbours (k-NN); 2. ensemble-based methods exemplified by Random Forest (RF); and 3. deep learning (DL) approaches. Before applying any models, it is crucial to carefully determine appropriate model selection and assessment methods. [PERSON] et al. (2009) [45] suggest that when data are abundant, the optimal strategy is to randomly divide the dataset into three parts: training (50%) to fit the models, validation (25%) to estimate prediction error, and testing (25%) to evaluate the generalisation error of the final selected model. However, in many real-world problems, data are often limited, making it common to omit a separate validation set. In such cases,k-fold cross-validation becomes essential, as it allows the model to be trained on a portion of the data while reserving a 1/k portion for validation in each fold. As such, we considered the dataset size and class distribution. The dataset contains fewer than 5000 observations, with approximately 76%, 20%, and 4% of instances belonging to different classes. This indicates both a relatively small dataset and an imbalanced class distribution. To address these challenges, we implemented k-fold cross-validation techniques during model development. Additionally, we applied stratified sampling with an 80:20 ratio for the training and test sets to ensure a balanced representation of each class. During model training, we incorporated stratified 5-fold cross-validation and adjusted class sampling weights based on the distribution of each class to improve classification performance. Figure 3 illustrates the overall class distribution of the dataset, the stratified split of training and test sets by class, and the class distribution across the 5-fold stratified cross-validation within the training set. Following data partitioning and class distribution determination, we determined the used R libraries and algorithms parameters listed in Table 5.  
Figure 3: Overview of data partitioning and class distribution. The first panel shows the overall distribution of classes in the dataset. The second panel presents the stratified split of the dataset into training and test sets, preserving class proportions. The third panel illustrates the class distribution across the five folds used in stratified cross-validation within the training set. Following dataset partitioning and class distribution determination, we selected and tuned a variety of classical machine learning (ML), ensemble-based, and deep learning algorithms using the appropriate R libraries to ensure robust model performance. Classical ML algorithms:  
DT: We utilised the rpart library [46] to implement DT models, selecting the complexity parameter (cp) via grid search to prevent overfitting. SMOTE (Synthetic Minority Oversampling Technique) was applied during training to address class imbalance. DTs are simple, interpretable models that are useful as a baseline classifier. NB: Using the klaR and caret packages [47; 48], we applied NB due to its efficiency and low computational requirements. It serves well in high-dimensional settings assuming conditional independence among features. SMOTE was applied during training to ensure balanced class distributions. SVM: The kernlab and caret packages [48; 49] were employed to fit SVM models with radial basis function kernels. An SVM is highly effective for handling non-linear decision boundaries. The models were tuned by optimising the regularisation parameter (C) and the kernel width (\(\sigma\)) to improve classification performance. SMOTE was used during training to mitigate bias toward majority classes. k-NN: The caret package [48] was used to implement the k-NN algorithm. This method was selected for its simplicity and strong performance when sufficient local data patterns exist.