Opened 6 years ago
Closed 5 years 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 6 years 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 6 years 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
comment:3 Changed 6 years 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 6 years 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 6 years 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)
comment:6 Changed 6 years 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 6 years ago by bburlacu
r16981: Make SymbolicDataAnalysisExpressionTreeAverageSimilarityCalculator non-discoverable.
comment:8 Changed 5 years ago by mkommend
This ticket blocks the reintegration of the persistence into stable and should be prioritized.
comment:9 Changed 5 years ago by mkommend
- Status changed from reviewing to readytorelease
comment:10 Changed 5 years ago by mkommend
comment:11 Changed 5 years ago by mkommend
- Keywords merged added
comment:12 Changed 5 years ago by abeham
- Resolution set to done
- Status changed from readytorelease to closed
r16499: Implement Pearson R2 & Tree Similarity Evaluator.