re-implement GBTRegressor