gbildson / nprizeadditions

This project mainly includes a pure Restricted Boltzmann Machine (RBM) model and a conditional RBM model. Unpolished versions of Factored RBM, SVD++, Time Dependent SVD++, Integrated Model, etc can be found in the "other" subdirectory.
GNU General Public License v2.0
22 stars 8 forks source link

Perfidious CRBM ;) #2

Open KeepKool opened 9 years ago

KeepKool commented 9 years ago

Hello Greg,

I just had a look at your C-RBM Code and was wondering if it ever yielded better results than the Basic RBM ? I tried myself an home-made version as close as possible to what is described in all papers (ie Toronto) but it just -NEVER- yielded any better result whatever the parameters were. Despite the fact that the logic behind it seems more than valid I'm starting to think that there is something about that conditional RBM version for Netflix. A misprint ? What do you think ?

Regards. Keep

gbildson commented 9 years ago

Given that I didn't mention getting better results, I don't believe that I did achieve what is mentioned in the papers.    I had a hard time getting good results in a few situations.   My suspicion is that a few details were left out of the descriptions either as an oversight or for competitive purposes.   Getting tuning parameters was always hard - even after the competition was done.

 On Sunday, February 1, 2015 9:32 AM, KeepKool <notifications@github.com> wrote:

Hello Greg,I just had a look at your C-RBM Code and was wondering if it ever yielded better results than the Basic RBM ? I tried myself an home-made version as close as possible to what is described in all papers (ie Toronto) but it just -NEVER- yielded any better result whatever the parameters were. Despite the fact that the logic behind it seems more than valid I'm starting to think that there is something about that conditional RBM version for Netflix. A misprint ? What do you think ?Regards. Keep— Reply to this email directly or view it on GitHub.

KeepKool commented 9 years ago

Totally agree with your "misprint" interpretation (for finding the "real" parameters I created a CUDA version of it and run a GA on smaller sets). Too bad that the SVD++ (the one with the implicit feedback from Yehuda), despite being a lot simpler, does not suffer from the same strange behaviour (he even gave the code to trustworthy sources...).

It's equally too bad that no1 ever positively commented on the code you freely provided for helping you and other CRBM aficionados. Not mentioning the fact that your were a very active and helpful person back then in the Netflix Prize forum history... I personally think that your implementation made (common) sense.

Nvm, take care... and thx for answering ;)

Keep

KeepKool commented 9 years ago

By the way,

Just wanted to mention now that it came to me that I once posted here some times ago, and that I was able to get better results with the CRBM. It happens that the animal is quite finely grained and similar to the RSVD++ with the "magic normalization" if you know what I mean, though here things are a bit simpler IMHO...

What I did to tackle down the problem is to prepare some smaller sets of about 100 ratings with very specific cases (profiles with only implicit feedback and strongly belonging to 1 class while there are only 2 classes in total, say Romance and Action movies but whatever works as long as there are 2 clusters). I also advice that you use a C++ version before experimenting because the CUDA code can get VERY complicated and long to maintain. Then "just" port everything on the Massively Parallel environment with 2-3 well suited Unitary Tests... Creating a fun GA helped a lot too.

In the end I got very satisfying results with a good blend with SVD++ with an average CRBM epoch between 30 to 60 seconds...

Don't shoot me if I don't give you the exact parameters though ;)).

ATM I'm working on NLP and Social Networks =]

Live the search

Keep,