kaz-Anova / StackNet

StackNet is a computational, scalable and analytical Meta modelling framework
MIT License
1.32k stars 344 forks source link

LibFMClassifier: Misspelling UseConstant gives different CV results #7

Closed brandenkmurray closed 7 years ago

brandenkmurray commented 7 years ago

I accidentally misspelled UseConstant:true as UseConstance:true in my params file. After correcting my mistake I noticed that my CV results got worse. I then changed to UseConstant:false and I get the same exact result as UseConstant:true. I then got rid of UseConstant completely and got the same results as when I misspelled it, as I'd expect. It seems as if the mere presence of UseConstant determines whether a constant is used and not the actual true/false setting. Is this the expected behavior?

kaz-Anova commented 7 years ago

Hey @brandenkmurray . Thank you for letting me know . This is what happened : The default value for UseConstant=True; so if you misspell or don't include this, you get True by default. However when you give the parameters (in all cases, not just in Libfm) , the model understands only 'True' with uppercase 'T' not 'true'. If it is not 'True', the model thinks it is false. This is how it has been set up. You can see in the parameter files all 'Trues' are with capital 'T'. I will change it in the future to include lower case. For the meantime, please use 'True' if you need a feature and not 'true'.

brandenkmurray commented 7 years ago

@kaz-Anova Ahh, I see. The "Parameter's File" section in the README uses lower case, that's what was throwing me off. Thanks.

kaz-Anova commented 7 years ago

That should be fixed now.