Come eseguire la regressione logistica con un gran numero di funzioni?


10

Ho un set di dati con 330 campioni e 27 funzionalità per ogni campione, con un problema di classe binaria per la regressione logistica.

Secondo la "regola se dieci" ho bisogno di almeno 10 eventi per ogni funzione da includere. Tuttavia, ho un set di dati sbilanciato, con il 20% di classe positiva e l'80% di classe negativa.

Ciò mi dà solo 70 eventi, consentendo di includere solo circa 7/8 funzionalità nel modello logistico.

Vorrei valutare tutte le funzionalità come predittori, non desidero selezionare manualmente alcuna funzionalità.

Quindi cosa suggeriresti? Devo creare tutte le 7 possibili combinazioni di funzioni? Devo valutare ciascuna caratteristica da sola con un modello di associazione e quindi scegliere solo le migliori per un modello finale?

Sono anche curioso di gestire le caratteristiche categoriche e continue, posso mescolarle? Se ho un [0-1] categorico e un [0-100] continuo, dovrei normalizzare?

Attualmente sto lavorando con Python.

Grazie mille per il vostro aiuto!


"Sono anche curioso di gestire le caratteristiche categoriche e continue" Credo che farebbe una domanda separata. In effetti, è già stato chiesto qui .
E_net4 in una meta giacca completa il

2
c'è una differenza tra non avere abbastanza campioni e avere caratteristiche irrilevanti. Non mi concentrerei troppo sulla scelta di esattamente 7 funzioni a causa di una regola semplicistica ...
oW_

1
Fai comunque quello che faresti: usa la validazione incrociata per ottimizzare la regolarizzazione. Suggerisco rete elastica (L1 + L2).
Emre,

Risposte:


6

Al fine di ridurre il modello a 7 variabili, è possibile adottare alcuni approcci:

  1. PCA (senza supervisione): crea "nuove" combinazioni lineari di dati in cui ogni componente procedurale spiega quanta più varianza possibile nei dati. Quindi i primi 7 componenti (su 27) dovrebbero essere in grado di spiegare una buona percentuale della variazione nei dati. È quindi possibile collegare questi sette componenti all'equazione della regressione logistica. Lo svantaggio qui è che, poiché i componenti sono combinazioni delle variabili originali, perdi un po 'di interpretabilità con il tuo modello di regressione. Dovrebbe tuttavia produrre una precisione molto buona. Questa stessa tecnica si applicava ad altri metodi di riduzione delle dimensioni come
  2. Un altro metodo comune nella regressione è il passo successivo in cui si inizia con una variabile e si aggiunge un'altra per ogni passaggio, che viene mantenuto o eliminato in base ad alcuni criteri (di solito un punteggio BIC o AIC). La regressione graduale all'indietro è la stessa cosa, ma si inizia con tutte le variabili e la si rimuove di nuovo ogni volta in base ad alcuni criteri. Sulla base di una breve ricerca non sembra che Python abbia una regressione graduale, ma ha un algoritmo di eliminazione delle caratteristiche simile descritto in questo post di Data Science .
  3. L1L1

Come ha commentato @ E_net4, la tua domanda continua viene affrontata in un altro post.


5

Stai prendendo troppo sul serio la "Regola del 10". È una regola empirica molto approssimativa. Non è pensato per essere usato come lo stai usando.

Sembra che tu stia pensando: "Ho solo 70 istanze positive, quindi in base alla Regola del 10, mi è permesso usare solo 7 funzionalità; come posso scegliere quali 7 funzioni usare?"

Questo non è ciò che significa la Regola del 10. Non è una regola che specifica quante funzioni è consentito utilizzare. La Regola del 10 è descrittiva, non prescrittiva ed è una linea guida approssimativa: se il numero di istanze è molto inferiore a 10 volte il numero di funzioni, si corre un rischio particolarmente elevato di overfitting e si potrebbero ottenere scarsi risultati.

Quindi cosa dovresti fare? Dovresti fare comunque quello che faresti: usa la regolarizzazione e usa la validazione incrociata per selezionare gli iperparametri di regolarizzazione. Inoltre, è importante disporre di un set di test di tenuta che non si tocchi fino a quando non si è finalizzato tutto sul classificatore, per evitare un eccesso di adattamento e stime di precisione distorte.

E se riesci a ottenere più dati, sarebbe di grande aiuto.

Infine, poiché hai classi squilibrate, potresti prendere in considerazione la lettura dello squilibrio di classe e dei metodi per affrontarla.

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.