Opened 15 months ago

Closed 9 months 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 15 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 15 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 15 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 15 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 15 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 15 months ago by gkronber (previous) (diff)

comment:6 Changed 10 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 10 months ago by bburlacu

r16981: Make SymbolicDataAnalysisExpressionTreeAverageSimilarityCalculator non-discoverable.

comment:8 Changed 9 months ago by mkommend

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

Last edited 9 months ago by mkommend (previous) (diff)

comment:9 Changed 9 months ago by mkommend

  • Status changed from reviewing to readytorelease

comment:10 Changed 9 months ago by mkommend

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

Last edited 9 months ago by mkommend (previous) (diff)

comment:11 Changed 9 months ago by mkommend

  • Keywords merged added

comment:12 Changed 9 months ago by abeham

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