lenskit.knn.user#

User-based k-NN collaborative filtering.

Functions

score_items_with_neighbors(log, items, ...)

Classes

UserKNNScorer(nnbrs[, min_nbrs, min_sim, ...])

User-user nearest-neighbor collaborative filtering with ratings.

UserRatings(index, ratings, mean)

Dense user ratings.

class lenskit.knn.user.UserKNNScorer(nnbrs, min_nbrs=1, min_sim=1e-06, feedback='explicit')#

Bases: Component, Trainable

User-user nearest-neighbor collaborative filtering with ratings. This user-user implementation is not terribly configurable; it hard-codes design decisions found to work well in the previous Java-based LensKit code.

Parameters:
  • nnbrs (int) – the maximum number of neighbors for scoring each item (None for unlimited).

  • min_nbrs (int) – The minimum number of neighbors for scoring each item.

  • min_sim (float) – Minimum similarity threshold for considering a neighbor. Must be positive; if less than the smallest 32-bit normal (\(1.175 \times 10^{-38}\)), is clamped to that value.

  • feedback (FeedbackType) –

    Control how feedback should be interpreted. Specifies defaults for the other settings, which can be overridden individually; can be one of the following values:

    explicit

    Configure for explicit-feedback mode: use rating values, and predict using weighted averages. This is the default setting.

    implicit

    Configure for implicit-feedback mode: ignore rating values, and predict using the sums of similarities.

users_: Vocabulary#

The index of user IDs.

items_: Vocabulary#

The index of item IDs.

user_means_: torch.Tensor | None#

Mean rating for each known user.

user_vectors_: torch.Tensor#

Normalized rating matrix (CSR) to find neighbors at prediction time.

user_ratings_: csr_array#

Centered but un-normalized rating matrix (COO) to find neighbor ratings.

property is_trained: bool#

Check if this model has already been trained.

train(data)#

“Train” a user-user CF model. This memorizes the rating data in a format that is usable for future computations.

Parameters:
Return type:

Self

class lenskit.knn.user.UserRatings(index, ratings, mean)#

Bases: NamedTuple

Dense user ratings.

Parameters:
index: int | None#

Alias for field number 0

ratings: Tensor#

Alias for field number 1

mean: float#

Alias for field number 2