Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/05/11 08:22:36 (12 years ago)
Author:
gkronber
Message:

#1081 implemented multi-variate symbolic expression tree interpreter for time series prognosis.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.TimeSeries/HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis/3.4/SingleObjective/SymbolicTimeSeriesPrognosisSingleObjectivePearsonRSquaredEvaluator.cs

    r7100 r7120  
    2020#endregion
    2121
     22using System;
    2223using System.Collections.Generic;
     24using System.Linq;
    2325using HeuristicLab.Common;
    2426using HeuristicLab.Core;
     
    4850      IEnumerable<int> rows = GenerateRowsToEvaluate();
    4951
    50       double quality = Calculate(SymbolicTimeSeriesPrognosisInterpreterParameter.ActualValue, solution, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, ProblemDataParameter.ActualValue, rows);
     52      double quality = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, solution,
     53        EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper,
     54        ProblemDataParameter.ActualValue,
     55        rows, HorizonParameter.ActualValue.Value);
    5156      QualityParameter.ActualValue = new DoubleValue(quality);
    5257
     
    5459    }
    5560
    56     public static double Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, ITimeSeriesPrognosisProblemData problemData, IEnumerable<int> rows) {
    57       IEnumerable<double> estimatedValues = interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, rows);
     61    public static double Calculate(ISymbolicTimeSeriesPrognosisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, ITimeSeriesPrognosisProblemData problemData, IEnumerable<int> rows, int horizon) {
     62      var allPredictedContinuations =
     63        interpreter.GetSymbolicExpressionTreeValues(solution, problemData.Dataset, problemData.TargetVariables.ToArray(),
     64                                                    rows, horizon).ToArray();
     65
    5866      var meanCalculator = new OnlineMeanAndVarianceCalculator();
     67      int i = 0;
    5968      foreach (var targetVariable in problemData.TargetVariables) {
    60         IEnumerable<double> originalValues = problemData.Dataset.GetDoubleValues(targetVariable, rows);
     69        var actualContinuations = from r in rows
     70                                  select problemData.Dataset.GetDoubleValues(targetVariable, Enumerable.Range(r, horizon));
     71        var startValues = problemData.Dataset.GetDoubleValues(targetVariable, rows.Select(r => r - 1));
    6172        OnlineCalculatorError errorState;
    62         meanCalculator.Add(OnlinePearsonsRSquaredCalculator.Calculate(estimatedValues, originalValues, out errorState));
    63         if (errorState != OnlineCalculatorError.None) return 0.0;
     73        meanCalculator.Add(OnlineTheilsUStatisticCalculator.Calculate(
     74          startValues,
     75          allPredictedContinuations.Select(v => v.ElementAt(i)),
     76          actualContinuations, out errorState));
     77        if (errorState != OnlineCalculatorError.None) return double.NaN;
     78        i++;
    6479      }
    6580      return meanCalculator.Mean;
     
    6782
    6883    public override double Evaluate(IExecutionContext context, ISymbolicExpressionTree tree, ITimeSeriesPrognosisProblemData problemData, IEnumerable<int> rows) {
    69       SymbolicTimeSeriesPrognosisInterpreterParameter.ExecutionContext = context;
     84      SymbolicDataAnalysisTreeInterpreterParameter.ExecutionContext = context;
    7085      EstimationLimitsParameter.ExecutionContext = context;
     86      HorizonParameter.ExecutionContext = context;
    7187
    72       double r2 = Calculate(SymbolicTimeSeriesPrognosisInterpreterParameter.ActualValue, tree, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, problemData, rows);
     88      double r2 = Calculate(SymbolicDataAnalysisTreeInterpreterParameter.ActualValue, tree, EstimationLimitsParameter.ActualValue.Lower, EstimationLimitsParameter.ActualValue.Upper, problemData, rows, HorizonParameter.ActualValue.Value);
    7389
    74       SymbolicTimeSeriesPrognosisInterpreterParameter.ExecutionContext = null;
     90      HorizonParameter.ExecutionContext = null;
     91      SymbolicDataAnalysisTreeInterpreterParameter.ExecutionContext = null;
    7592      EstimationLimitsParameter.ExecutionContext = null;
    7693
Note: See TracChangeset for help on using the changeset viewer.