guoguibing / librec

LibRec: A Leading Java Library for Recommender Systems, see
https://www.librec.net/
Other
3.24k stars 1.03k forks source link

AoBPRRecomender execution is too inefficient #220

Closed Kiteflyingee closed 6 years ago

Kiteflyingee commented 6 years ago

I have a data set of 60,000 data, the data form is user-item, only the user-item relationship, no score, but this data set “rec.iterator.maximum=30” on the AoBPR program takes 30 minutes, I think the efficiency is too low .It's Is there any place to optimize?

SunYatong commented 6 years ago

Hi, if the dataset doesn't contain rating column, the converting process should throw exceptions. You'd better debug the recommender to check its trainMatrix and testMatrix.

On Mon, Nov 27, 2017 at 8:53 PM, Kiteflyingee notifications@github.com wrote:

I have a data set of 60,000 data, the data form is user-item, only the user-item relationship, no score, but this data set “rec.iterator.maximum=30” on the AoBPR program takes 30 minutes, I think the efficiency is too low .It's Is there any place to optimize?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/guoguibing/librec/issues/220, or mute the thread https://github.com/notifications/unsubscribe-auth/AQWU7uumr6tGbcgJdsZ_mkYXKwvRRr-tks5s6rC9gaJpZM4Qrl0c .

Kiteflyingee commented 6 years ago

I have debug the program.I find librec populated my dataset with a rating of 1.0,this is exactly the rating I need.Is it possible that my rating matrix is ​​too sparse and has a good solution?

SunYatong commented 6 years ago

Yes, if the user number is too large, AoBPR could be really slow. In each epoch it samples 100*numUser positive/negative pairs.

Kiteflyingee commented 6 years ago

ok,I understand,if i samples 50*numUser positive/negative pairs,whether it will have a great impact on the precision of the recommendation process?

SunYatong commented 6 years ago

It will cost less time for each epoch. But it might need more epoch to converge. And the result could be different. You can try it yourself.

Kiteflyingee commented 6 years ago

Thank you.