## 3 The Proposed Method  
This section presents detailed steps to illustrate the method we developed in the present work, from data selection to the construction and generation of the virtual samples necessary to build the models and the classification tool. A schematic description of the whole procedure is shown in Figure 1. The procedure involved three steps: the first step was the selection of a small set of samples from a whole dataset; the second was the application of the VSG method to generate new samples; and the third step included data prediction and classification. The algorithm automatically ranked the top discriminative features and excluded the non-discriminative features. In the second step, a small set of samples was randomly selected, called selected samples, from the entire dataset, and the remaining samples were used as testing data. In the third step, we applied the proposed VSG method to generate new virtual samples, depending on the selected samples from the second step. Then, virtual samples were added to the selected samples  
Figure 1: Flowchart of the whole procedure with three different steps: (1) selection of a small sub-sample from the entire dataset and the remaining samples used as testing data; (2) application of the VSG method depending on the selected samples from the first step; (3) data prediction and classification. for the next learning step. In the fourth step, the combined dataset (i.e., the original dataset plus the newly-generated virtual samples) was used to train the deep neural network, then we checked the classifier performance by classifying the testing data. The first step of the proposed technique was to select samples randomly. These numbers were selected randomly from intervals of 3-10 as a small database for the first time; then, these numbers were set for all experiments to achieve comparisons. The number of randomly selected samples were 3, 5, 6, and 9. From each class, the Selected Samples (SS) were from the whole dataset (30 samples), and the remaining 24, 20, 18, and 12 samples, respectively, were the testing data. The features of small selected samples of two different classes are represented in two matrices A and B with the same size as follows:  
Let \(I=\{1,\ldots,m\}\) denote the indices of the rows of matrices A and B. Let \(J=\{1,\ldots,n\}\) denote the indices of the column of matrices A and B. Let a\({}_{ij}\) denote the value of the element A[i, j]. Let b\({}_{ij}\) denote the value of the element B[i, j]. The algorithm started by finding the following:  
The minimum value for each feature in matrix A is NA. It appears as a single dimension matrix as follows:  
\[NA_{I}\ = min\ a_{ij\ i\in I}\,\ j=1,\ldots,n\]  
The maximum value for each feature in matrix A is MA. It appears as a single dimension matrix as follows:  
\[MA_{J}\ = max\ a_{ij\ i\in I}\,\ j=1,\ldots,n\]  
The mean value for each feature in matrix A is MeA. It appears as a single dimension matrix as follows:  
\[MeA_{J}\ =\frac{1}{n}\sum_{i=1}^{n}\ a_{ij}\,\ j=1,\ldots,n\]  
The minimum value for each feature in matrix B is NB. It appears as a single dimension matrix as follows:  
\[NB_{J}\ = min\ b_{ij\ i\in I}\,\ j=1,\ldots,n\]  
The maximum value for each feature in matrix B is MB. It appears as a single dimension matrix as follows:  
\[MB_{J}\ = max\ b_{ij\ i\in I}\,\ j=1,\ldots,n\]  
The mean value for each feature in matrix B is MeB. It appears as a single dimension matrix as follows:  
\[MeB_{J}\ = \frac{1}{n}\sum_{i=1}^{n}\ b_{ij}\,\ j=1,\ldots,n\]  
Then, for each iteration, starting from the first elements in the matrices NA, MA, NB, and MB to the last elements in these matrices, these four elements were the inputs of Equation (1) to check if there was any overlapping occurring in between them. If there was no overlap, then we expanded the intervals by Equations (5) and (6), otherwise, we tried to solve the overlaps by Equation (2). \[For\ j=\ 1,\ldots,n \tag{1}\] \[f(NA_{j},MA_{j},NB_{j},MB_{j})=\left\{