web-dev-qa-db-fra.com

Comprendre le paramètre max_features dans RandomForestRegressor

Lors de la construction de chaque arbre dans la forêt aléatoire à l'aide d'échantillons bootstrapés, pour chaque nœud terminal, nous sélectionnons m variables au hasard parmi p variables pour trouver la meilleure répartition (p est le nombre total d'entités dans vos données). Mes questions (pour RandomForestRegressor) sont:

1) À quoi correspondent max_features (m ou p ou autre chose)?

2) m variables sont-elles sélectionnées au hasard parmi les variables max_features (quelle est la valeur de m)?

3) Si max_features correspond à m, alors pourquoi voudrais-je le définir égal à p pour la régression (par défaut)? Où est le caractère aléatoire de ce paramètre (c'est-à-dire en quoi est-il différent de l'ensachage)?

Merci.

24
csankar69

Directement à partir de documentation :

[max_features] Est la taille des sous-ensembles aléatoires d'entités à prendre en compte lors du fractionnement d'un nœud.

Donc max_features Est ce que vous appelez m . Lorsque max_features="auto", m = p et aucune fonction la sélection de sous-ensembles est effectuée dans les arbres, de sorte que la "forêt aléatoire" est en fait un ensemble ensaché d'arbres de régression ordinaires. Les documents continuent en disant que

Les bonnes valeurs par défaut empiriques sont max_features=n_features Pour les problèmes de régression et max_features=sqrt(n_features) pour les tâches de classification

En définissant max_features Différemment, vous obtiendrez une "vraie" forêt aléatoire.

14
Fred Foo

@lynnyi, max_features est le nombre de fonctionnalités qui sont prises en compte au niveau par division, plutôt que sur la construction entière de l'arbre de décision. Plus clairement, lors de la construction de chaque arbre de décision, RF utilisera toujours toutes les fonctionnalités (n_features), mais il ne prendra en compte que le nombre de fonctionnalités "max_features" pour le fractionnement des nœuds. Et les "max_features" les entités sont sélectionnées au hasard parmi toutes les entités. Vous pouvez le confirmer en traçant un arbre de décision à partir d'un RF avec max_features = 1, et vérifiez tous les nœuds de cet arbre pour compter le nombre d'entités impliquées .

1
Zhendong Cao