# Basic algorithms¶

These are basic algorithms that do not do much work but that are still useful for comparing accuracies.

class surprise.prediction_algorithms.random_pred.NormalPredictor

Algorithm predicting a random rating based on the distribution of the training set, which is assumed to be normal.

The prediction $$\hat{r}_{ui}$$ is generated from a normal distribution $$\mathcal{N}(\hat{\mu}, \hat{\sigma}^2)$$ where $$\hat{\mu}$$ and $$\hat{\sigma}$$ are estimated from the training data using Maximum Likelihood Estimation:

$\begin{split}\hat{\mu} &= \frac{1}{|R_{train}|} \sum_{r_{ui} \in R_{train}} r_{ui}\\\\ \hat{\sigma} &= \sqrt{\sum_{r_{ui} \in R_{train}} \frac{(r_{ui} - \hat{\mu})^2}{|R_{train}|}}\end{split}$
class surprise.prediction_algorithms.baseline_only.BaselineOnly(bsl_options={})

Algorithm predicting the baseline estimate for given user and item.

$$\hat{r}_{ui} = b_{ui} = \mu + b_u + b_i$$

If user $$u$$ is unknown, then the bias $$b_u$$ is assumed to be zero. The same applies for item $$i$$ with $$b_i$$.

See section 2.1 of [Kor10] for details.

Parameters: bsl_options (dict) – A dictionary of options for the baseline estimates computation. See Baselines estimates configuration for accepted options.