Open Claes1981 opened 3 years ago
In general I would set normalize_y
to True
. Due to the upstream issue you mentioned, it can happen that a division by zero error will result if the standard deviation is still zero.
It looks like the fix was merged in November:
https://github.com/scikit-learn/scikit-learn/pull/18831
I will investigate, how easy it would be to update everything to scikit-learn 0.24 (the new version).
In your second plot, you can see that the playing strength is becoming worse towards the edges everywhere. That could be an indication that the Gaussian process wants to revert to the mean (which is zero) there.
Thanks, nice to hear that my suspicion that it is good to set normalize_y=True (as long as no error appears) is confirmed by you.
Description
I have experimented with changing the "gp_kwargs" parameter "normalize_y" between True and False in cli.py. (First by manually editing the code locally in my virtual environment, and later by implementing an option.)
You changed this normalize_y parameter from True to False in your code on September 20 "Due to a bug in scikit-learn 0.23.2". Is it this issue you refer to?
In https://github.com/scikit-optimize/scikit-optimize/blob/master/skopt/learning/gaussian_process/gpr.py it is written under normalize_y: "...This parameter should be set to True if the target values' mean is expected to differ considerable from zero. ..." I am not sure what is "considerable" here, but I set the time control of engine2 in my experiments much lower than engine1 to make the running time shorter (while still tuning at longer time control of engine1). I therefore expect the Elo of the optimum to be greater than zero.
In my few specific experiments the tuner has at least not crashed so far when having normalize_y set to True. Instead the Elo of the optimum after 953 iterations/1906 games is 24.2045 +- 5.1086 when resuming with normalize_y=True, but "only" 21.4418 +- 11.3574 when resuming at the same iteration with normalize_y=False.
Output
normalize_y=True:
normalize_y=False:
Do you have any comments on the results? Do you also think that it is correct that the optimum found by normalize_y=True is more likely to be superior to the optimum found by normalize_y=False, than the other way around?
Full log: Cfish_20100303_S200723-1134.log
Data: Cfish_20100303_S200723-1134.npz.zip
Config file: Cfish_20100303_S200723-1134.json.zip