in Java/parkservices/src/main/java/com/amazon/randomcutforest/parkservices/preprocessor/Preprocessor.java [506:531]
protected double inverseTransform(double value, int index, int relativeBlockIndex) {
if (transformMethod == TransformMethod.NONE) {
return value;
}
if (!requireInitialSegment(false, transformMethod)) {
if (transformMethod == TransformMethod.WEIGHTED) {
return (weights[index] == 0) ? 0 : value / weights[index];
} else if (transformMethod == TransformMethod.SUBTRACT_MA) {
return (weights[index] == 0) ? 0 : (value + deviationList[index].getMean()) / weights[index];
}
double[] difference = getShingledInput(shingleSize - 1 + relativeBlockIndex);
checkArgument(transformMethod == TransformMethod.DIFFERENCE, "incorrect configuration");
return (weights[index] == 0) ? 0 : (value + difference[index]) / weights[index];
} else {
if (transformMethod == TransformMethod.NORMALIZE) {
double newValue = deviationList[index].getMean()
+ 2 * value * (deviationList[index].getDeviation() + DEFAULT_NORMALIZATION_PRECISION);
return (weights[index] == 0) ? 0 : newValue / weights[index];
}
checkArgument(transformMethod == TransformMethod.NORMALIZE_DIFFERENCE, "incorrect configuration");
double[] difference = getShingledInput(shingleSize - 1 + relativeBlockIndex);
double newValue = difference[index] + deviationList[index].getMean()
+ 2 * value * (deviationList[index].getDeviation() + DEFAULT_NORMALIZATION_PRECISION);
return (weights[index] == 0) ? 0 : newValue / weights[index];
}
}