## 3 Results and Discussion
The prediction on testing data gave the best performance of \(R^{2}~{}=~{}0.88\), \(RMSE~{}=~{}191.1\) cms and \(MPE~{}=~{}0.09\)% when CFNNPSO with 10 hidden neurons was trained despite slightly lower RMSE during the training as compared to the rest. This makes sense since the feature \(x_{4}\) and \(x_{5}\) are basically of the same type, i.e., mean and max temperatures, as compared to the result in Table 6 with four features. Similarly, the results obtained in this study corroborates with the work of [PERSON] et al. [35], who reported an \(R^{2}\) value of 0.84 in the estimation of Langat Basin using a feed-forward neural network. Additionally, [PERSON] and [PERSON] [36] obtained \(R^{2}\) values of 0.85, 0.81, and 0.85 for validation, training and testing datasets, respectively, when multi-layer perceptron neural network models were applied in estimating the water levels of Klang River. \begin{table}
\begin{tabular}{l c c c|c c c c c} \hline \hline \multirow{2}{*}{\#} & \multicolumn{2}{c}{**ANN Structure**} & \multicolumn{3}{c}{**FFNNBR**} & \multicolumn{3}{c}{**CFNNBR**} \\ \cline{2-10}  & \multicolumn{3}{c}{**Training**} & \multicolumn{3}{c}{**Testing**} & \multicolumn{3}{c}{**Training**} & \multicolumn{3}{c}{**Testing**} \\ \cline{2-10}  & **Number of Hidden Layer Neurons** & \(R^{2}\) & **RMSE** & \(R^{2}\) & **RMSE** & \(R^{2}\) & **RMSE** & \(R^{2}\) & **RMSE** \\ \hline
1 & [5] & 0.84 & 152.4 & 0.33 & 482.4 & 0.78 & 174.8 & 0.87 & 211.4 * \\ \hline
2 & [10] & 0.86 & 138.7 & 0.43 & 447.3 & 0.78 & 174.8 & 0.87 & 211.2 * \\ \hline
3 & [20] & 0.83 & 154.2 & 0.38 & 464.7 & 0.78 & 174.8 & 0.87 & 211.1 * \\ \hline
4 & \{5 + 5\} & 0.92 & 107.5 & 0.00 & 899.5 & 0.88 & 132.3 & 0.69 & 327.2 \\ \hline
5 & \{10 + 10\} & 0.96 & 76.3 & 0.14 & 548.4 & 0.97 & 69.2 & – & 675.4 \\ \hline
6 & \{20 + 20\} & 0.98 & 49.9 & 0.60 & 372.1 & 0.98 & 50.1 & 0.44 & 442.9 \\ \hline
7 & \{5 + 10\} & 0.93 & 96.6 & 0.34 & 481.0 & 0.93 & 101.8 & 0.14 & 548.9 \\ \hline
8 & \{10 + 5\} & 0.93 & 98.7 & 0.00 & 693.1 & 0.66 & 218.6 & 0.73 & 309.1 \\ \hline \hline \end{tabular}
\end{table} 
Table 5: Results on ANN trained with 4 features \((x_{1},x_{2},x_{4},x_{5})\) using the Bayesian Regularization (BR) algorithm. Figure 4 shows the regression plot of the best testing performance for CFNNPSO, with 10 hidden neurons (1 layer) and three input features (\(x_{1},x_{2},x_{5}\)), resulting to \(R^{2}~{}=~{}0.88\), \(RMSE~{}=~{}191.1\) cms and \(MPE~{}=~{}0.09\%\). Table 8 shows the results of the fifth experimentation using another three combinations of features (\(x_{1},x_{2},x_{4}\)). However, the result shows quite significant degradation of the model performance, particularly with the training dataset. This means that the combination of the three features is not feasible to build a parsimonious predictive model. As the final remarks on the feature selection, the accurate model can be achieved using four features (\(x_{1},x_{2},x_{4},x_{5}\)) or using three features (\(x_{1},x_{2},x_{5}\)) as these two can achieve comparable performance as long as one hidden layer is used. In other words, ANNs trained with PSO were able to achieve acceptable accuracy in predicting river flow by using only weighted rainfall, average evaporation and max temperature as input variables. However, CFNN structure is generally preferable as this can produce more robust generalization performance despite the number of neurons applied. Furthermore, as a comparison, Multiple Linear Regression (MLR) is also used to benchmark the prediction outcome of the ANNs above. The MLR is trained via Lasso regression/L1 [37] with the regularization parameter value (\(\alpha~{}=~{}0.2\)) as the same one used during training using the BR algorithm.