## 4 Methodology
### Setting Up and Running ML Algorithms  
For each algorithm, a search for optimal hyperparameters was performed by using a grid search. The quality of the hyperparameters was ranked from the average of the mean absolute error (MAE) values of the \(X\), \(Y\), and \(Z\) axes. It is worth mentioning that for the RF, ADA and HGB algorithms, we use implementations of _scikit-learn_[49] ([[https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble)]([https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble](https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble)) (accessed on 30 March 2022)). For the XGB algorithm, we use the xgboost module implementation ([[https://xgboost.readthedocs.io/en/stable/python/python_intro.htm](https://xgboost.readthedocs.io/en/stable/python/python_intro.htm)]([https://xgboost.readthedocs.io/en/stable/python/python_intro.htm](https://xgboost.readthedocs.io/en/stable/python/python_intro.htm)) (accessed on 30 March 2022)). Finally, for the ANN algorithm, we use the implementation of the tensorflow ([[https://www.tensorflow.org/api_docs/python/tf/keras](https://www.tensorflow.org/api_docs/python/tf/keras)]([https://www.tensorflow.org/api_docs/python/tf/keras](https://www.tensorflow.org/api_docs/python/tf/keras)) (accessed on 30 March 2022)) [50]. For the RF algorithm [43], we used the _RandomForestRegressor_, a component implemented by _scikit-learn_. The hyperparameters _max_features_ = sqrt and _min_samples_split_ = 6 were used. Regarding the latter, its insertion was aimed at reducing excessive memory usage, in exchange for a negligible deterioration in performance. The ADA algorithm [44] was modeled by using the _AdaBoostRegressor_, a component implemented by _scikit-learn_. The hyperparameters _n_estimators_ = 50, _loss_ = linear, _learning_rate_ = 0.1 were used and for _base_estimator_ we used _DecisionTreeRegressor_, another component implemented by _scikit-learn_, with the hyperparameters _max_depth_ = 18 and _min_samples_split_ = 14. The XGB algorithm [45] was modeled by using the _XGBRegressor_ component, implemented by the _xgboost_ module. We used the hyperparameters _n_estimators_ = 400, _max_depth_ = 12, _learning_rate_ = 0.1, and _subsample_ = 0.1. The HGB algorithm [46, 47] was modeled by using the _HistGradientBoostingRegressor_ component, implemented by _scikit-learn_. The hyperparameters _max_iter_ = 1000, _max_bins_ = 100, _learning_rate_ = 0.3, and _loss_ = squared_error were used. The ANN algorithm used was the multiLayer perceptron type [38, 39]. The implementation of _tensorflow_[50] was used. After a search for good settings, the one used had four layers, the first with 2000 neurons, the second with 400 neurons, the third with 15 neurons, and 3 neurons in the last one. In regard to the activation functions, in the first three, _ReLu_ was used and in the last one, hyperbolic tangent. The optimizer used was _Adam_ with an initial learning rate of 0.0001 (reduced during execution due to callbacks). For more details, we provide the explanation about all parameters of the algorithms listed in the Supplementary Material. Figure 2: **(A–D,F)** are examples and each gray circle is a position. A is the first example that has \(P_{i}=P_{1}\), \(P_{f}=P_{4}\) and \(Target=P_{2}\). Then, in B, a shift is made on the Target. As there are no more possibilities to build an example with this window, due to the target having passed through all the points between \(P_{i}\) and \(P_{f}\), then it slides to the right, that is, \(P_{i}=P_{2}\), \(P_{f}=P_{3}\) and \(Target=P_{3}\), in this way example C is created. The process continues until it is no longer possible to create new examples (**C–F**).