Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/24/09 16:52:24 (15 years ago)
Author:
gkronber
Message:

Adapted ModelingResultCalculators to keep a mapping from ModelingResult to evaluators. Using mapping in DefaultOperators for data-modeling engines. #755

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Modeling/3.2/DefaultRegressionOperators.cs

    r2379 r2388  
    4444
    4545    public static IOperator CreatePostProcessingOperator() {
    46       CombinedOperator op = new CombinedOperator();
    47       op.Name = "Regression model analyser";
    48       SequentialProcessor seq = new SequentialProcessor();
    49       #region MSE
    50       SimpleMSEEvaluator trainingMseEvaluator = new SimpleMSEEvaluator();
    51       trainingMseEvaluator.Name = "TrainingMseEvaluator";
    52       trainingMseEvaluator.GetVariableInfo("MSE").ActualName = ModelingResult.TrainingMeanSquaredError.ToString();
    53       trainingMseEvaluator.GetVariableInfo("Values").ActualName = "TrainingValues";
    54       SimpleMSEEvaluator validationMseEvaluator = new SimpleMSEEvaluator();
    55       validationMseEvaluator.Name = "ValidationMseEvaluator";
    56       validationMseEvaluator.GetVariableInfo("MSE").ActualName = ModelingResult.ValidationMeanSquaredError.ToString();
    57       validationMseEvaluator.GetVariableInfo("Values").ActualName = "ValidationValues";
    58       SimpleMSEEvaluator testMseEvaluator = new SimpleMSEEvaluator();
    59       testMseEvaluator.Name = "TestMseEvaluator";
    60       testMseEvaluator.GetVariableInfo("MSE").ActualName = ModelingResult.TestMeanSquaredError.ToString();
    61       testMseEvaluator.GetVariableInfo("Values").ActualName = "TestValues";
    62       #endregion
    63       #region NMSE
    64       SimpleNMSEEvaluator trainingNmseEvaluator = new SimpleNMSEEvaluator();
    65       trainingNmseEvaluator.Name = "TrainingNmseEvaluator";
    66       trainingNmseEvaluator.GetVariableInfo("NMSE").ActualName = ModelingResult.TrainingNormalizedMeanSquaredError.ToString();
    67       trainingNmseEvaluator.GetVariableInfo("Values").ActualName = "TrainingValues";
    68       SimpleNMSEEvaluator validationNmseEvaluator = new SimpleNMSEEvaluator();
    69       validationNmseEvaluator.Name = "ValidationMseEvaluator";
    70       validationNmseEvaluator.GetVariableInfo("NMSE").ActualName = ModelingResult.ValidationNormalizedMeanSquaredError.ToString();
    71       validationNmseEvaluator.GetVariableInfo("Values").ActualName = "ValidationValues";
    72       SimpleNMSEEvaluator testNmseEvaluator = new SimpleNMSEEvaluator();
    73       testNmseEvaluator.Name = "TestNmseEvaluator";
    74       testNmseEvaluator.GetVariableInfo("NMSE").ActualName = ModelingResult.TestNormalizedMeanSquaredError.ToString();
    75       testNmseEvaluator.GetVariableInfo("Values").ActualName = "TestValues";
    76       #endregion
    77       #region MAPE
    78       SimpleMeanAbsolutePercentageErrorEvaluator trainingMapeEvaluator = new SimpleMeanAbsolutePercentageErrorEvaluator();
    79       trainingMapeEvaluator.Name = "TrainingMapeEvaluator";
    80       trainingMapeEvaluator.GetVariableInfo("MAPE").ActualName = ModelingResult.TrainingMeanAbsolutePercentageError.ToString();
    81       trainingMapeEvaluator.GetVariableInfo("Values").ActualName = "TrainingValues";
    82       SimpleMeanAbsolutePercentageErrorEvaluator validationMapeEvaluator = new SimpleMeanAbsolutePercentageErrorEvaluator();
    83       validationMapeEvaluator.Name = "ValidationMapeEvaluator";
    84       validationMapeEvaluator.GetVariableInfo("MAPE").ActualName = ModelingResult.ValidationMeanAbsolutePercentageError.ToString();
    85       validationMapeEvaluator.GetVariableInfo("Values").ActualName = "ValidationValues";
    86       SimpleMeanAbsolutePercentageErrorEvaluator testMapeEvaluator = new SimpleMeanAbsolutePercentageErrorEvaluator();
    87       testMapeEvaluator.Name = "TestMapeEvaluator";
    88       testMapeEvaluator.GetVariableInfo("MAPE").ActualName = ModelingResult.TestMeanAbsolutePercentageError.ToString();
    89       testMapeEvaluator.GetVariableInfo("Values").ActualName = "TestValues";
    90       #endregion
    91       #region MAPRE
    92       SimpleMeanAbsolutePercentageOfRangeErrorEvaluator trainingMapreEvaluator = new SimpleMeanAbsolutePercentageOfRangeErrorEvaluator();
    93       trainingMapreEvaluator.Name = "TrainingMapreEvaluator";
    94       trainingMapreEvaluator.GetVariableInfo("MAPRE").ActualName = ModelingResult.TrainingMeanAbsolutePercentageOfRangeError.ToString();
    95       trainingMapreEvaluator.GetVariableInfo("Values").ActualName = "TrainingValues";
    96       SimpleMeanAbsolutePercentageOfRangeErrorEvaluator validationMapreEvaluator = new SimpleMeanAbsolutePercentageOfRangeErrorEvaluator();
    97       validationMapreEvaluator.Name = "ValidationMapreEvaluator";
    98       validationMapreEvaluator.GetVariableInfo("MAPRE").ActualName = ModelingResult.ValidationMeanAbsolutePercentageOfRangeError.ToString();
    99       validationMapreEvaluator.GetVariableInfo("Values").ActualName = "ValidationValues";
    100       SimpleMeanAbsolutePercentageOfRangeErrorEvaluator testMapreEvaluator = new SimpleMeanAbsolutePercentageOfRangeErrorEvaluator();
    101       testMapreEvaluator.Name = "TestMapreEvaluator";
    102       testMapreEvaluator.GetVariableInfo("MAPRE").ActualName = ModelingResult.TestMeanAbsolutePercentageOfRangeError.ToString();
    103       testMapreEvaluator.GetVariableInfo("Values").ActualName = "TestValues";
    104       #endregion MAPRE
    105       #region R2
    106       SimpleR2Evaluator trainingR2Evaluator = new SimpleR2Evaluator();
    107       trainingR2Evaluator.Name = "TrainingR2Evaluator";
    108       trainingR2Evaluator.GetVariableInfo("R2").ActualName = ModelingResult.TrainingCoefficientOfDetermination.ToString();
    109       trainingR2Evaluator.GetVariableInfo("Values").ActualName = "TrainingValues";
    110       SimpleR2Evaluator validationR2Evaluator = new SimpleR2Evaluator();
    111       validationR2Evaluator.Name = "ValidationR2Evaluator";
    112       validationR2Evaluator.GetVariableInfo("R2").ActualName = ModelingResult.ValidationCoefficientOfDetermination.ToString();
    113       validationR2Evaluator.GetVariableInfo("Values").ActualName = "ValidationValues";
    114       SimpleR2Evaluator testR2Evaluator = new SimpleR2Evaluator();
    115       testR2Evaluator.Name = "TestR2Evaluator";
    116       testR2Evaluator.GetVariableInfo("R2").ActualName = ModelingResult.TestCoefficientOfDetermination.ToString();
    117       testR2Evaluator.GetVariableInfo("Values").ActualName = "TestValues";
    118       #endregion
    119       #region VAF
    120       SimpleVarianceAccountedForEvaluator trainingVAFEvaluator = new SimpleVarianceAccountedForEvaluator();
    121       trainingVAFEvaluator.Name = "TrainingVAFEvaluator";
    122       trainingVAFEvaluator.GetVariableInfo("VAF").ActualName = ModelingResult.TrainingVarianceAccountedFor.ToString();
    123       trainingVAFEvaluator.GetVariableInfo("Values").ActualName = "TrainingValues";
    124       SimpleVarianceAccountedForEvaluator validationVAFEvaluator = new SimpleVarianceAccountedForEvaluator();
    125       validationVAFEvaluator.Name = "ValidationVAFEvaluator";
    126       validationVAFEvaluator.GetVariableInfo("VAF").ActualName = ModelingResult.ValidationVarianceAccountedFor.ToString();
    127       validationVAFEvaluator.GetVariableInfo("Values").ActualName = "ValidationValues";
    128       SimpleVarianceAccountedForEvaluator testVAFEvaluator = new SimpleVarianceAccountedForEvaluator();
    129       testVAFEvaluator.Name = "TestVAFEvaluator";
    130       testVAFEvaluator.GetVariableInfo("VAF").ActualName = ModelingResult.TestVarianceAccountedFor.ToString();
    131       testVAFEvaluator.GetVariableInfo("Values").ActualName = "TestValues";
    132       #endregion
    133 
    134       seq.AddSubOperator(trainingMseEvaluator);
    135       seq.AddSubOperator(validationMseEvaluator);
    136       seq.AddSubOperator(testMseEvaluator);
    137       seq.AddSubOperator(trainingNmseEvaluator);
    138       seq.AddSubOperator(validationNmseEvaluator);
    139       seq.AddSubOperator(testNmseEvaluator);
    140       seq.AddSubOperator(trainingMapeEvaluator);
    141       seq.AddSubOperator(validationMapeEvaluator);
    142       seq.AddSubOperator(testMapeEvaluator);
    143       seq.AddSubOperator(trainingMapreEvaluator);
    144       seq.AddSubOperator(validationMapreEvaluator);
    145       seq.AddSubOperator(testMapreEvaluator);
    146       seq.AddSubOperator(trainingR2Evaluator);
    147       seq.AddSubOperator(validationR2Evaluator);
    148       seq.AddSubOperator(testR2Evaluator);
    149       seq.AddSubOperator(trainingVAFEvaluator);
    150       seq.AddSubOperator(validationVAFEvaluator);
    151       seq.AddSubOperator(testVAFEvaluator);
    152 
    153       #region variable impacts
    154       VariableEvaluationImpactCalculator evaluationImpactCalculator = new VariableEvaluationImpactCalculator();
    155       evaluationImpactCalculator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
    156       evaluationImpactCalculator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
    157       VariableQualityImpactCalculator qualityImpactCalculator = new VariableQualityImpactCalculator();
    158       qualityImpactCalculator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
    159       qualityImpactCalculator.GetVariableInfo("SamplesEnd").ActualName = "TrainingSamplesEnd";
    160 
    161       seq.AddSubOperator(evaluationImpactCalculator);
    162       seq.AddSubOperator(qualityImpactCalculator);
    163       #endregion
    164 
    165       op.OperatorGraph.AddOperator(seq);
    166       op.OperatorGraph.InitialOperator = seq;
    167       return op;
     46      return DefaultModelAnalyzerOperators.CreatePostProcessingOperator(ModelType.Regression);
    16847    }
    16948
    17049    public static IAnalyzerModel PopulateAnalyzerModel(IScope modelScope, IAnalyzerModel model) {
    171       model.Predictor = modelScope.GetVariableValue<IPredictor>("Predictor", false);
    172       Dataset ds = modelScope.GetVariableValue<Dataset>("Dataset", true);
    173       model.Dataset = ds;
    174       model.TargetVariable = ds.GetVariableName(modelScope.GetVariableValue<IntData>("TargetVariable", true).Data);
    175       model.Type = ModelType.Regression;
    176       model.TrainingSamplesStart = modelScope.GetVariableValue<IntData>("TrainingSamplesStart", true).Data;
    177       model.TrainingSamplesEnd = modelScope.GetVariableValue<IntData>("TrainingSamplesEnd", true).Data;
    178       model.ValidationSamplesStart = modelScope.GetVariableValue<IntData>("ValidationSamplesStart", true).Data;
    179       model.ValidationSamplesEnd = modelScope.GetVariableValue<IntData>("ValidationSamplesEnd", true).Data;
    180       model.TestSamplesStart = modelScope.GetVariableValue<IntData>("TestSamplesStart", true).Data;
    181       model.TestSamplesEnd = modelScope.GetVariableValue<IntData>("TestSamplesEnd", true).Data;
    182 
    183       model.ExtractResult(modelScope, ModelingResult.TrainingMeanSquaredError);
    184       model.ExtractResult(modelScope, ModelingResult.ValidationMeanSquaredError);
    185       model.ExtractResult(modelScope, ModelingResult.TestMeanSquaredError);
    186       model.ExtractResult(modelScope, ModelingResult.TrainingNormalizedMeanSquaredError);
    187       model.ExtractResult(modelScope, ModelingResult.ValidationNormalizedMeanSquaredError);
    188       model.ExtractResult(modelScope, ModelingResult.TestNormalizedMeanSquaredError);
    189       model.ExtractResult(modelScope, ModelingResult.TrainingMeanAbsolutePercentageError);
    190       model.ExtractResult(modelScope, ModelingResult.ValidationMeanAbsolutePercentageError);
    191       model.ExtractResult(modelScope, ModelingResult.TestMeanAbsolutePercentageError);
    192       model.ExtractResult(modelScope, ModelingResult.TrainingMeanAbsolutePercentageOfRangeError);
    193       model.ExtractResult(modelScope, ModelingResult.ValidationMeanAbsolutePercentageOfRangeError);
    194       model.ExtractResult(modelScope, ModelingResult.TestMeanAbsolutePercentageOfRangeError);
    195       model.ExtractResult(modelScope, ModelingResult.TrainingCoefficientOfDetermination);
    196       model.ExtractResult(modelScope, ModelingResult.ValidationCoefficientOfDetermination);
    197       model.ExtractResult(modelScope, ModelingResult.TestCoefficientOfDetermination);
    198       model.ExtractResult(modelScope, ModelingResult.TrainingVarianceAccountedFor);
    199       model.ExtractResult(modelScope, ModelingResult.ValidationVarianceAccountedFor);
    200       model.ExtractResult(modelScope, ModelingResult.TestVarianceAccountedFor);
    201 
    202       ItemList evaluationImpacts = modelScope.GetVariableValue<ItemList>(ModelingResult.VariableEvaluationImpact.ToString(), false);
    203       ItemList qualityImpacts = modelScope.GetVariableValue<ItemList>(ModelingResult.VariableQualityImpact.ToString(), false);
    204       foreach (ItemList row in evaluationImpacts) {
    205         string variableName = ((StringData)row[0]).Data;
    206         double impact = ((DoubleData)row[1]).Data;
    207         model.SetVariableResult(ModelingResult.VariableEvaluationImpact, variableName, impact);
    208         model.AddInputVariable(variableName);
    209       }
    210       foreach (ItemList row in qualityImpacts) {
    211         string variableName = ((StringData)row[0]).Data;
    212         double impact = ((DoubleData)row[1]).Data;
    213         model.SetVariableResult(ModelingResult.VariableQualityImpact, variableName, impact);
    214         model.AddInputVariable(variableName);
    215       }
    216 
    217       return model;
     50      return DefaultModelAnalyzerOperators.PopulateAnalyzerModel(modelScope, model, ModelType.Regression);
    21851    }
    21952  }
Note: See TracChangeset for help on using the changeset viewer.