hopwise.model.general_recommender.lightgcn¶
- Reference:
Xiangnan He et al. “LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation.” in SIGIR 2020.
- Reference code:
Classes¶
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]
- 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