public void setTrainingProportion(double trainingProportion)
    {
        //+- Inf case captured in >1 <= 0 case
        if(trainingProportion > 1 || trainingProportion <= 0 || Double.isNaN(trainingProportion))
            throw new ArithmeticException("Training Proportion is invalid");
        this.trainingProportion = trainingProportion;
    }
public void setTrainingProportion ( double trainingProportion ) { if ( trainingProportion > 1 || trainingProportion <= 0 || Double . isNaN ( trainingProportion ) ) throw new ArithmeticException ( "Training Proportion is invalid" ) ; this . trainingProportion = trainingProportion ; }
The GB version uses the whole data set at each iteration. SGB can use a
fraction of the data set at each iteration in order to reduce overfitting
and add randomness.

@param trainingProportion the fraction of training the data set to use
for each iteration of SGB
@throws ArithmeticException if the trainingPortion is not a valid
fraction in (0, 1]