Keijzer-style error scaling in Clojush

May 17, 2011
by 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.


One Response to “Keijzer-style error scaling in Clojush”

  1.   lspector Says:

    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.

Leave a Reply

You must be logged in to post a comment.