Hi. I’m trying to build a recsys with a R-GCN.
My dataset looks like this:
Graph(num_nodes={'post': 11911, 'user': 9482},
num_edges={('post', 'liked', 'user'): 363984, ('user', 'like', 'post'): 363984},
metagraph=[('post', 'user', 'liked'), ('user', 'post', 'like')])
I add the reverse link so there aren’t nodes with no incoming edges. Since the graph is not too big, I dont use batches. I use cosine similarity during training and testing. Training looks good. Loss dicreases properly and for every epoch I evaluate the model on 10% of those edges (not seen during trainig), comparing positive edges and negative ones, and achieve almost +0.6 mean cosine score for positve examples. I train just on one direction: (post, liked, user).
After that, I want to use that model for inference. I pass the graph trough the model to update node embddings and I use 10 random users and generate top 20 most similar posts to them. The issue is that predicted posts looks almost the same for all the users, so I must be doing something wrong. Where could be the problem? My only clue is the direction of the training edge, but I don’t know.
Thanks.