## 2 SSA-XGBoost Model  
### XGBoost  
The XGBoost algorithm [26], introduced by [PERSON] in 2016, enhances the robustness of a learning algorithm through gradient boosting. This entails iteratively reducing the loss function along the gradient direction. Additionally, integrated learning involves merging multiple weak classifiers into a stronger one via a certain combinatorial strategy. Doing so improves the efficiency and accuracy of classification. XGBoost can fully utilize multi-core CPUs for parallel computation [26], thereby diminishing running time. Compared to other extensively applied machine learning algorithms, such as Support Vector Machines [27], XGBoost offers several benefits. It operates with higher efficiency and classification accuracy and is also highly scalable and sparse-aware, rendering it optimal for handling datasets with irregular and imbalanced training data. Ionospheric scintillation is influenced by different factors, and the resulting imbalance between scintillating and non-scintillating data presents a challenge, but XGBoost can effectively address this by establishing the direction of gradient descent [28]. XGBoost consists of a number of different decision trees [29], each of which corresponds to a new function \(f_{i}(x)\), and the core of which is to continuously learn a new function \(f_{i}(x)\) to fit the residuals of the prediction of the previous function \(f_{i-1}(x)\), i.e., it will keep adding decision trees and keep splitting the features during the computation process [26]. After completing the training process and obtaining \(K\) decision trees, the model needs to predict new data. For a given training dataset \(S=\left\{\left(x_{i},\ y_{i}\right)\right\},\ \left(|S|=n,\ x_{i}\in R_{m},\ y_{i}\in R\right)\) with n samples and m features, \(y_{i}\) is the labelled value of the training samples, and for the binary classification task, \(y_{i}\in(0,1)\). The predicted outputs \(y_{i}\) of the model after having \(K\) decision trees are as follows:  
\[\widehat{y}_{i}=\sum_{k=1}^{K}f_{k}(x_{i}),\ f_{k}\in F \tag{1}\]  
where \(F=\left\{f(x)=\omega_{q}(x)\right\}(q:\mathbb{R}^{m}\to T,\omega\in \mathbb{R})\) is the space of the decision trees, the tree structure \(q\) and the leaf weights \(\omega\) represent the two parts that make up a decision tree, and \(T\) denotes the number of leaf nodes in the tree. According to the characteristics of the samples, \(f_{k}(x)\) maps these samples to the corresponding leaf nodes in each tree and assigns a score, and the sum of the scores of each tree is used as the predicted value of the sample. Obviously, the ultimate goal of the XGBoost algorithm is to make the predicted values of all trees as close as possible to the corresponding true values [26] with the strongest generalization ability. On top of the current tree, another tree is added to fit the residuals between the predicted values of the previous tree and the corresponding true values. In order to select the next added tree, an objective function [26] is introduced, which combines a loss function and a rule function, and it is by minimizing this objective function that the integrated learning of XGBoost is achieved, as shown below:  
\[Obj^{(k)}=\sum_{i=1}^{n}l\left(y_{i},\widehat{y}_{i}^{(k-1)}+f_{k}(x_{i}) \right)+\Omega(f_{k}) \tag{2}\]  
where \(i\) denotes the ith sample, n is the number of samples, \(y_{i}\) is the true score of the current tree, \(\widehat{y}_{i}^{(k-1)}\) denotes the predicted value of the \(k-1\) tree, and \(l\) is a loss function that measures the distance between \(y_{i}\) and \(\widehat{y}_{i}^{(k-1)}\). \(f_{k}\) iswhere \(g_{i}=\partial_{g^{(t-1)}}l\left(y_{i},\,\tilde{g}^{(t-1)}\right),h_{i}=\partial^{2 }\tilde{g}^{(t-1)}l\left(y_{i},\tilde{g}^{(t-1)}\right)\), \(\omega_{j}\) is the weight of the jth leaf node, and \(\gamma\) and \(\lambda\) are used to control the complexity of the tree.