Comment régler les paramètres dans la Forêt au Hasard, à l'aide de Scikit Learn?
class sklearn.ensemble.RandomForestClassifier(n_estimators=10,
criterion='gini',
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.0,
max_features='auto',
max_leaf_nodes=None,
bootstrap=True,
oob_score=False,
n_jobs=1,
random_state=None,
verbose=0,
warm_start=False,
class_weight=None)
Je suis à l'aide d'une forêt aléatoire modèle avec 9 échantillons et environ 7000 attributs. De ces échantillons, il existe 3 catégories que mon classificateur reconnaît.
Je sais que c'est loin d'être des conditions idéales, mais je suis à essayer de comprendre quels sont les attributs les plus importants en fonction des prédictions. Quels sont les paramètres qui serait le meilleur tweak pour l'optimisation de la fonction de l'importance?
J'ai essayé différentes n_estimators
et a remarqué que la quantité de "caractéristiques" (c'est à dire des valeurs non nulles dans la feature_importances_
tableau) a augmenté de façon spectaculaire.
J'ai lu la documentation mais si quelqu'un a la moindre expérience dans ce domaine, je voudrais savoir quels sont les paramètres qui sont les meilleurs pour régler et une brève explication de pourquoi.
- Pourquoi êtes-vous en utilisant quelque chose comme RF pour 9 échantillons? Il y a tellement de choses qui peuvent mal se passer ici. Pour un, vous pouvez aller en bas de la plusieurs hypothèse chemin d'accès à expliquer vos données. Votre arbre estimateurs aura une super grande diversité et horrible de la précision. Je pourrais continuer. Fondamentalement, le plus gros problème avec le RF sur de petits ensembles de données, c'est qu'ils sont presque entièrement non interprétables boîtes noires, la répartition dans l'espace de la fonctionnalité et de l'échantillon de l'espace sont fait de manière aléatoire.
- D'accord. Je voudrais faire cela très différemment maintenant avec plus d'expérience.
Vous devez vous connecter pour publier un commentaire.
De mon expérience, il y a trois caractéristiques qui valent le coup d'explorer avec le sklearn RandomForestClassifier, par ordre d'importance:
n_estimators
max_features
criterion
n_estimators
n'est pas vraiment la peine de l'optimisation. Le plus estimateurs vous lui donnez, le mieux c'est d'en faire. 500 ou 1000 est généralement suffisant.max_features
vaut la peine d'explorer de nombreuses valeurs différentes. Il peut avoir un grand impact sur le comportement de la RF, car il décide de la façon dont de nombreuses caractéristiques de chaque arbre dans la fédération de russie considère à chaque division.criterion
peut avoir un impact faible, mais généralement, la valeur par défaut est très bien. Si vous avez le temps, essayez-la.Assurez-vous d'utiliser sklearn de GridSearch (de préférence GridSearchCV, mais votre ensemble de données de taille est trop petite) lorsque l'on veut sortir de ces paramètres.
Si je comprends votre question correctement, cependant, vous n'avez 9 échantillons et 3 classes? Sans doute 3 échantillons par classe? Il est très probable que votre RF va overfit avec une petite quantité de données, sauf s'ils sont bons, représentant des enregistrements.
Les éléments essentiels sont généralement de trois éléments:
Cette merveilleux article a une explication détaillée des paramètres réglables, comment suivre les performances et la vitesse de compromis, quelques conseils pratiques, et comment effectuer la grille de recherche.
n_estimators
est bonne parce que les autres ont dit. Il est également bon à faire face avec le surajustement lorsque l'augmenter.Mais je pense que
min_sample_split
est également utile lorsque vous traitez avec le surajustement eu lieu dans un petit échantillon, mais grand-caractéristiques dataset.