# An Evolutionary Computation Approach for Twitter Bot Detection
## 4 Proposed Approach
### Model Description  
At the end of the evolutionary process, we discover the weight vector \(\mathbf{w}\) described in Table 2. Given a vector \(\mathbf{x}\in\mathbb{R}^{17}\) that contains the features of a Twitter user profile, classification is performed by computing the dot product between \(\mathbf{x}\) and \(\mathbf{w}\), where weights associated with the features that favor humans are assigned a positive sign, while weights associated with the features that favor bots are assigned a negative sign, as stated in Table 2. Once this linear combination is calculated, the classification is performed by inspecting the sign. The higher the absolute value of the linear combination, the more confident the prediction is. Table 2 shows that the growth rate of the favorites, the length of the screen name, and the standard deviation of the raw counts of the hashtags are the least important features. According to the weights discovered by GA, it appears that reputation, the growth rate of lists, the growth rate of followers, and the standard deviation of tweets lengths are the most important features for human accounts; that is, high values for these features ensure that the model tends to predict a human. This is consistent with what we expect for human profiles, as already stated in Section 3.2. However, the features that contribute the most to the prediction of a bot are the frequency of retweets, the frequency of URLs, the growth rate of tweets, and the standard deviation of the raw counts of words. In particular, bot profiles may exhibit a high standard deviation of raw word counts since most of them tend to repeat a few keywords many times while varying the remaining words. Notice that Equation (8) can be written equivalently as follows:  
\[h^{\mathbf{w}}_{GA}(\mathbf{x})=\mathtt{int}(\mathbf{w}_{\text{human}}\cdot \mathbf{x}_{\text{human}}\leq\mathbf{w}_{\text{bot}}\cdot\mathbf{x}_{\text{ bot}}) \tag{11}\]  
where \(\mathbf{w}_{\text{human}}\in\mathbb{R}^{7}\) contains the weights in \(\mathbf{w}\) associated with the features that favor humans, \(\mathbf{x}_{\text{human}}\in\mathbb{R}^{7}\) contains the features in \(\mathbf{x}\) that favor humans, \(\mathbf{w}_{\text{bot}}\in\mathbb{R}^{10}\) contains \begin{table}
\begin{tabular}{c c c c} \hline \hline
**ID** & **Name** & **Learned Weight** & **Favored Category** \\ \hline \(F_{0}\) & _reputation_ & **1.65** & Human \\ \(F_{1}\) & _listed growth rate_ & **1.50** & Human \\ \(F_{2}\) & _favorites growth rate_ & 0.13 & Human \\ \(F_{3}\) & _friends growth rate_ & 0.54 & Bot \\ \(F_{4}\) & _followers growth rate_ & **1.67** & Human \\ \(F_{5}\) & _statuses growth rate_ & **1.32** & Bot \\ \(F_{6}\) & _screen name length_ & 0.03 & Human \\ \(F_{7}\) & _frequency of words_ & 0.37 & Bot \\ \(F_{8}\) & _frequency of hashtags_ & 0.71 & Bot \\ \(F_{9}\) & _frequency of mentioned users_ & 0.61 & Bot \\ \(F_{10}\) & _frequency of retweets_ & **0.93** & Bot \\ \(F_{11}\) & _frequency of URLs_ & **1.74** & Bot \\ \(F_{12}\) & _words raw counts standard dev._ & **1.66** & Bot \\ \(F_{13}\) & _hashtags raw counts standard dev._ & 0.13 & Bot \\ \(F_{14}\) & _mentioned users raw counts standard dev._ & 0.68 & Human \\ \(F_{15}\) & _tweets similarities mean_ & 0.40 & Bot \\ \(F_{16}\) & _tweets lengths standard dev._ & **0.77** & Human \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Table that describes the absolute values of the weights learned using GA for each feature. In particular, the weights associated with the human category have a positive sign, while the weights associated with the bot category have a negative sign. We highlight in bold the weights associated with the most important features, while we highlight in gray the weights associated with the least meaningful features. the weights in \(\mathbf{w}\) associated with the features that favor bots, and \(\mathbf{x}_{\text{bot}}\in\mathbb{R}^{10}\) contains the features in \(\mathbf{x}\) that favor bots.