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.
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?