neural_graph_collaborative_filtering icon indicating copy to clipboard operation
neural_graph_collaborative_filtering copied to clipboard

adj_type and _create_ngcf_embed

Open wushihu opened this issue 6 years ago • 5 comments

hi, there is not a adj_type named "ngcf" in the code, only has "norm"、“plain” and “gcmc”. The default setting of adj_type is "norm", but the method of calculate the laplacian matrix seems not same as what description in your paper when adj_type is setted as "norm". I found in the function "_create_ngcf_embed", when calculate the embedding of ngcf, the identity matrix in Equation(7) seems not participate in the calculation, is this a bug? Looking forward to your reply!

wushihu avatar Jul 09 '19 15:07 wushihu

Hi, thanks for your interest. Please check the code in line 341 in NGCF.py carefully. Thanks.

xiangwang1223 avatar Jul 09 '19 15:07 xiangwang1223

I saw it, but the method of calculate mean_adj is also not same as the pui description in Equation(3). And even use the "mean_adj + sp.eye(mean_adj.shape[0])" as "norm_adj" feed to the function "_create_ngcf_embed",there is still some doubt because the identity matrix should not participate the calculation of "bi_embeddings" (line 207-210 in NGCF.py). Thank you for your reply!

wushihu avatar Jul 09 '19 16:07 wushihu

Hi, Thanks for your valuable comments. When cleaning and reorganizing our codes, we found that, if all the bi-interactions between any two members within ego networks are considered, the performance will be better, that is, treating 'mean_adj+sp.eye' as the input of function '_create_ngcf_embed'. Indeed, the code is slightly different from the equation. Please try it and let me know whether your findings are consistent with ours. Thanks again.

xiangwang1223 avatar Jul 10 '19 06:07 xiangwang1223

I saw it, but the method of calculate mean_adj is also not same as the pui description in Equation(3). And even use the "mean_adj + sp.eye(mean_adj.shape[0])" as "norm_adj" feed to the function "_create_ngcf_embed",there is still some doubt because the identity matrix should not participate the calculation of "bi_embeddings" (line 207-210 in NGCF.py). Thank you for your reply!

I can understand what you mean because I have the same problem with you now. I wonder if you have understood why the two parts' input Laplacian matrix is the same. Thank you very much!

Kasonreal avatar Oct 02 '20 14:10 Kasonreal

I saw it, but the method of calculate mean_adj is also not same as the pui description in Equation(3). And even use the "mean_adj + sp.eye(mean_adj.shape[0])" as "norm_adj" feed to the function "_create_ngcf_embed",there is still some doubt because the identity matrix should not participate the calculation of "bi_embeddings" (line 207-210 in NGCF.py). Thank you for your reply!

same concern here, I believe it's a bug. what's more, I also think that separately calculating "transformed sum messages of neighbors" and "transformed bi messages of neighbors" and add them together is a wrong way to implement equation (7) because LeakyRELU is not a linear function, how could we calculate two part separately and add them up? @xiangwang1223

it will be very nice of yo if you could give us an explanation about this two points.

RileyLee95 avatar Nov 04 '21 16:11 RileyLee95