From 45cbc335c150c9ce186c02f438bb6fc9e84be71e Mon Sep 17 00:00:00 2001 From: Vladislav Chumak Date: Thu, 24 Jan 2019 15:54:43 +0100 Subject: [PATCH] Square root approximation of twd delta std for duration dimension --- .../TwdTransitionAggregatedStdRegressorTrainer.java | 4 ++-- ...sitionManualTrainingDataInputRegressorTrainer.java | 4 ++-- ...tanceBasedTwdTransitionRegressorModelMetadata.java | 8 +++++++- ...ationBasedTwdTransitionRegressorModelMetadata.java | 11 ++++++++++- ...nsionBasedTwdTransitionRegressorModelMetadata.java | 2 ++ 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionAggregatedStdRegressorTrainer.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionAggregatedStdRegressorTrainer.java index 5966bad262e..e63ebcea25c 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionAggregatedStdRegressorTrainer.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionAggregatedStdRegressorTrainer.java @@ -34,7 +34,7 @@ public class TwdTransitionAggregatedStdRegressorTrainer { AggregatedSingleDimensionBasedTwdTransition twdTransition = iterator.next(); double dimensionValue = twdTransition.getDimensionValue(); if (model.getContextSpecificModelMetadata().isDimensionValueSupportedForTraining(dimensionValue)) { - x[0] = dimensionValue; + x[0] = model.getContextSpecificModelMetadata().getPreprocessedDimensionValue(dimensionValue); trainerHelper.incrementalModelTraining(x, twdTransition.getZeroMeanStd()); } } @@ -44,7 +44,7 @@ public class TwdTransitionAggregatedStdRegressorTrainer { AggregatedSingleDimensionBasedTwdTransition twdTransition = iterator.next(); double dimensionValue = twdTransition.getDimensionValue(); if (model.getContextSpecificModelMetadata().isDimensionValueSupportedForTraining(dimensionValue)) { - x[0] = dimensionValue; + x[0] = model.getContextSpecificModelMetadata().getPreprocessedDimensionValue(dimensionValue); trainerHelper.incrementRmseCalculation(x, twdTransition.getZeroMeanStd()); } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionManualTrainingDataInputRegressorTrainer.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionManualTrainingDataInputRegressorTrainer.java index a2d6e133fe2..00d5b19f7df 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionManualTrainingDataInputRegressorTrainer.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/model/regressor/twdtransition/TwdTransitionManualTrainingDataInputRegressorTrainer.java @@ -28,7 +28,7 @@ public class TwdTransitionManualTrainingDataInputRegressorTrainer { double xi = inputOutputPairs[i][0]; if (model.getContextSpecificModelMetadata().isDimensionValueSupportedForTraining(xi)) { double yi = inputOutputPairs[i][1]; - modelInput[0] = xi; + modelInput[0] = model.getContextSpecificModelMetadata().getPreprocessedDimensionValue(xi); trainerHelper.incrementalModelTraining(modelInput, yi); } } @@ -37,7 +37,7 @@ public class TwdTransitionManualTrainingDataInputRegressorTrainer { double xi = inputOutputPairs[i][0]; if (model.getContextSpecificModelMetadata().isDimensionValueSupportedForTraining(xi)) { double yi = inputOutputPairs[i][1]; - modelInput[0] = xi; + modelInput[0] = model.getContextSpecificModelMetadata().getPreprocessedDimensionValue(xi); trainerHelper.incrementRmseCalculation(modelInput, yi); } } diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DistanceBasedTwdTransitionRegressorModelMetadata.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DistanceBasedTwdTransitionRegressorModelMetadata.java index 04bead93489..a3ac4a5e69a 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DistanceBasedTwdTransitionRegressorModelMetadata.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DistanceBasedTwdTransitionRegressorModelMetadata.java @@ -16,7 +16,13 @@ public class DistanceBasedTwdTransitionRegressorModelMetadata @Override public double getDimensionValue(TwdTransition instance) { - return instance.getDistance().getMeters(); + double meters = instance.getDistance().getMeters(); + return getPreprocessedDimensionValue(meters); + } + + @Override + public double getPreprocessedDimensionValue(double meters) { + return meters; } public enum DistanceValueRange { diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DurationBasedTwdTransitionRegressorModelMetadata.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DurationBasedTwdTransitionRegressorModelMetadata.java index 31b3bf1d07c..840395ef64b 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DurationBasedTwdTransitionRegressorModelMetadata.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/DurationBasedTwdTransitionRegressorModelMetadata.java @@ -16,7 +16,16 @@ public class DurationBasedTwdTransitionRegressorModelMetadata @Override public double getDimensionValue(TwdTransition instance) { - return instance.getDuration().asSeconds(); + double seconds = instance.getDuration().asSeconds(); + return getPreprocessedDimensionValue(seconds); + } + + @Override + public double getPreprocessedDimensionValue(double seconds) { + if (getSupportedDimensionValueRange().equals(DurationValueRange.MIDDLE1.getSupportedDimensionValueRange())) { + seconds = Math.sqrt(seconds); + } + return seconds; } public enum DurationValueRange { diff --git a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/SingleDimensionBasedTwdTransitionRegressorModelMetadata.java b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/SingleDimensionBasedTwdTransitionRegressorModelMetadata.java index ef2f857c796..4dcb67993d3 100644 --- a/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/SingleDimensionBasedTwdTransitionRegressorModelMetadata.java +++ b/java/com.sap.sailing.windestimation/src/com/sap/sailing/windestimation/model/regressor/twdtransition/SingleDimensionBasedTwdTransitionRegressorModelMetadata.java @@ -23,6 +23,8 @@ public abstract class SingleDimensionBasedTwdTransitionRegressorModelMetadata } public abstract double getDimensionValue(TwdTransition instance); + + public abstract double getPreprocessedDimensionValue(double dimensionValue); public SupportedDimensionValueRange getSupportedDimensionValueRange() { return supportedDimensionValueRange;