# A Two-Phase Deep Learning-Based Recommender System: Enhanced by a Data Quality Inspector
## 4 Results
### Deep Learning-Based Product Recommender
#### 4.3.3 Recommenders Comparison  
Table 5 displays the architecture of the NNMF model and Table 6 exhibits the design of the DLbR model. Besides, two traditional machine learning models, Singular Value Decomposition (SVD) and SVD++, are included as a comparison base. SVD is mainly based on 100 latent factors for users and items, a total of 20 training epochs, and is trained andtested with 100% of the dataset. In contrast, SVD++ is mostly based on 20 latent factors for users and items, a total of 20 training epochs, and is trained and tested with 100% of the dataset. It is remarked that the key objectives of this study are to identify if a recommender system works more accurately with or without a quality inspector, and to determine if deep learning algorithms for collaborative filtering recommenders are more efficient than traditional methods. Therefore, it is not necessary to have a fair comparison, none of these four methods was severely optimized. Table 7 illustrates the results that the recommendation engines achieved in each of the three datasets. It can be perceived that the table is divided into three parts: (1) the indicators of the four models with \(DATA_{init.-all}\), (2) the results of all the methods with \(DATA_{pruned\ LSTMS}\), and (3) the indicators of every single algorithm with \(DATA_{pruned\ BERT}\). As shown in Table 7, it can be established that the best recommender is NNMF. It achieves the highest _F1 score_, the highest _accuracy_, and the lowest _RMSE_. Although it is the model that took the longest _time to run_ its algorithm, the time is not taken as a critical factor because the proposed framework is supposed to work offline. The second position as the best recommender is assigned to DLbR since even though its _RMSE_ is the worst of the four models, and its _total running time_ is in the third position, it achieves a good _F1 score_ and a suitable _accuracy_. Moreover, SVD++ earns the third position, as it achieves the second position in _total running time_, and the third position in _RMSE_, _F1 score_, and _accuracy_. Finally, SVD is concluded as the worst model. \begin{table}
\begin{tabular}{c c} \hline \multicolumn{1}{c}{**Users Inputs (IDs)**} & \multicolumn{1}{c}{**Items Inputs (IDs)**} \\ \hline embedding layer (32)—user latent vectors. & embedding layer (32)—item latent vectors. \\ \hline dropout layer: 0.5—concatenation layer to concatenate user and item vectors into a unique one. \\ \hline
1 dropout layer: 0.5—1 hidden layer (128)—activation function: relu—1 batch normalization layer. \\ \hline
1 hidden layer (128)—activation function: relu. \\ \hline
1 output layer (5) with softmax as activation function—Optimizer: adam—batch size: 500 \\ \hline epochs: 20–100\% (0% val.) trained and tested with 100\% of data. \\ \hline \end{tabular}
\end{table} 
Table 6: Architecture of DLbR recommender system. \begin{table}
\begin{tabular}{c c c c} \hline \multicolumn{2}{c}{**Users Inputs (IDs)**} & \multicolumn{2}{c}{**Items Inputs (IDs)**} \\ \hline \multicolumn{2}{c}{**GMF block**} & \multicolumn{2}{c}{**MLP block**} \\ \hline embedding layer (32)—user & embedding layer (32)—item & embedding layer (32)—user & embedding layer (32)—item \\ latent vectors. & latent vectors. & latent vectors. & latent vectors. \\ \hline dropout layer: 0.5 & \multicolumn{2}{c}{dropout layer: 0.5} \\ \hline  & \multicolumn{2}{c}{MLP layer: concatenate user and item vectors.} \\ \cline{3-4}  & & dropout: 0.5—1 hidden lay. (128) with relu. \\ \cline{3-4}  & & dropout: 0.5—1 hidden lay. (128) with relu. \\ \cline{3-4}  & & dropout: 0.5—1 hidden lay. (128) with relu. \\ \cline{3-4}  & & dropout: 0.5—1 hidden lay. (128) with relu. \\ \cline{3-4}  & & dropout: 0.5—1 hidden lay. (128) with relu. \\ \hline \multicolumn{4}{c}{concatenation layer to concatenate CMF and MLP feature vectors into a unique one.} \\ \hline
1 output layer (5) with softmax as activation function—Optimizer: adam—batch size: 500 \\ \hline epochs: 20–100\% (0% val.) trained and tested with the 100\% of data. \\ \hline \end{tabular}
\end{table}