# Feature Selection for High-Dimensional Datasets through a Novel Artificial Bee Colony Framework
## 4 Proposed Algorithm for Feature Selection
### Enhancement of Exploitation--Illustrative Example with GWO and WOA  
The original ABC algorithm has a low exploitation capacity, especially in the onlooker bee phase. The enhancement of the exploitation capacity in this phase is the most vital factor to regaining the trade-off between exploitation and exploration in the whole procedure of the ABC algorithm. There are many algorithms that have powerful exploitation capacities, such as the GWO algorithm and WOA algorithm. Compared with other algorithms, the GWO algorithm and WOA algorithm make full use of the information related to excellent individuals in the updating process, which gives them powerful exploitation abilities. As such, we take these two algorithms as examples. In our research, we fuse each algorithm as an operator into the onlooker bee phase, and replace the updating mode of the original ABC algorithm in the same phase to enhance the exploitation capacity of our whole framework. In the GWO algorithm, the grey wolves are divided into four hierarchies, namely, alpha (\(\alpha\)), beta (\(\beta\)), delta (\(\delta\)) and omega (\(\omega\)). In solving optimization problems, the \(\alpha\) wolf is the best solution, the \(\beta\) and \(\delta\) wolves are the second- and third-best solutions, respectively, while the \(\omega\) wolves are the remaining candidates. The \(\alpha\), \(\beta\), and \(\delta\) wolves lead the wolf pack to search for prey. The position of each wolf is given as follows:  
\[ \begin{array}{l}D_{\alpha}=\abs{C_{1}*X_{\alpha}-X},\\ D_{\beta}=\abs{C_{2}*X_{\beta}-X},\\ D_{\delta}=\abs{C_{3}*X_{\delta}-X},\\ \end{array}  \tag{6}\]  
\[ \begin{array}{l}X_{1}=X_{\alpha}-A_{1}*D_{\alpha},\\ X_{2}=X_{\beta}-A_{2}*D_{\beta},\\ X_{3}=X_{\delta}-A_{3}*D_{\delta},\\ \end{array}  \tag{7}\]  
\[ \begin{array}{l}X(t+1)=\frac{X_{1}+X_{2}+X_{3}}{3}\\ \end{array}  \tag{8}\]  
where \(X_{\alpha}\), \(X_{\beta}\) and \(X_{\delta}\) refer to the position vectors of \(\alpha\), \(\beta\) and \(\delta\), respectively. \(D_{\alpha}\), \(D_{\beta}\) and \(D_{\delta}\) denote the distance between the prey (\(\alpha\), \(\beta\), \(\delta\)) and the current wolf, respectively. indicates the current iteration. \(A=2a*r_{1}-a\), \(C=2*r_{2}\), \(r_{1}\) and \(r_{2}\) are random numbers in [0, 1] that are distributed uniformly. The value of \(a\) decreases linearly from 2 to 0 as the number of cycles increases. The three best solutions are used to be learnt from during the updating process of the GWO algorithm, which gives it a strong exploitation ability [7; 37; 38]. The WOA algorithm is also an SI algorithm, which employs the current optimal solution as the prey. The search agents update their positions based on the best solution. The mathematical model is described by the equations:  
\[ \begin{array}{l}X(t+1)=\begin{cases}X_{p}(t)-A*D&p<0.5,\abs{A}<1\\ D^{\prime}*e^{bl}*\cos(2\pi l)+X_{p}(t)&p\geq 0.5\\ \end{cases}\end{array}  \tag{9}\]  
\[ \begin{array}{l}X(t+1)=X_{\text{rand}}(t)-A*D^{\prime\prime}&p<0.5,\abs{A} \geq 1\\ \end{array}  \tag{10}\]  
where \(X_{p}(t)\) is the best search agent, \(X_{\text{rand}}(t)\) is a random position vector, \(b\) is a manually determined constant, and \(l\) is a random number in [-1,1]. The equations for calculating \(D\), \(D^{\prime}\) and \(D^{\prime\prime}\) are as follows:  
\[ \begin{array}{l}D=\abs{C*X_{p}(t)-X(t)},\\ D^{\prime}=\abs{X_{p}(t)-X(t)},\\ D^{\prime\prime}=\abs{C*X_{\text{rand}}(t)-X(t)}\end{array}  \tag{11}\]  
where \(A\) and \(C\) are calculated in the same way as above. The process of updating the WOA algorithm selects the best solution for learning, which makes the exploitation ability of the algorithm more powerful [8; 12]. This paper introduces the operators of the GWO algorithm and WOA algorithm into our proposed framework to verify its validity. The names of the two methods are BABCGWO and BABCWOA, respectively. The pseudocode is outlined in Algorithm 1. ```
Input: Population size \(SN\), Maximum number of iterations \(NMAX\).