# 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`

  Bases: `surprise.prediction_algorithms.algo_base.AlgoBase`

  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={}, verbose=True)

  Bases: `surprise.prediction_algorithms.algo_base.AlgoBase`

  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. verbose (bool) – Whether to print trace messages of bias estimation, similarity, etc. Default is True.