Changeset 16788 for trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator.cs
- Timestamp:
- 04/16/19 11:43:52 (5 years ago)
- Location:
- trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification
-
trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Classification/3.4/SingleObjective/SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator.cs
r16784 r16788 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 5Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2019 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HEAL.Attic; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; … … 28 29 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 29 30 using HeuristicLab.Parameters; 30 using HeuristicLab.P ersistence.Default.CompositeSerializers.Storable;31 using HeuristicLab.PluginInfrastructure; 31 32 32 33 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Classification { 34 [NonDiscoverableType] 33 35 [Item("Weighted Residuals Mean Squared Error Evaluator", @"A modified mean squared error evaluator that enables the possibility to weight residuals differently. 34 36 The first residual category belongs to estimated values which definitely belong to a specific class because the estimated value is located above the maximum or below the minimum of all the class values (DefiniteResidualsWeight). … … 36 38 All other cases are represented by the third category (NegativeClassesResidualsWeight). 37 39 The weight gets multiplied to the squared error. Note that the Evaluator acts like a normal MSE-Evaluator if all the weights are set to 1.")] 38 [Storable Class]39 public class SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator : SymbolicClassificationSingleObjectiveEvaluator {40 [StorableType("A3193296-1A0F-46E2-8F43-22E2ED9CFFC5")] 41 public sealed class SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator : SymbolicClassificationSingleObjectiveEvaluator { 40 42 private const string DefiniteResidualsWeightParameterName = "DefiniteResidualsWeight"; 41 43 private const string PositiveClassResidualsWeightParameterName = "PositiveClassResidualsWeight"; 42 44 private const string NegativeClassesResidualsWeightParameterName = "NegativeClassesResidualsWeight"; 43 45 [StorableConstructor] 44 pr otected SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator(bool deserializing) : base(deserializing) { }45 pr otectedSymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator(SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator original, Cloner cloner)46 private SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator(StorableConstructorFlag _) : base(_) { } 47 private SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator(SymbolicClassificationSingleObjectiveWeightedResidualsMeanSquaredErrorEvaluator original, Cloner cloner) 46 48 : base(original, cloner) { 47 49 } … … 73 75 74 76 public double DefiniteResidualsWeight { 75 get { 76 return DefiniteResidualsWeightParameter.Value.Value; 77 } 77 get { return DefiniteResidualsWeightParameter.Value.Value; } 78 78 } 79 79 public double PositiveClassResidualsWeight { 80 get { 81 return PositiveClassResidualsWeightParameter.Value.Value; 82 } 80 get { return PositiveClassResidualsWeightParameter.Value.Value; } 83 81 } 84 82 public double NegativeClassesResidualsWeight { 85 get { 86 return NegativeClassesResidualsWeightParameter.Value.Value; 87 } 83 get { return NegativeClassesResidualsWeightParameter.Value.Value; } 88 84 } 89 85 #endregion … … 98 94 } 99 95 100 public static double Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, IClassificationProblemData problemData, IEnumerable<int> rows, bool applyLinearScaling,96 public static double Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree tree, double lowerEstimationLimit, double upperEstimationLimit, IClassificationProblemData problemData, IEnumerable<int> rows, bool applyLinearScaling, 101 97 double definiteResidualsWeight, double positiveClassResidualsWeight, double negativeClassesResidualsWeight) { 102 IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues( solution, problemData.Dataset, rows);98 IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues(tree, problemData.Dataset, rows); 103 99 IEnumerable<double> targetValues = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows); 104 100 OnlineCalculatorError errorState; … … 115 111 double quality; 116 112 if (applyLinearScaling) { 117 var calculator = new OnlineWeighted ResidualsMeanSquaredErrorCalculator(positiveClassValue, classValuesMax, classValuesMin,113 var calculator = new OnlineWeightedClassificationMeanSquaredErrorCalculator(positiveClassValue, classValuesMax, classValuesMin, 118 114 definiteResidualsWeight, positiveClassResidualsWeight, negativeClassesResidualsWeight); 119 115 CalculateWithScaling(targetValues, estimatedValues, lowerEstimationLimit, upperEstimationLimit, calculator, problemData.Dataset.Rows); … … 122 118 } else { 123 119 IEnumerable<double> boundedEstimatedValues = estimatedValues.LimitToRange(lowerEstimationLimit, upperEstimationLimit); 124 quality = OnlineWeighted ResidualsMeanSquaredErrorCalculator.Calculate(targetValues, boundedEstimatedValues, positiveClassValue, classValuesMax,120 quality = OnlineWeightedClassificationMeanSquaredErrorCalculator.Calculate(targetValues, boundedEstimatedValues, positiveClassValue, classValuesMax, 125 121 classValuesMin, definiteResidualsWeight, positiveClassResidualsWeight, negativeClassesResidualsWeight, out errorState); 126 122 }
Note: See TracChangeset
for help on using the changeset viewer.