private void BuildTree(double[,] xy, string[] allVariables, int maxSize)
        {
            int nRows         = xy.GetLength(0);
            var allowedInputs = allVariables.Skip(1);
            var dataset       = new Dataset(allVariables, xy);
            var problemData   = new RegressionProblemData(dataset, allowedInputs, allVariables.First());

            problemData.TrainingPartition.Start = 0;
            problemData.TrainingPartition.End   = nRows;
            problemData.TestPartition.Start     = nRows;
            problemData.TestPartition.End       = nRows;
            var solution = GradientBoostedTreesAlgorithmStatic.TrainGbm(problemData, new SquaredErrorLoss(), maxSize, nu: 1, r: 1, m: 1, maxIterations: 1, randSeed: 31415);
            var model    = solution.Model;
            var treeM    = model.Models.Skip(1).First() as RegressionTreeModel;

            Console.WriteLine(treeM.ToString());
            Console.WriteLine();
        }
 private IGradientBoostedTreesModel RecalculateModel()
 {
     return(GradientBoostedTreesAlgorithmStatic.TrainGbm(trainingProblemData, lossFunction, maxSize, nu, r, m, iterations, seed).Model);
 }