## 3 Methods
### Gaussian Process Regression  
As a kernel-based machine learning algorithm, GPR can effectively analyze small samples and low-dimensional regression problems and is therefore widely used in the research fields of lithium-ion battery and solar energy prediction [76; 77]. GPR is essentially a non-parametric model that uses Gaussian process priors to perform regression analysis on data [78]. GPR uses probabilistic methods to train on sample data, while other regression methods require detailed modeling parameters. Furthermore, GPR is determined by both the mean function and covariance function, and Bayesian inference is used to obtain  
Figure 3: Flow chart of the RFE algorithm.  
hypotheses for posterior probability [79]. GPR has wider applicability for dealing with complicated and nonlinear problems [78].  
A Gaussian process is commonly determined by the following functional formula:  
\[f(x)\,\sim GP\big{[}m(x),k\big{(}x,x^{\prime}\big{)}\big{]} \tag{8}\]  
where  
\[m(x)=E[f(x)] \tag{9}\]  
\[k\big{(}x,x^{\prime}\big{)}=E\big{[}(f(x)-m(x))\big{(}f\big{(}x^{\prime}\big{)} -m\big{(}x^{\prime}\big{)}\big{)}\big{]} \tag{10}\]  
\(x,x^{\prime}\in R^{n}\) are random variables, and \(m(x)\) and \(k(x,x^{\prime})\) are mean function and covariance function, respectively. Usually, \(m(x)=0\) to simplify the calculation process [77]. Considering that the observed target value \(y\) contains noise, the general model for establishing GPR is:  
\[y=f(x)+\varepsilon \tag{11}\]  
where \(\varepsilon\) is noise and \(\varepsilon\,\sim N\big{(}0,\sigma_{n}^{2}\big{)}\). Thus, the prior distribution of the observed value \(y\) is:  
\[y\,\sim N\Big{(}0,k\big{(}x,x^{\prime}\big{)}+\sigma_{n}^{2}I_{n}\Big{)} \tag{12}\]  
where \(I_{n}\) is an n-dimensional identity matrix. Assuming that the testing dataset \(X^{*}\) and the training dataset \(X\) have the same Gaussian distribution, the joint prior distribution of the observed value \(y\) and the predicted value \(y^{*}\) is:  
\[\begin{bmatrix}y\\ y^{*}\end{bmatrix}\,\sim N\bigg{(}0,\begin{bmatrix}K(X,X)+\sigma_{n}^{2}I_{n}&K (X,X^{*})\\ K(X^{*},X)&K(X^{*},X^{*})\end{bmatrix}\bigg{)} \tag{13}\]  
where \(K(X,X)\) is the covariance matrix of the training dataset, \(K(X^{*},X^{*})\) is the covariance matrix of the testing dataset, and \(K(X,X^{*})=K(X^{*},X)^{T}\) is the covariance matrix between the training dataset \(X\) and the testing dataset \(X^{*}\). Accordingly, the posterior distribution of the predicted value \(y^{*}\) can be calculated as:  
\[y^{*}|X,y,X^{*}\,\sim N\big{(}\overline{y^{*}},cov(y^{*})\big{)} \tag{14}\]  
where  
\[\overline{y^{*}}=K(X^{*},X)\Big{[}K(X,X)+\sigma_{n}^{2}I_{n}\Big{]}^{-1}Y \tag{15}\]  
\[cov(y^{*})=K(X^{*},X^{*})-K(X^{*},X)\Big{[}K(X,X)+\sigma_{n}^{2}I_{n}\Big{]}^ {-1}K(X,X^{*}) \tag{16}\]  
and \(\overline{y^{*}}\) and \(cov(y^{*})\) are the mean and covariance of the predicted value \(y^{*}\) on the testing dataset \(X^{*}\), respectively.  
Choosing the covariance function (i.e., the kernel function) is one of the key factors affecting model performance. As part of the model assumptions, the covariance function describes the correlation between samples [79]. Commonly used covariance functions include the rational quadratic covariance function, exponential covariance function, squared exponential covariance function, and Matern covariance function. In this study, different covariance functions are compared based on the root mean square error (RMSE), and the exponential covariance function with the smallest RMSE was selected. Its functional formula is:  
\[k\big{(}x_{i},x_{j}|\theta\big{)}=\sigma_{f}^{2}exp\bigg{(}-\frac{r}{\sigma_{ l}}\bigg{)} \tag{17}\]  
where \(\sigma_{f}\) is the signal standard deviation, \(\sigma_{l}\) is the characteristic length scale, and \(r=\sqrt{\big{(}x_{i}-x_{j}\big{)}^{T}\big{(}x_{i}-x_{j}\big{)}}\) is the Euclidean distance between \(x_{i}\) and \(x_{j}\). Using the maximum likelihood method, the hyperparameter \(\theta\Big{(}\sigma_{f},\sigma_{l}\Big{)}\) of the covariance function can be obtained.