# Predicting Student Academic Performance by Means of Associative Classification
## 4 Results
### Performance Comparison between Different Algorithms  
We conducted an empirical evaluation of the performance of various classification algorithms on the analyzed dataset. The goal of the experimental analysis is to answer to the following research question (RQ1): _Are associative classifiers as accurate as the best performing ones in predicting student academic performance?_  
To address the above issue, we compared the performance of the \(L^{3}\) classifier with that of a variety of other classifiers. Notice that despite similar experimental comparisons have already been conducted in previous studies (e.g., [3]), to the best of our knowledge associative models have not been considered yet. Classification models  
We considered the following classifiers [39]:  
1. The Live and Let Live (\(L^{3}\)) classifier [15]: a state-of-the-art associative classifier. 2. C4.5 (DT): popular decision tree-based classifiers. 3. Multi-Layer Perceptron (MLP): a popular single-layer Neural Networks model. 4. LIBSVM (SVM): an established Support Vector Machines model. 5. Multinomial naive Bayes (NB): an established multiclass Bayesian classifier. 6. k-Nearest Neighbor (kNN): a lazy distance-based classifier (lazy classifiers do not create models, but on-the-fly compute the distances between a test record and each of the training records). 7. Random Forest (RF): ensemble method. For the \(L^{3}\) classifier we used the C++ implementation provided by the authors, while for all the other algorithms we used the Python implementations available in the Scikit-Learn library [44]. To tune classifier performance at each considered time point, we performed a grid search by varying the values of the most significant parameters. Hereafter, for the sake of brevity, we will report the results achieved by the best configuration separately for each algorithm. \begin{table}
\begin{tabular}{c l l l} \hline \hline
**Attribute** & **Description** & **Data Type** & **Domain** \\ \hline Student Id & student identifier & categorical & \{1,2.....\} \\ \hline Course Id & course identifier & categorical & \{1,2.....\} \\ \hline Time point & time point identifier & ordinal & \{0,1,...,12\} \\ \hline \multirow{3}{*}{MA-mat} & discretized frequency of video lectures’ downloads normalized to the maximum number of downloads made up to that point in time & categorical & \{H = high, F = average, L = little, N = no use\} \\ \hline \multirow{3}{*}{MA-str} & discretized frequency of video lectures’ accesses normalized to the maximum number of accesses up to that point in time & categorical & \{H = high, F = average, L = little, N = no use\} \\ \cline{1-1} \cline{2-4}  & & & \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Schema of the Courses-Activities table. \begin{table}
\begin{tabular}{c c c c c c c} \hline \hline  & \multicolumn{2}{c}{\(\boldsymbol{t_{0}-t_{5}}\)} & \multicolumn{2}{c}{\(\boldsymbol{t_{6}-t_{9}}\)} & \multicolumn{2}{c}{\(\boldsymbol{t_{10}-t_{11}}\)} \\ \hline  & **Pass** & **Fail** & **Pass** & **Fail** & **Pass** & **Fail** \\ \hline
**MA** & 1515 & 2577 & 1183 & 332 & 1035 & 148 \\
**CS** & 1786 & 2307 & 1427 & 359 & 1127 & 300 \\
**CH** & 2697 & 1394 & 2397 & 300 & 2135 & 262 \\
**PH** & 2823 & 1270 & 2823 & 1270 & 2431 & 392 \\
**LA** & 1245 & 2848 & 1245 & 2848 & 1018 & 227 \\ \hline \hline \end{tabular}
\end{table} 
Table 5: Data samples per time point. The time complexity for training and testing the classification models ranged between few seconds on simpler datasets (e.g., 7 s for MLP, 31 s for \(L^{3}\)) to approximately one hour in the worst cases. However, most prediction models were generated in less than 60 s.  
Performance metrics  
To quantitatively evaluate classifier performance at each time point, we applied a stratified 5-fold cross-validation strategy and computed the following performance metrics:  
* _Precision of class fail_: It is the ratio between number of students who have been correctly labeled as belonging to class _fail_ (\(TN\)) divided by the total number of students assigned to class _fail_ (\(TN+FN\)).