Opened 7 months ago

Closed 6 days ago

#2977 closed feature request (done)

Pearson R2 & Tree Similarity Multiobjective Evaluator

Reported by: bburlacu Owned by: mkommend
Priority: medium Milestone: HeuristicLab 3.3.16
Component: Problems.DataAnalysis.Symbolic.Regression Version: trunk
Keywords: merged Cc:

Description

The idea behind this multi-objective evaluator is to try to maintain better diversity among the population of solution candidates, helping the algorithm to improve by combining advantageous traits from more diverse parents.

This evaluator works quite well with the NSGA-II.

Change History (12)

comment:1 Changed 7 months ago by bburlacu

  • Status changed from new to accepted
  • Summary changed from New R2 & Tree Similarity Multiobjective Evaluator to Pearson R2 & Tree Similarity Multiobjective Evaluator

comment:2 Changed 7 months ago by bburlacu

  • Component changed from Problems.DataAnalysis.Symbolic to Problems.DataAnalysis.Symbolic.Regression
  • Owner changed from bburlacu to mkommend
  • Status changed from accepted to reviewing

r16499: Implement Pearson R2 & Tree Similarity Evaluator.

comment:3 Changed 7 months ago by gkronber

  • sw is not used (?) and should be removed.
  • creative use of ExecutionContext.Scope.Parent.SubScopes.Where(x => x.Variables.ContainsKey("SymbolicExpressionTree")). Seems likely to break or be incompatible to other algorithms. Maybe you could split evaluation and sim-matrix calculation into an Evaluator and an Analyzer?
  • Can we keep Calculate a static method. Ideally, this would allow to remove the synchronization in Calculate.

comment:4 Changed 7 months ago by bburlacu

creative use of ExecutionContext.Scope.Parent.SubScopes.Where(x => x.Variables.ContainsKey("SymbolicExpressionTree")). Seems likely to break or be incompatible to other algorithms. Maybe you could split evaluation and sim-matrix calculation into an Evaluator and an Analyzer?

I am not quite sure how to achieve that. The analyzer would have to run before the evaluator, on the scope level above the evaluator (ExecutionContext.Parent.Scope) so it cannot be wired as a BeforeExecutionOperator. The evaluator is executed at solution creation and inside the main loop. The only solution I can think of is having the evaluator apply the analyzer but that does not seem like much of an improvement. Any ideas?

comment:5 Changed 7 months ago by gkronber

I thought it could be possible to implement an analyzer which takes all individuals form the population and does some processing for similarity calculation (e.g. linearization, simplification) and then produces an data structure that is written back to the population scope by the analyzer. The evaluator can later retrieve this data structure again. In this case it is necessary to manually you need to add (or enable) the analyzer to make the evaluator work but I think this would be ok.

In the first generation we can probably select randomly (if the analyzer has not been executed before the evaluator)

Last edited 7 months ago by gkronber (previous) (diff)

comment:6 Changed 2 months ago by bburlacu

r16978: Introduce separate SymbolicDataAnalysisExpressionTreeAverageSimilarityCalculator operator for computing the population similarity matrix. Refactor evaluator to use the values calculated by the SimilarityCalculator.

comment:7 Changed 2 months ago by bburlacu

r16981: Make SymbolicDataAnalysisExpressionTreeAverageSimilarityCalculator non-discoverable.

comment:8 Changed 3 weeks ago by mkommend

This ticket blocks the reintegration of the persistence into stable and should be prioritized. This ticket depends on #2950.

Last edited 3 weeks ago by mkommend (previous) (diff)

comment:9 Changed 2 weeks ago by mkommend

  • Status changed from reviewing to readytorelease

comment:10 Changed 2 weeks ago by mkommend

r17096: Merged r16499 into stable.
r17098: Merged r16978, r16981 into stable.

Last edited 2 weeks ago by mkommend (previous) (diff)

comment:11 Changed 2 weeks ago by mkommend

  • Keywords merged added

comment:12 Changed 6 days ago by abeham

  • Resolution set to done
  • Status changed from readytorelease to closed
Note: See TracTickets for help on using tickets.