I am very confused about how decision trees select features and threshold within each feature to do the split. I totally understand the different splitting metrics (Gini index and so on) used and how they work. But my problem is how sklearn chooses features and thresholds to calculate these metrics.
The estimator sklearn.tree.DecisionTreeClassifier
has a parameter splitter
. Let me admit that all the resources available online are not that good in explaining this parameter and they are conflicting each other. I still don't understand what will happen if I set splitter="best"
: does this means that the algorithm will consider all the features with all of its values to get the best threshold value? And in this case max_features
attribute will not have any effect? And if I set splitter="random"
the algorithm will randomly select certain numbers of features = max_features
from the features and search each for certain random values of each of these features to find the threshold to split?