## 2 Theory
### BP Neural Network  
As a neural network model using a multilayer perceptron, BP neural network is composed of the input layer, middle layer and output layer. Among them, the middle layer is the hidden layer, which can be a one-layer or multilayer structure. Figure 2 shows the structure of the BP neural network using the Sigmoid function as the activation function for both the hidden and output nodes.  
In Figure 2, the input vector \(X=(x_{1},x_{2},\ldots,x_{n})\) is transferred to the first hidden layer, and the output vector \(A_{1}=(a_{1}{}^{(1)},a_{2}{}^{(1)},\ldots,a_{n}{}^{(1)})\) is obtained by activation function. Then, \(A_{1}\) is transferred to the second hidden layer, resulting in the output \(A_{2}=(a_{1}{}^{(2)},a_{2}{}^{(2)},\ldots,a_{n}{}^{(2)})\). Similarly, \(A_{2}\) is transferred to the output layer, resulting in the output vector \(Y=(y_{1},y_{2},\ldots,y_{n})\). As a result, the prediction values and total loss function are obtained. Next, calculate the gradient of the weight matrix and bias vector of the loss function in each layer by the chain rule, which is the backpropagation of errors. In the end, update the weight matrix and bias vector of each layer by gradient descent method. Repeat the iteration until the loss function satisfies the requirement.  
As described above, the computational procedure of the BP neural network consists of two periods, the forward propagation and the backpropagation. The learning steps of the BP neural network algorithm are as follows:  
Step 1: Input the sample training set \(X=(x_{1},x_{2},\ldots,x_{n})\).  
Step 2: Initialize the weight matrix and the bias vector.  
Step 3: Calculate the output of each layer \(A_{1}\), \(A_{2}\), \(\cdots\). For each layer, the output can be calculated by Equation (3):  
\[a^{(l)}=f(W^{(l)}a^{(l-1)}+b^{(l)}), \tag{3}\]  
where \(f=(.)\) is the activation function, \(W^{(l)}\) is the weight matrix of the \(l\)th layer, \(a^{(l-1)}\) is the output of the nerve cell in the \((l-1)\)th layer, \(b^{(l)}\) is the bias vector of the \(l\)th layer.  
Step 4: Calculate the loss function by Equation (4):  
\[J_{MSE}(W,b)=\frac{1}{2m}\sum_{i=1}^{m}\left[f(x^{i})-y^{i}\right]^{2}, \tag{4}\]  
where \(m\) is the number of training samples, \(f(x^{i})\) is the output of the network, and \(y^{i}\) is the training label.  
Step 5: Determine whether the loss function value meets the requirement. If it meets, end the algorithm. Otherwise, go on to the next step.  
Step 6: Update the weight matrix and bias vector of each layer by Equations (5) and (6):  
\[W^{(l+1)}=W^{(l)}-\eta\frac{\partial J(W,b)}{\partial W^{(l)}}, \tag{5}\]  
\[b^{(l+1)}=b^{(l)}-\eta\frac{\partial J(W,b)}{\partial b^{(l)}}, \tag{6}\]  
Figure 2: Model of the backpropagation (BP) neural network.  
where \(\eta\) is the learning rate, \(\frac{\partial j(W,b)}{\partial W^{(l)}}\) is the gradient of the loss function to the weight matrix of the \(l\)th layer and \(\frac{\partial j(W,b)}{\partial b^{(l)}}\) is the gradient of the loss function to the bias vector of the \(l\)th layer.  
A BP neural network has the shortcoming that it is easy to reach the local optimum, and the probability of convergence is low when training with a single sample feature set. In this study, four decomposed sample feature subsets by wavelet decomposition will be inputted into the BP neural network model, respectively. Then, the prediction results will be merged. This improved method can enhance the robustness of the BP neural network model and reduce the probability of the model reaching the local optimum.