package shared; /** * Standard error measure, suitable for use with * linear output networks for regression, sigmoid * output networks for single class probability, * and soft max networks for multi class probabilities. * @author Andrew Guillory gtg008g@mail.gatech.edu * @version 1.0 */ public class SumOfSquaresError extends AbstractErrorMeasure implements GradientErrorMeasure { /** * @see nn.error.ErrorMeasure#error(double[], nn.Pattern[], int) */ public double value(Instance output, Instance example) { double sum = 0; Instance label = example.getLabel(); for (int i = 0; i < output.size(); i++) { sum += (output.getContinuous(i) - label.getContinuous(i)) * (output.getContinuous(i) - label.getContinuous(i)) * example.getWeight(); } return .5 * sum; } /** * @see nn.error.DifferentiableErrorMeasure#derivatives(double[], nn.Pattern[], int) */ public double[] gradient(Instance output, Instance example) { double[] errorArray = new double[output.size()]; Instance label = example.getLabel(); for (int i = 0; i < output.size(); i++) { errorArray[i] = (output.getContinuous(i) - label.getContinuous(i)) * example.getWeight(); } return errorArray; } }