Comments (2)
You are right in the sense, that the biases are not updated during training. But this is not the reason why BPR-MF results are so bad. The reason for the bad performance is that BPR-MF is not suitable for the session-based task in which each test session is basically a user cold-start scenario. It is easy to see that this is the case, as BPR-MF, like any other matrix factorization, works best if the user/item set is fairly static thus it can use the representations it learned during training. It can't directly handle new items or users. In session-based recommendations every new session is basically a new "user" for which BPR doesn't have a model, thus can't recommend anything. Therefore we used only the item feature vectors from BPR to do the recommendations: we represent the session as the average of the feature vectors of the items in the session so far and we recommend the item(s) with the most similar feature vectors to this representation. In this setting, using biases doesn't really make sense. They can't be used during similarity computations. One could argue that they capture some aspects of the data allowing the item feature vectors to be better representations. We tried this, but the results were worse, so we removed this from the final version. Unfortunately it seems that some of the earlier version made it into the public repo. This is the reason while you see the initialization of the bias terms, but not their update. I'll completely remove them eventually with the next bigger update.
Side note: earlier experiments with BPR-MF on standard personalized recommendations (on implicit data) showed that using the bias term is not always beneficial even during the classic recommendation scenario. On 2 dataset of 5 we found that disabling the bias resulted in better accuracy. Since the examination of BPR-MF was not the focus of that project we didn't investigate this further, but my assumption is that sometimes item biases can learn the popularity bias of the training data too well, which is not beneficial if the trendiness of the items cahnge more rapidly. User biases don't mater during ranking, so their role is only to help learning better representations, which generally have lesser effect that the item biases.
from gru4rec.
@hidasib hidasib It's very glad to see your reply. I have read your paper again. More interesting things come into my mind. I used to think session data should include user identifier since online system can only allow users to buy something after logging in. However, the data used in your case only contains item sequence in a session, which becomes a sort of item-driven recommendation problem. Your statement clarifies my concerns very much. Thank you~
from gru4rec.
Related Issues (20)
- About training time HOT 1
- Is it possible to output the embedding of user/session and item vectors? HOT 1
- NOT RNN MODEL HOT 2
- Additional Negative Sampling: Conditional Statement Logic Error HOT 1
- generate_samples function call in gru4rec.py HOT 2
- BPR loss implementation question
- Fit function in gru4rec.py missing data sort HOT 1
- predict_next_batch not considering other products in the same session HOT 2
- (Question) - How to use all items in a session for prediction? HOT 2
- No hidden state reset in get_metrics HOT 4
- Where is the data file ?
- theano error HOT 2
- Can you make a brief explaination on how you calculate recall ? HOT 2
- Incremental training (retrain) support removed
- ValueError: Input dimension mis-match. (input[2].shape[0] = 2080, input[3].shape[0] = 32)
- cuda error
- GFF code
- Testing Error:: start = offset_sessions[iters] IndexError: index 2 is out of bounds for axis 0 with size 2
- Evaluating baselines
- Non-session based custom dataset HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gru4rec.