Exploring custom complexities / 2D pareto fronts #791
Replies: 4 comments 1 reply
-
what is the objective here? To improve diversity? I had some good initial results exploring fitness sharing here https://dl.acm.org/doi/abs/10.1145/3583133.3590525 The key element here is how I measure the similarity, I compare the predictions of two models outside the boundaries of the training data. I'm assuming that all good solutions will have similar predictions in the training points (to minimize the MSE), they can differ in how they behave outside that boundary. Bogdan's hash can also help to identify equivalent structures (tho it is inexact) and can also be used to measure similarity. Now, if you want different ways to measure complexity, I like Kommenda's approach. He published a study in using different measures in MOO https://link.springer.com/chapter/10.1007/978-3-319-27340-2_51 |
Beta Was this translation helpful? Give feedback.
-
Regarding complexity measures/metrcs, this one I'm experimenting with called complexity invariant-distance (CID) is really simple to implement, A variation that builds off the correlation coefficient
It essentially tries to stretch a model to match the complexity in the data My experiments with it here: |
Beta Was this translation helpful? Give feedback.
-
@folivetti Yeah, to improve diversity in the hall of fame. Whenever I do hyperparameter tuning, it seems the algorithm really likes to resample from the hall of fame (which stores a pareto front of expressions). So I wanted a way to allow the hall of fame to store alternates. I remember someone mentioning that many ways they had tried to implement a "thick" pareto front resulted in purely genotypic differences in population members with negligible phenotypic differences (like Thanks @pukpr. |
Beta Was this translation helpful? Give feedback.
-
IMO the Pareto front may not be the best place to seek diversity as it will restrict to one choice per complexity level, so when facing two equally good alternatives with the same complexity it will pick one and discard (or hide away) the other. Maybe a way to approach is keeping a list of distinct, but equally good solutions, per complexity level? |
Beta Was this translation helpful? Give feedback.
-
Trying out some ideas including from @larsentom in MilesCranmer/SymbolicRegression.jl#364. Since it's not yet possible to have a 2D pareto "surface" instead of a pareto front, I'm currently just adding different complexity measures with different weightings (which, in effect, partially accomplishes the same thing?). Here's one idea that simply adds the depth (times 2) with complexity:
It gives interesting differences in the search result compared to simply counting the number of nodes. Maybe this sort of thing is worth trying during hyperparameter tuning.
Since we can't yet do 2D pareto surfaces, I think a good alternative is simply adding up the various complexity metrics with different weightings, and using a larger
maxsize
. If the 1D pareto front is fully explored, this should in effect also explore more of the 2D pareto surface.I'd be interested in hearing any ideas from @folivetti too!
Beta Was this translation helpful? Give feedback.
All reactions