Keijzer-style error scaling in Clojush
May 17, 2011by Lee Spector (lspector)
Added Clojush support for Keijzer-style error scaling (developed for symbolic regression applications, but maybe it’ll be useful elsewhere). Details below and in the source files.
Available as usual from: https://github.com/lspector/Clojush
20110517: - Added a "scaled-errors" function to support error-scaling as described by Maarten Keijzer in Scaled Symbolic Regression, in Genetic Programming and Evolvable Machines 5(3), pp. 259-269, September 2004. This must be used in a problem's error function, and then the outputs of the evolved program must be "unscaled." See the documentation string for scaled-errors and also examples/scaled_sextic.clj for details. - Added examples/scaled_sextic.clj to demonstrate the use of scaled-errors. - Changed examples/sextic.clj to use squared errors and an error threshold, in order to facilitate comparisons between the versions that do and don't use error scaling. - Made minor changes to the korns_regression_p12 example.
May 18th, 2011 at 2:41 pm
You may notice that the “solution” in examples/scaled_sextic.clj is pretty crummy, and thinking about that helps me see (I think, and this is assuming that my implementation is right — sanity checks welcome!) how this kind of error scaling can make things worse in some cases. If you have an individual that’s using a fundamentally flawed approach but achieves a relatively low error under some (any) linear transformation, then this will be deceptively attractive and may serve as a trap in the fitness landscape. What the scaling does is to give every bad program more ways to look deceptively good.