public List<ParameterType> getParameterTypes() {
List<ParameterType> types = super.getParameterTypes();
types.add(new ParameterTypeInt(PARAMETER_Min, "Value of minimal rating value. Range: integer; 0-+?; default: 1", 0, Integer.MAX_VALUE, 1, false));
types.add(new ParameterTypeInt(PARAMETER_Range, "Range of possible rating values. Range: integer; 1-+?; default: 4 ; Max Rating=Min Rating+Range;", 1, Integer.MAX_VALUE, 4, false));
types.add(new ParameterTypeInt(PARAMETER_NUM_FACTORS, "Number of latent factors. Range: integer; 1-+?; default: 10", 1, Integer.MAX_VALUE, 10, true));
types.add(new ParameterTypeDouble(PARAMETER_BIAS_REG, "Bias regularization parameter. Range: double; 0-+?; default: 0.0001", 0, Double.MAX_VALUE, 0.0001, true));
types.add(new ParameterTypeDouble(PARAMETER_REG_U, "User regularization parameter. Range: double; 0-+?; default: 0.015", 0, Double.MAX_VALUE, 0.015, true));
types.add(new ParameterTypeDouble(PARAMETER_REG_I, "Item regularization parameter. Range: double; 0-+?; default: 0.015", 0, Double.MAX_VALUE, 0.015, true));
types.add(new ParameterTypeDouble(PARAMETER_LEARN_RATE, "Learning rate of algorithm. Range: double; 0-+?; default: 0.01", 0, Double.MAX_VALUE, 0.01, false));
types.add(new ParameterTypeInt(PARAMETER_NUM_ITER, "Number of iterations. Range: integer; 1-+?; default: 30", 1, Integer.MAX_VALUE, 30, false));
types.add(new ParameterTypeDouble(PARAMETER_REGULARIZATION, "Value of regularization parameter. Range: double; 0-+?; default: 0.015", 0, Double.MAX_VALUE, 0.015, true));
types.add(new ParameterTypeDouble(PARAMETER_INIT_MEAN, "Initial mean. Range: double; 0-+?; default: 0", 0, Double.MAX_VALUE, 0, true));
types.add(new ParameterTypeDouble(PARAMETER_INIT_STDEV, "Initial stdev. Range: double; 0-+?; default: 0.1", 0, Double.MAX_VALUE, 0.1, true));
types.add(new ParameterTypeBoolean(PARAMETER_BOLD_DRIVER, "Use bold driver heuristics for learning rate adaption. Range: boolean; default: false", false, true));
types.add(new ParameterTypeBoolean(PARAMETER_MAE_OPTIMIZED, "Use biased matrix factorization optimized for mean average error (MAE). Range: boolean; default: false", false, false));
return types;
}