## 4 Algorithm Tuning and Experimental Evaluation
### Determining the Algorithm Parameters  
The goal of first experiment is to determine the optimal value for the _bsf_ factor used for the rating prediction formula. To do so, we examined more than 40 candidate setting alternatives, however, we report only on the most indicative ones for conciseness. More specifically, Figure 1 illustrates the average prediction accuracy improvement for each alternative under different _bsf_ factor settings, pertaining to the MAE and the RMSE scores. \begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Dataset Name** & **\#Users** & **\#Items** & **\#Ratings** & **Density** \\ \hline Amazon “Videogames” & 24 K & 11 K & 232 K & 0.09\% \\ Amazon “CDs and Vinyl” & 75 K & 64 K & 1.1 M & 0.02\% \\ Amazon “Movies and TV” & 124 K & 50 K & 1.7 M & 0.03\% \\ Amazon “Books” & 604 K & 368 K & 8.9 M & 0.004\% \\ MovieLens “Latest & & & & \\
100K—Recommended for education and development” & 670 & 9 K & 100 K & 1.7\% \\ NetFlix competition & 480 K & 18 K & 96 M & 1.1\% \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Dataset information. Figure 1: Average prediction error reduction under different _bsf_ factor settings. where each setting\({}_{\mathbf{i}}\) corresponds to a different setting for the computation of the _bsf_ factor as follows:  
\[\text{Setting 1: }bsf(U,V)=\left\{\begin{array}{ll}1.2,\ if\ (\text{ blackSleepRatings}(U,V)\geq 1)\land(low\_thr=2.5)\land(high\_thr=3.5)\\ 1,\text{ otherwise}\\ \text{Setting 2: }bsb(U,V)=\left\{\begin{array}{ll}1.2,\ if\ (\text{ blackSleepRatings}(U,V)\geq 1)\land(low\_thr=1.5)\land(high\_thr=4.5)\\ 1,\text{ otherwise}\\ \text{Setting 3: }bsb(U,V)=\left\{\begin{array}{ll}1.2,\ if\ (\text{ blackSleepRatings}(U,V)\geq 1)\land(low\_thr=2.0)\land(high\_thr=4.0)\\ 0.9,\text{ otherwise}\\ \text{Setting 4: }bsb(U,V)=\left\{\begin{array}{ll}1.2,\ if\ (\text{ blackSleepRatings}(U,V)\geq 1)\land(low\_thr=2.5)\land(high\_thr=3.5)\\ 0.9,\text{ otherwise}\\ \text{Setting 5: }bsb(U,V)=\left\{ \begin{array}{ll}1.2,\ if\ (\text{ blackSleepRatings}(U,V)\geq 1)\land(low\_thr=2.0)\land(high\_thr=4.0)\\ 0.8,\text{ otherwise}\\ \text{Setting 6: }bsb(U,V)=\left\{\begin{array}{ll}1.2,\ if\ (\text{ blackSleepRatings}(U,V)\geq 5\%\.numCommonlyRated(U,\ V))\\ \land(low\_thr=2.5)\land(high\_thr=3.5)\\ 0.9,\text{ otherwise}\\ \end{array}\right.\\ \text{Setting 7: }bsb(U,V)=\left\{\begin{array}{ll}1.2,\ if\ (\text{ blackSleepRatings}(U,V)\geq 20\%\.numCommonlyRated(U,\ V))\\ \land(low\_thr=2.0)\land(high\_thr=4.0)\\ 0.8,\text{ otherwise}\\ \end{array}\right.\end{array} \right.\]  
In the equations presented above, the following notations are used:  
* _low_thr_ denotes the value below which a rating is considered to be negative; formally, _is_negative(\(r_{UL,i}\)) \(\Leftrightarrow\)\(r_{UL,i}\)\(\leq\)_low_thr_
* _high_thr_, correspondingly, represents the value above which a rating is considered to be positive. Formally, _is_positive(\(r_{UL,i}\)) \(\Leftrightarrow\)\(r_{UL,i}\)\(\geq\)_high_thr_
* _blackSleepRatings(\(U\),\(V\))_ is the number of ratings where users \(U\) and \(V\) both have a positive (or negative) rating, while the user community has a negative (or positive), respectively, rating on the same item. Formally: \[