lenskit.graphs.lightgcn#

LightGCN recommendation.

Classes

LightGCNConfig([embedding_size, ...])

Configuration for LightGCNScorer.

LightGCNScorer([config])

Scorer using LightGCN [].

LightGCNTrainer(scorer, data, options)

LogisticLightGCNTrainer(scorer, data, options)

PairwiseLightGCNTrainer(scorer, data, options)

class lenskit.graphs.lightgcn.LightGCNConfig(embedding_size=64, layer_count=2, layer_blend=None, batch_size=8192, learning_rate=0.01, epochs=10, regularization=0.01, loss='pairwise')#

Bases: object

Configuration for LightGCNScorer.

Stability:

Experimental

Parameters:
embedding_size: Annotated[int, Gt(gt=0)] = 64#

The dimension of the embedding space (number of latent features). Seems to work best as a power of 2.

layer_count: Annotated[int, Gt(gt=0)] = 2#

The number of layers to use.

layer_blend: Annotated[float, Gt(gt=0)] | list[Annotated[float, Gt(gt=0)]] | None = None#

The blending coefficient(s) for layer blending. This is equivalent to alpha in LightGCN.

batch_size: Annotated[int, Gt(gt=0)] = 8192#

The training batch size.

learning_rate: Annotated[float, Gt(gt=0)] = 0.01#

The learning rate for training.

epochs: Annotated[int, Gt(gt=0)] = 10#

The number of training epochs.

regularization: Annotated[float, Gt(gt=0)] | None = 0.01#

The regularization strength.

loss: Literal['logistic', 'pairwise'] = 'pairwise'#

The loss to use for model training.

pairwise

BPR pairwise ranking loss, using LightGCN.recommend_loss().

logistic

Logistic link prediction loss, using LightGCN.link_pred_loss().

class lenskit.graphs.lightgcn.LightGCNScorer(config=None, **kwargs)#

Bases: UsesTrainer, Component[ItemList, …]

Scorer using LightGCN [].

Stability:

Experimental

Parameters:
to(device)#

Move the model to a different device.

create_trainer(data, options)#

Create a model trainer to train this model.

class lenskit.graphs.lightgcn.LightGCNTrainer(scorer, data, options)#

Bases: ModelTrainer

Parameters:
train_epoch()#

Perform one epoch of the training process, optionally returning metrics on the training behavior. After each training iteration, the mmodel must be usable.

Return type:

dict[str, float] | None

finalize()#

Finish the training process, cleaning up any unneeded data structures and doing any finalization steps to the model.

class lenskit.graphs.lightgcn.LogisticLightGCNTrainer(scorer, data, options)#

Bases: LightGCNTrainer

Parameters:
class lenskit.graphs.lightgcn.PairwiseLightGCNTrainer(scorer, data, options)#

Bases: LightGCNTrainer

Parameters: