Un échantillonnage stratifié est-il nécessaire (forêt aléatoire, Python)?


14

J'utilise Python pour exécuter un modèle de forêt aléatoire sur mon jeu de données déséquilibré (la variable cible était une classe binaire). Lors du fractionnement de l'ensemble de données de formation et de test, j'ai eu du mal à utiliser un échantillonnage stratifié (comme le code illustré) ou non. Jusqu'à présent, j'ai observé dans mon projet que le cas stratifié conduirait à une performance de modèle plus élevée. Mais je pense que si j'utilise mon modèle pour prédire les nouveaux cas qui différeraient très probablement dans la distribution de la classe cible avec mon ensemble de données actuel. J'ai donc eu tendance à assouplir cette contrainte et à utiliser la division non stratifiée. Quelqu'un pourrait-il conseiller pour clarifier ce point?

train,test=train_test_split(myDataset, test_size=0.25, stratify=y)

Réponses:


13

Si le nombre de valeurs appartenant à chaque classe est déséquilibré, l'utilisation d'un échantillonnage stratifié est une bonne chose. Vous demandez essentiellement au modèle de suivre l'ensemble de formation et de test de sorte que la proportion de classe soit la même que celle de l'ensemble de données, qui est le bonne chose à faire. Si vos classes sont équilibrées, un shuffle (pas de stratification nécessaire ici) peut fondamentalement garantir un test équitable et une séparation des trains.

Maintenant, votre modèle sera capable ou au moins suffisamment équipé pour prédire la classe en infériorité numérique (classe avec moins de points en nombre). C'est pourquoi au lieu de simplement calculer la précision, vous avez reçu d'autres mesures comme sensibilité et la spécificité . Surveillez-les, ce sont les gardiens.

J'espère que cela t'aides.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.