HKUDS / SSLRec

[WSDM'2024 Oral] "SSLRec: A Self-Supervised Learning Framework for Recommendation"
https://arxiv.org/abs/2308.05697
Apache License 2.0
467 stars 60 forks source link

Model performance #32

Closed yuanb07 closed 2 months ago

yuanb07 commented 7 months ago

I want to know model performance reproduced by SSLRec for General Collaborative Filtering on Yelp and Amazon dataset. If there are experimental results, could you show them to me? Thank you a lot.

Re-bin commented 7 months ago

Hi 👋!

Apologies for the delayed response, and thank you for your interest in SSLRec! Currently, we only test and saved the optimal hyperparameters based on the Gowalla dataset for all methods, for reference.

To conduct a grid search on a new dataset (e.g., the Yelp and Amazon), you can change the value of tune-enable in the YAML file to true and then run the main.py file. The results will be saved in a log file, where you can find the best performance.

Here are some results we obtained before that may be helpful to you :)

yelp
LightGCN:
- Default hyperparameter
- Test set [recall@10: 0.0450 recall@20: 0.0713 recall@40: 0.1085 ] Test set [ndcg@10: 0.0273 ndcg@20: 0.0351 ndcg@40: 0.0441 ]
SGL:
- hyperparameter: {'layer_num': 2, 'reg_weight': 1e-05, 'cl_weight': 1.0, 'temperature': 0.5}
- Test set [recall@10: 0.0556 recall@20: 0.0850 recall@40: 0.1293 ] Test set [ndcg@10: 0.0341 ndcg@20: 0.0428 ndcg@40: 0.0536 ]
NCL:
- hyperparameter: {'temperature': 1.0, 'proto_weight': 0.01, 'struct_weight': 0.001}
- Test set [recall@10: 0.0471 recall@20: 0.0753 recall@40: 0.1142 ] Test set [ndcg@10: 0.0291 ndcg@20: 0.0374 ndcg@40: 0.0469 ]
DCCF:
- hyperparameter: {'layer_num': 2, 'reg_weight': 0.001, 'cl_weight': 0.1, 'temperature': 0.5}
- Test set [recall@10: 0.0546 recall@20: 0.0854 recall@40: 0.1302 ] Test set [ndcg@10: 0.0342 ndcg@20: 0.0433 ndcg@40: 0.0542 ]
amazon
LightGCN:
- Default hyperparameter
- Test set [recall@10: 0.0522 recall@20: 0.0821 recall@40: 0.1245 ] Test set [ndcg@10: 0.0431 ndcg@20: 0.0532 ndcg@40: 0.0662 ] 
SGL:
- hyperparameter: {'layer_num': 2, 'reg_weight': 1e-06, 'cl_weight': 1.0, 'temperature': 0.2}
- Test set [recall@10: 0.0654 recall@20: 0.0978 recall@40: 0.1416 ] Test set [ndcg@10: 0.0554 ndcg@20: 0.0662 ndcg@40: 0.0797 ]
NCL:
- hyperparameter: {'temperature': 0.1, 'proto_weight': 0.0001, 'struct_weight': 0.001}
- Test set [recall@10: 0.0607 recall@20: 0.0951 recall@40: 0.1426 ] Test set [ndcg@10: 0.0502 ndcg@20: 0.0617 ndcg@40: 0.0764 ] 
DCCF:
- hyperparameter: {'layer_num': 2, 'reg_weight': 0.0001, 'cl_weight': 0.1, 'temperature': 0.2}
- Test set [recall@10: 0.0814 recall@20: 0.1155 recall@40: 0.1583 ] Test set [ndcg@10: 0.0719 ndcg@20: 0.0829 ndcg@40: 0.0961 ]

You can also try it on your own device to see the results, which may have some fluctuations, but that's fine :)

Best regards, Xubin

yuanb07 commented 6 months ago

Thank you for your reply.I have another question.I find that the tune cl_weight of SGL and Simgcl is [1.0, 1.0e-1, 1.0e-2].So should i set the same one for my model to tune in order to keep fair?Could i set the different one such as [0.1,0.2,0.5,1]?

Re-bin commented 6 months ago

Hi!

I think that's okay because the purpose of grid search is to find the best hyper-parameters for the model. We just set the search range based on our empirical experience, and you can also change the search range by yourself :)

Best regards, Xubin