## 2 Materials and Methods
### Classification Strategy  
For this work, traditional classifiers, such as Support Vector Machine with a linear kernel (L-SVM), Support Vector Machine with a Gaussian kernel (SVM-RBF) and Extreme Gradient Boosting (XGBoost) were chosen, as well as deep classifiers like Attentive Interpretable Tabular Learning (TabNet) and Multi Layer Perceptron (MLP). SVM classifiers are the most commonly used classifiers in these classification problems. They have demonstrated superior performance compared to other classifiers, particularly in scenarios with a small number of samples and a large number of features [32]. XGBoost belongs to the family of the three classifiers, which has proven to be particularly effective for tabular data classification problems [33]. Furthermore, this classifier has better generalization capability and is less susceptible to overfitting than other classifiers. TabNet is a deep learning classifier mostly used when dealing with tabular data; it employs sequential attention to select the most relevant features for reasoning at each decision step, enhancing interpretability and optimizing learning efficiency by focusing the learning capacity on the most significant features [34]. MLP consists of fully connected layers where every node of each adjacent layer is connected; it is a classifier that is easy to implement, fast and has shown performances that outperform other classifiers [35]. The L-SVM and SVM-RBF classifiers were implemented using the sklearn.svm.SVC module from the Python library _scikit-learn_[36; 37].  
For L-SVM and SVM-RBF, we specified only the kernel type, respectively, _linear_ and _rbf_, leaving all the other parameters with the default values. For XGBoost, we used the XGBoostClassifier from the _xgboost_ package inPython (V. 3.9.12) [38].  
The hyperparameters used for the tuning were max_depth:[2,12], min_child_weight:[1,61], eta:[0.1,1]. All the other hyperparameters have been left at their default value. The TabNet classifier was implemented with the TabNetClassifier from the PyTorch library pytorch_tabnet.tab_model [39] and the MLP was implemented using the MLPClassifier from sklearn.neural_network package [40]. For TabNet's hyperparameter tuning, we used n_d:[8,64], n_a:[8,64], n_steps:[1,10], gamma: [1,2], momentum:[0.9,1] with max_epochs = 300, batch_size = 64, patience = 10, learning-rate: \(2\times 10^{-2}\) and Adam optimizer. All the other hyperparameters have been left at their default values. For the MLP, we used hidden_layer_size = (128, 64, 64, 32), activation = relu, batch_size = 32, max_iter = 300, and solver = adam, leaving all the other parameters set at default values.  
We used the calculated features for each subject, along with the class labels +1 for ASD subjects and \(-1\) for TD subjects, for the classification task. We applied the Scikit-learn's RobustScaler function for feature scaling for each classifier, within the classification step, and we conducted hyperparameter tuning for XGBoost and TabNet classifiers. The classification outcomes were obtained using the repeated stratified k-fold cross-validation, with 5 folds and 10 repetitions. To evaluate the classification performances, we used the area under the ROC curve (AUC) [41; 42], calculating it for each fold and repetition. The final results are presented as the mean of the AUC with the associated the standard deviation as error.  
Considering the higher number of features compared to the number of samples, which increases the complexity of the analysis and the risk of overfitting, we evaluated the classifier performances both with and without Principal Component Analysis (PCA). We varied the number of principal components (PCs) from 30 to 300 PCs (30, 50, 100, 200, 300).