## 2 Materials and Methods
### Modeling
#### 2.3.2 Building of Predictive Models  
The following models were trained using the training dataset:  
* Regression Tree (RT): These divide the data into homogeneous subsets through binary partitions. The most discriminative variable is first selected as the root node to split the dataset into nodes or branches. The partitioning is repeated until the nodes are homogeneous enough to be definitive. Thus, in a tree structure, the terminal nodes (called leaves) represent class labels, and the branches represent conjunctions of features leading to those class labels [20].
* K-Nearest Neighbors Regressor (KNN): This method predicts for a given data point based on the average of the target values of the K-nearest neighbors. The main advantage of KNN regression is that it is simple to apply and can perform well in practice, especially if there is a clear pattern in the data. However, KNN regression can be computationally expensive as it requires calculating distances between all data points in the training set for each prediction [41].
* Multi-Layer Perceptron Neural Network Regressor (MLP): A computational model inspired by biological neural networks, featuring a layered organization of neurons where the input layer represents the predictor variables, the output layer represents the target variable, and the hidden layers perform nonlinear mappings of the data [42].
* Support Vector Machine Regressor (SVR): Constructs a hyperplane supported by as many data points as possible, called support vectors. They are known for using the kernel trick to increase the dimensionality of the data and achieve prediction [43].
* Random Forest Regressor (RF): Constructs a large number of decision trees at training time, and the prediction outputs are subjected to a vote by the individual trees. The basic concept behind this is that a group of weak classifiers can be joined together to build a strong prediction [44].
* Gradient Boosting Regressor (GBoost):Gradient boosting is an ensemble of multiple models, typically decision trees. The fundamental concept behind this algorithm is that each tree is trained using the errors (residuals) from all the preceding trees. Additionally, the negative gradient of the loss function in the current model is employed as an estimate for these errors in the boosted tree algorithm, which helps adjust the regression or classification tree [27].
* Extreme Gradient Boosting Regressor (XGBoost): It is a technique based on decision trees that takes into account data dispersion for approximate tree learning. It is a gradient boosting algorithm optimized through parallel processing, tree pruning, handling of missing values, and regularization to avoid overfitting and bias [45].  
To select the models with the best performance, MAPE of the models was compared using a 10-fold cross-validation. The training sets are divided into 10 groups, selecting one as the test set in each iteration. The remaining 9 groups are used as the training set, and the model is trained and evaluated 10 times. The MAPE metric is calculated as the average of these 10 evaluations. Using 10-fold cross-validation can effectively avoid overfitting or underfitting and improve the reliability of the final prediction [23].