web-dev-qa-db-fra.com

Différence entre min_samples_split et min_samples_leaf dans sklearn DecisionTreeClassifier

Je passais par la classe sklearn DecisionTreeClassifier .

En regardant les paramètres de la classe, nous avons deux paramètres min_samples_split et min_samples_leaf . L'idée de base derrière eux semble similaire, vous spécifiez un nombre minimum d'échantillons requis pour décider qu'un nœud doit être feuille ou divisé plus loin.

Pourquoi avons-nous besoin de deux paramètres lorsque l'un implique l'autre?. Y a-t-il une raison ou un scénario qui les distingue?.

15
Hara Chaitanya

De la documentation:

La principale différence entre les deux est que min_samples_leaf garantit un nombre minimum d'échantillons dans une feuille, tandis que min_samples_split peut créer de petites feuilles arbitraires, bien que min_samples_split est plus courant dans la littérature.

Pour comprendre cette documentation, je pense que vous devriez faire la distinction entre un feuille (également appelé nœud externe) et un nœud interne . Un nœud interne aura d'autres divisions (également appelées enfants), tandis qu'une feuille est par définition un nœud sans enfants (sans autres divisions).

min_samples_split spécifie le nombre minimum d'échantillons requis pour diviser un nœud interne , tandis que min_samples_leaf spécifie le nombre minimum d'échantillons requis pour être sur un nœud feuille .

Par exemple, si min_samples_split = 5, et il y a 7 échantillons sur un noeud interne, alors la division est autorisée. Mais disons que le fractionnement donne deux feuilles, une avec 1 échantillon et une autre avec 6 échantillons. Si min_samples_leaf = 2, le fractionnement ne sera pas autorisé (même si le nœud interne a 7 échantillons) car l'une des feuilles résultantes aura moins que le nombre minimal d'échantillons requis pour être au niveau d'un nœud feuille.

Comme la documentation mentionnée ci-dessus le mentionne, min_samples_leaf garantit un nombre minimum d'échantillons dans chaque feuille, quelle que soit la valeur de min_samples_split.

31
Alex