Multi-relational Link prediction on a knowledge graph with homogeneous features #8021
Unanswered
LuisaWerner
asked this question in
Q&A
Replies: 1 comment
-
@LuisaWerner were you able to find any way for Multi-category link prediction? I am working on a similar kinda problem, it might help me. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi all,
I want to do link prediction on the Wikialumni dataset which is a homogeneous multirelational graph. That means, the nodes features are of the same dimension while the edges have different types.
My goal is to predict not only whether a link between two nodes exists but also which type of link exists between them. I want to do this in a multi-label setting, namely that several links of different types may exist between two nodes.
Is there any example doing something similar?
I already had a look at a link prediction tutorial with RGCN. But there, only the links are predicted and not their types. The types are only used during message passing.
I also found the thread on link prediction on heterogeneous graphs opened by @sophiakrix, but it looks different to me since the dataset has heterogeneous node types and only one link between two nodes can exist. (Or did I get this wrong @sophiakrix and you predicted multiple links? If yes, I would be very happy to have more details on how you did it)
To precise my task a bit more:
The dataset is a
Data
object:{Data} (x=[52683, 300], edge_index=[2, 121842], y=[52683], num_classes=29, edge_type=[121842])
I want to predict the edges in
edge_index
and their type inedge_type
To split the links in train, valid and test, I use
RandomLinkSplit
and rename the edge_type to edge_label so that the types are kept in the splits as labels.I think it would be required to split the edges not only randomly but keep the types balanced. Is there a possibility to do it with
RandomLinkSplit
on aData
object? (Feature request :-) )As a model I think of using an encoder-decoder model such as Variational Graph AutoEncoder that returns in the Decoder a 3D tensor that predicts not only the link but also its type or predict the different types sequentially to avoid CUDA out of memory.
Is anyone working on a similar task? Or has some ideas how batching can work in this setting to avoid memory issues?
Any help would be appreciated!
Beta Was this translation helpful? Give feedback.
All reactions