Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/08/11 17:47:46 (13 years ago)
Author:
mkommend
Message:

#1613: Added !MAE to RegressionSolutions.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineMeanAbsoluteErrorCalculator.cs

    r6641 r6643  
    2424
    2525namespace HeuristicLab.Problems.DataAnalysis {
    26   public class OnlineMeanSquaredErrorCalculator : IOnlineCalculator {
     26  public class OnlineMeanAbsoluteErrorCalculator : IOnlineCalculator {
    2727
    28     private double sse;
     28    private double sae;
    2929    private int n;
    30     public double MeanSquaredError {
     30    public double MeanAbsoluteError {
    3131      get {
    32         return n > 0 ? sse / n : 0.0;
     32        return n > 0 ? sae / n : 0.0;
    3333      }
    3434    }
    3535
    36     public OnlineMeanSquaredErrorCalculator() {
     36    public OnlineMeanAbsoluteErrorCalculator() {
    3737      Reset();
    3838    }
     
    4444    }
    4545    public double Value {
    46       get { return MeanSquaredError; }
     46      get { return MeanAbsoluteError; }
    4747    }
    4848    public void Reset() {
    4949      n = 0;
    50       sse = 0.0;
     50      sae = 0.0;
    5151      errorState = OnlineCalculatorError.InsufficientElementsAdded;
    5252    }
     
    5858      } else {
    5959        double error = estimated - original;
    60         sse += error * error;
     60        sae += Math.Abs(error);
    6161        n++;
    6262        errorState = errorState & (~OnlineCalculatorError.InsufficientElementsAdded);        // n >= 1
     
    6868      IEnumerator<double> firstEnumerator = first.GetEnumerator();
    6969      IEnumerator<double> secondEnumerator = second.GetEnumerator();
    70       OnlineMeanSquaredErrorCalculator mseCalculator = new OnlineMeanSquaredErrorCalculator();
     70      OnlineMeanAbsoluteErrorCalculator maeCalculator = new OnlineMeanAbsoluteErrorCalculator();
    7171
    7272      // always move forward both enumerators (do not use short-circuit evaluation!)
     
    7474        double estimated = secondEnumerator.Current;
    7575        double original = firstEnumerator.Current;
    76         mseCalculator.Add(original, estimated);
    77         if (mseCalculator.ErrorState != OnlineCalculatorError.None) break;
     76        maeCalculator.Add(original, estimated);
     77        if (maeCalculator.ErrorState != OnlineCalculatorError.None) break;
    7878      }
    7979
    8080      // check if both enumerators are at the end to make sure both enumerations have the same length
    81       if (mseCalculator.ErrorState == OnlineCalculatorError.None &&
     81      if (maeCalculator.ErrorState == OnlineCalculatorError.None &&
    8282         (secondEnumerator.MoveNext() || firstEnumerator.MoveNext())) {
    8383        throw new ArgumentException("Number of elements in first and second enumeration doesn't match.");
    8484      } else {
    85         errorState = mseCalculator.ErrorState;
    86         return mseCalculator.MeanSquaredError;
     85        errorState = maeCalculator.ErrorState;
     86        return maeCalculator.MeanAbsoluteError;
    8787      }
    8888    }
Note: See TracChangeset for help on using the changeset viewer.