lenskit.basic.bias.BiasModel#
- class lenskit.basic.bias.BiasModel#
User-item bias models learned from rating data. The
BiasScorerclass uses this model to score items in a pipeline; the model is reusable in other components that need user-item bias models.This implements the following model:
\[b_{ui} = b_g + b_i + b_u\]where \(b_g\) is the global bias (global mean rating), \(b_i\) is item bias, and \(b_u\) is the user bias. With the provided damping values \(\beta_{\mathrm{u}}\) and \(\beta_{\mathrm{i}}\), they are computed as follows:
\[\begin{align*} b_g & = \frac{\sum_{r_{ui} \in R} r_{ui}}{|R|} & b_i & = \frac{\sum_{r_{ui} \in R_i} (r_{ui} - b_g)}{|R_i| + \beta_{\mathrm{i}}} & b_u & = \frac{\sum_{r_{ui} \in R_u} (r_{ui} - b_g - b_i)}{|R_u| + \beta_{\mathrm{u}}} \end{align*}\]The damping values can be interpreted as the number of default (mean) ratings to assume a priori for each user or item, damping low-information users and items towards a mean instead of permitting them to take on extreme values based on few ratings.
- Stability:
- Caller (see Stability Levels).
- items: lenskit.data.Vocabulary | None = None#
Vocabulary of items.
- item_biases: numpy.ndarray[tuple[int], numpy.dtype[numpy.float32]] | None = None#
The item offsets (\(b_i\) values).
- users: lenskit.data.Vocabulary | None = None#
Vocabulary of users.
- user_biases: numpy.ndarray[tuple[int], numpy.dtype[numpy.float32]] | None = None#
The user offsets (\(b_u\) values).
- classmethod learn(data, damping=0.0, *, entities=frozenset({'user', 'item'}))#
Learn a bias model and its parameters from a dataset.
- Parameters:
data (lenskit.data.Dataset) – The dataset from which to learn the bias model.
damping (Damping | tuple[float, float]) – Bayesian damping to apply to computed biases. Either a number, to damp both user and item biases the same amount, or a (user,item) tuple providing separate damping values.
items – Whether to compute item biases
users – Whether to compute user biases
entities (collections.abc.Container[BiasEntity])
- Return type:
Self
- compute_for_items(items: lenskit.data.ItemList, user_id: lenskit.data.ID | None = None, user_items: lenskit.data.ItemList | None = None) tuple[numpy.ndarray[tuple[int], numpy.dtype[numpy.float32]], float]#
- compute_for_items(items: lenskit.data.ItemList, *, bias: float) numpy.ndarray[tuple[int], numpy.dtype[numpy.float32]]
Compute the personalized biases for a set of itemsm and optionally a user. The user can be specified either by their identifier or by a list of ratings.
- Parameters:
items – The items to score.
user – The user identifier.
user_items – The user’s items, with ratings (takes precedence over
userif both are supplied). If the supplied list does not have aratingfield, it is ignored.bias – A pre-computed user bias.
- Returns:
A tuple of the overall bias scores for the specified items and user, and the user’s bias (needed to de-normalize scores efficiently later). If a user bias is provided instead of user information, only the composite bias scores are returned.
- transform_matrix(matrix: scipy.sparse.coo_array) scipy.sparse.coo_array#
- transform_matrix(matrix: torch.Tensor) torch.Tensor
Transform a sparse ratings matrix by subtracting biases.
- Parameters:
matrix – The matrix to transform.