## 5 Comparison of Popular MI Techniques beyond BDTs with Adaboost  
In this section, we show the results achieved using a wider range of algorithms and libraries for each of the decays explained in Section 3. The main libraries we use are Sklearn, PyTorch and Keras. The main algorithms we use are BDT with AdaBoost and NNs, which were all introduced in Section 2. We limit ourselves to fully connected NNs with several layers. Although we began this exercise using both types of algorithms for each library, once we obtained the results, we realized that the results for BDT with AdaBoost, when compared to NNs, were worse for every analysis for the PyTorch and Keras libraries and every classification of the data. This is the reason that we show only the results for the NNs for these two libraries. Furthermore, since, in Section 4, we found TMVA to have systematically lower AUC scores when compared to Sklearn, we did not include it in this second part. Finally, the results for Sklearn are shown using BDT with AdaBoost,, since these were almost the same as this library when compared to NNs. Therefore, we analysed a total of 72 different classifiers (4 decay channels, 6 training options and 3 libraries). Overall, the use NNs was shown to generally be as the most competitive option for the analyses in this paper. Note that, in each case, we performed a grid search to choose the hyperparameters with the best AUC scores. These were used later for the actual comparison. The values of the hyperparameters are given in Appendix B. We now show the results for all of the options we developed to select which is the best for each problem. Figures 6 and 7 show the results of all the previously mentioned analyses. For each column, we analysed a different decay and, for each row, we have a different training option for the analysis. For example, in row 0 column 0, we show the ROC Curves for the \(B\to\mu^{+}\mu^{-}\) decay and the low-level features and low stats option, referred to as \"Low-Low\". Similar abbreviations appear for the other categories. Figure 6: ROC Curve for the \(B\to\mu^{+}\mu^{-}\) and \(B\to\pi^{+}\pi^{-}\) decays and the four different options for training. The options are those listed in Section 3. Figure 7: ROC Curve for the \(B\to 3\pi\) and \(B\to 4\pi\) decays and the four different options for training. The options are those listed in Section 3. When using the same decay and the same classification features, we can compare how differently the low-stat and high-stat options behave. In some cases, as in \(B\to 3\pi\), we see how the result improves for all options when using high stats. This is the type of behaviour we would generally expect to achieve when using ML. However, this is not something that happens in every case. For example, in the \(B\to\pi^{+}\pi^{-}\) decay, we see that when using all features the AUC score does not improve, with more statistics, for Keras. The same occurs with Skalearn and high-level features and PyTorch and all features in the same channel. We observe that PyTorch and Skalearn tend to improve, with high stats, while Keras is more robust against a change. We also see a tendency to have a higher dependence on the statistics for the \(B\to 3\pi\) and \(B\to 4\pi\) decays, which present more final state particles and, therefore, have more features to account for. To check how the selection of features affects the performance of these algorithms, we note there are no large differences between different decay channels and between the low- and high-stats categories. We then count how often the best AUC score is obtained for the different libraries depending on the feature selection. One would a priori expect that the addition of information from secondary features at the \"all features\" option would benefit the discrimination, especially for NNs. This must be balanced by the fact that adding too many or redundant variables can damage the overall performance in some cases.