Machine-learning methodology
This study utilized both unsupervised and supervised machine-learning techniques to analyze kinematic data. All analyses were performed using Orange data mining software (version 3.3.0; Ljubljana, Slovenia) and Python (version 3.6.15; Python Software Foundation).

The dataset comprised 15 features: Five demographic variables (sex, age, height, weight, and BMI) and ten kinematic measures (PHD, FHD, KHD, LHD, and AHD for both the SU and SD tasks). A total of 258 data points, derived from three repeated measurements per participant, were used in the machine-learning models. The EOAQ results were dichotomized to indicate the presence or absence of EOA. Prior to analysis, we conducted thorough data preparation procedures. First, all continuous variables were examined for normality using Shapiro–Wilk tests and visual inspection of histograms. For the machine learning analysis, continuous features were standardized using z-score normalization to ensure all variables contributed equally to the models regardless of their original scales. The present study conducted a thorough exploratory data analysis to identify missing values, which were subsequently addressed by eliminating incomplete cases.

To ensure model accuracy, the present study employed boxplots to visualize the variable distributions. Outliers were then removed using a local outlier factor method with the following parameters: 9% contamination, 20 neighbors, and the Euclidean metric. An unsupervised clustering model for the SU and SD kinematic patterns was developed using the Louvain clustering algorithm ( Ekerete et al., 2021 ). This method was chosen because of its ability to handle complex datasets and automatically determine the optimal number of clusters. The algorithm incorporates Euclidean distancing on raw data and principal component analysis to enhance clustering efficiency. Louvain clustering automatically identified four distinct clusters in the integrated dataset. Cluster validity was assessed using two complementary metrics: the Davies–Bouldin index (which quantifies the average similarity between clusters, where lower values indicate better separation) and the Calinski–Harabasz index (which reflects the ratio of between-cluster to within-cluster variance, with higher values indicating better-defined clusters). These metrics were supplemented with comprehensive statistical analysis of between-cluster differences to fully evaluate the distinctiveness of the identified clusters.

To rigorously assess the distinctiveness of these kinematic patterns, the 15 features were compared across clusters using one-way analysis of variance, with the statistical significance set at p < 0.05. For multiple comparisons, we implemented Tukey’s post-hoc analysis, thus controlling for type I errors in our statistical analysis.

For the supervised learning phase, we used 15 features to classify the binary EOA outcomes. After excluding missing data, the final dataset ( n = 209) was divided into training (80%, n = 168) and testing (20%, n = 41) sets. We evaluated six ML algorithms: k-nearest neighbors (kNN), decision tree, AdaBoost, gradient boosting, Random Forest, and support vector machine. Each model was trained using 5-fold cross-validation to ensure robustness and generalizability.

To optimize model performance, we conducted extensive hyperparameter tuning using grid search with 5-fold cross-validation on the training dataset. The search space and optimal hyperparameters for each algorithm were as follows:

For Random Forest: number of estimators [50, 100, 200] and maximum depth [5, 10, None] were explored, with 100 estimators and max_depth = 10 identified as optimal.

For gradient boosting: learning rate [0.01, 0.1, 0.2], number of estimators [100, 200, 300], and maximum depth [3, 5, 7] were tested, with learning_rate = 0.1, n_estimators = 200, and max_depth = 3 selected as optimal.

For AdaBoost: base estimator (Decision Tree with max_depth 1, 2, 3), learning rate [0.1, 0.5, 1.0], number of estimators [50, 100, 200], and algorithm [‘SAMME’, ‘SAMME.R’] were evaluated, with Decision Tree (max_depth = 1), learning_rate = 1.0, n_estimators = 100, and algorithm = ‘SAMME’ identified as optimal.

For support vector machine: kernel type [‘linear’, ‘rbf’, ‘poly’], C [0.1, 1, 10], and gamma [‘scale’, ‘auto’] were evaluated, with a linear kernel, C = 1, and gamma = ’scale’ identified as optimal.

For decision tree: criterion [‘gini’, ‘entropy’], maximum depth [None, 5, 10], minimum samples split [2, 5, 10], and minimum samples leaf [1, 2, 4] were tested, with gini criterion, unlimited depth, min_samples_split = 2, and min_samples_leaf = 1 selected as optimal.

For k-nearest neighbors: number of neighbors [3, 5, 7, 9], weights [‘uniform’, ‘distance’], algorithm [‘auto’, ‘ball_tree’, ‘kd_tree’], and metric [‘euclidean’, ‘manhattan’] were explored, with seven neighbors, distance weighting, auto algorithm, and manhattan distance identified as optimal.

To prevent overfitting, we implemented several strategies: (1) strict separation of training and testing data, (2) 5-fold cross-validation during model development, (3) regularization through hyperparameter tuning, and (4) comparison of training and testing performance to detect potential overfitting.

Our primary performance metric was the area under the receiver operating characteristic curve (AUC), which was computed for both the training and test sets and averaged across classes. AUC measures the model’s ability to discriminate between classes, with higher values indicating better discrimination. We also considered secondary metrics: (1) accuracy, which represents the proportion of correctly classified instances; (2) precision, which indicates the proportion of positive identifications that were actually correct; (3) recall, which measures the proportion of actual positives that were correctly identified; and (4) F1-score, which is the harmonic mean of precision and recall, providing a balance between these two metrics. All metrics were averaged across classes. Model performance was classified based on AUC values as follows: excellent (≥0.9), good (0.8–0.9), fair (0.7–0.8), and poor (<0.7), in accordance with established guidelines ( Hwang et al., 2024 ).

To determine the relative importance of the predictors, we employed a dual approach combining feature permutation importance and SHapley Additive exPlanations (SHAP) ( Hwang et al., 2024 ). The feature permutation importance method assessed the impact on the model performance, quantified by the AUC change, when randomly shuffling each feature’s value. Features that caused larger performance decrements upon permutation were considered more crucial to the model’s predictive power. To complement this, we utilized SHAP values to provide a visual representation of the influence of each feature on the model predictions. SHAP summary plots were generated, arranging the predictors on the y -axis in order of importance, with the most influential at the top. The x -axis displayed the SHAP values, illustrating both the magnitude and direction of the impact of each feature on the model output. This comprehensive approach to feature importance analysis offered valuable insights into the specific ways in which different variables shaped our predictions, thereby enhancing the interpretability of our ML models and providing a nuanced understanding of the factors that contribute to EOA classification.