È necessario un campionamento stratificato (foresta casuale, Python)?


14

Uso Python per eseguire un modello di foresta casuale sul mio set di dati non bilanciato (la variabile di destinazione era una classe binaria). Quando ho diviso il set di dati di training e testing, ho faticato a usare il campionamento stratificato (come il codice mostrato) oppure no. Finora, ho osservato nel mio progetto che il caso stratificato avrebbe portato a prestazioni del modello più elevate. Ma penso che se userò il mio modello per prevedere i nuovi casi che probabilmente differirebbero molto nella distribuzione della classe target con il mio set di dati corrente. Quindi ho deciso di allentare questo vincolo e usare la divisione non stratificata. Qualcuno potrebbe consigliare di chiarire questo punto?

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

Risposte:


13

Se il numero di valori appartenenti a ciascuna classe è sbilanciato, usare il campionamento stratificato è una buona cosa. Fondamentalmente stai chiedendo al modello di seguire l'addestramento e il set di test in modo tale che la proporzione della classe sia la stessa dell'intero set di dati, che è la cosa giusta da fare. Se le tue lezioni sono bilanciate, uno shuffle (qui non è necessaria alcuna stratificazione) può sostanzialmente garantire un test equo e una suddivisione del treno.

Ora il tuo modello sarà in grado o almeno abbastanza equipaggiato per prevedere la classe superata (classe con numero minore di punti). Ecco perché invece di calcolare semplicemente la precisione, ti sono state fornite altre metriche come Sensibilità e Specificità . Tieni d'occhio questi, questi sono i guardiani.

Spero che sia di aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.