hopwise.model.general_recommender.lightgcn

Reference:

Xiangnan He et al. “LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation.” in SIGIR 2020.

Reference code:

https://github.com/kuandeng/LightGCN

Classes

LightGCN

LightGCN is a GCN-based recommender model.

Module Contents

class hopwise.model.general_recommender.lightgcn.LightGCN(config, dataset)[source]

Bases: hopwise.model.abstract_recommender.GeneralRecommender

LightGCN is a GCN-based recommender model.

LightGCN includes only the most essential component in GCN — neighborhood aggregation — for collaborative filtering. Specifically, LightGCN learns user and item embeddings by linearly propagating them on the user-item interaction graph, and uses the weighted sum of the embeddings learned at all layers as the final embedding.

We implement the model following the original author with a pairwise training mode.

input_type
latent_dim
n_layers
reg_weight
require_pow
user_embedding
item_embedding
mf_loss
reg_loss
restore_user_e = None
restore_item_e = None
norm_adj_matrix
other_parameter_name = ['restore_user_e', 'restore_item_e']
get_ego_embeddings()[source]

Get the embedding of users and items and combine to an embedding matrix.

Returns:

Tensor of the embedding matrix. Shape of [n_items+n_users, embedding_dim]

forward()[source]
calculate_loss(interaction)[source]

Calculate the training loss for a batch data.

Parameters:

interaction (Interaction) – Interaction class of the batch.

Returns:

Training loss, shape: []

Return type:

torch.Tensor

predict(interaction)[source]

Predict the scores between users and items.

Parameters:

interaction (Interaction) – Interaction class of the batch.

Returns:

Predicted scores for given users and items, shape: [batch_size]

Return type:

torch.Tensor

full_sort_predict(interaction)[source]

Full sort prediction function. Given users, calculate the scores between users and all candidate items.

Parameters:

interaction (Interaction) – Interaction class of the batch.

Returns:

Predicted scores for given users and all candidate items, shape: [n_batch_users * n_candidate_items]

Return type:

torch.Tensor