When I use XGBoost to fit a model, it usually shows a list of messages like "updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=5". I wonder how XGBoost is performing the tree pruning? I cannot find the description about their pruning process in their paper.
Note: I do understand the decision tree pruning process e.g. pre-pruning and post-pruning. Here I am curious about the actual pruning process of XGBoost. Usually pruning requires a validation data, but XGBoost performs the pruning even when I do not give it any validation data.