lenskit.algorithms.als.common#

Classes

ALSBase(features, *[, epochs, reg, ...])

Base class for ALS models.

TrainContext(label, matrix, left, right, ...)

Context object for one half of an ALS training operation.

TrainingData(users, items, ui_rates, iu_rates)

Data for training the ALS model.

class lenskit.algorithms.als.common.TrainContext(label, matrix, left, right, reg, nrows, ncols, embed_size, regI)#

Bases: NamedTuple

Context object for one half of an ALS training operation.

Parameters:
label: str#

Alias for field number 0

matrix: Tensor#

Alias for field number 1

left: Tensor#

Alias for field number 2

right: Tensor#

Alias for field number 3

reg: float#

Alias for field number 4

nrows: int#

Alias for field number 5

ncols: int#

Alias for field number 6

embed_size: int#

Alias for field number 7

regI: Tensor#

Alias for field number 8

class lenskit.algorithms.als.common.TrainingData(users, items, ui_rates, iu_rates)#

Bases: NamedTuple

Data for training the ALS model.

Parameters:
users: Vocabulary#

User ID mapping.

items: Vocabulary#

Item ID mapping.

ui_rates: Tensor#

User-item rating matrix.

iu_rates: Tensor#

Item-user rating matrix.

to(device)#

Move the training data to another device.

class lenskit.algorithms.als.common.ALSBase(features, *, epochs=10, reg=0.1, rng_spec=None, save_user_features=True)#

Bases: MFPredictor[Tensor]

Base class for ALS models.

Parameters:
users_: Vocabulary | None#

Users in the model (length=:math:m).

items_: Vocabulary#

Items in the model (length=:math:n).

user_features_: Tensor | None#

The \(m \times k\) user-feature matrix.

item_features_: Tensor#

The \(m \times k\) user-feature matrix.

abstract property logger: Logger#

Overridden in implementation to provide the logger.

fit(data, **kwargs)#

Run ALS to train a model.

Parameters:
  • ratings – the ratings data frame.

  • data (Dataset)

Returns:

The algorithm (for chaining).

fit_iters(data, *, timer=None, **kwargs)#

Run ALS to train a model, yielding after each iteration.

Parameters:
Return type:

Iterator[Self]

abstract prepare_data(data)#

Prepare data for training this model. This takes in the ratings, and is supposed to do two things:

  • Normalize or transform the rating/interaction data, as needed, for training.

  • Store any parameters learned from the normalization (e.g. means) in the appropriate member variables.

  • Return the training data object to use for model training.

Parameters:

data (Dataset)

Return type:

TrainingData

initialize_params(data)#

Initialize the model parameters at the beginning of training.

Parameters:

data (TrainingData)

abstract initial_params(nrows, ncols)#

Compute initial parameter values of the specified shape.

Parameters:
Return type:

Tensor

abstract als_half_epoch(epoch, context)#

Run one half of an ALS training epoch.

Parameters:
Return type:

float

predict_for_user(user, items, ratings=None)#

Compute predictions for a user and items.

Parameters:
  • user – the user ID

  • items (array-like) – the items to predict

  • ratings (pandas.Series) – the user’s ratings (indexed by item id); if provided, they may be used to override or augment the model’s notion of a user’s preferences.

Returns:

scores for the items, indexed by item id.

Return type:

pandas.Series

abstract new_user_embedding(user, ratings)#

Generate an embedding for a user given their current ratings.

Parameters:

ratings (Series)

Return type:

tuple[Tensor, float | None]

finalize_scores(user, scores, u_offset)#

Perform any final transformation of scores prior to returning them.

Parameters:
Return type:

Series