Regressione graduale sana?


14

Supponiamo che io voglia costruire un classificatore binario. Ho diverse migliaia di funzionalità e solo pochi decimi di campioni. Dalla conoscenza del dominio, ho una buona ragione per credere che l'etichetta di classe possa essere prevista con precisione usando solo alcune funzionalità, ma non ho idea di quali . Voglio anche che la regola della decisione finale sia facile da interpretare / spiegare, richiedendo ulteriormente un numero limitato di funzionalità. Alcuni sottoinsiemi delle mie funzionalità sono altamente correlati, quindi la selezione dei pochi più predittivi in ​​modo indipendente non funzionerebbe. Voglio anche essere in grado di fare in modo significativo test di ipotesi sulle mie caratteristiche.

La seguente procedura di regressione graduale è ragionevole in queste condizioni:

  1. Date le funzionalità già presenti nel modello (o solo l'intercettazione sulla prima iterazione), selezionare la funzione che produce il rapporto di verosimiglianza maggiore quando viene aggiunta al modello. Utilizzare il test chi-quadro del rapporto di verosimiglianza per calcolare un valore P nominale per ciascun test di ipotesi eseguito in questa selezione. Il punto qui è che l'aggiunta della variabile extra al modello non fornisce alcuna capacità predittiva aggiuntiva. L'alternativa è che aumenta l'abilità predittiva

  2. Tratta le ipotesi testate nel passaggio 1 di ciascuna iterazione come una famiglia e calcola il tasso di falsa scoperta per il valore P più piccolo (per la funzione selezionata) usando qualcosa come Benjamini-Hochberg.

  3. Vai a 1 a meno che non siano soddisfatti alcuni criteri di arresto.

  4. Riporta i tassi di rilevamento falsi per le singole funzionalità, ma non il valore P per il modello nel suo insieme (poiché questo verrà gonfiato in modo massiccio). Ognuno di questi valori P corretti per il test multiplo rappresenta il significato statistico di quella funzione date tutte le funzionalità precedentemente aggiunte al modello.

Fare qualcosa del genere in queste circostanze evita con successo tutte le critiche tipiche della regressione graduale? I tassi di scoperta falsi calcolati in questo modo sono ragionevoli?


3
C'è un motivo per non seguire un approccio di regressione penalizzata (lazo, elasticnet, ecc.)?
Ben Bolker,

Risposte:


11

Non consiglierei di usare questa procedura. La mia raccomandazione è: abbandonare questo progetto. Basta arrendersi e andarsene. Non hai speranze che questo funzioni.

Dore illustrazione dell'Inferno di Dante "Abbandona speranza" fonte per l'immagine

Mettere da parte i problemi standard con la selezione graduale (cfr. Qui ), nel tuo caso è molto probabile che tu abbia previsioni perfette a causa della separazione in uno spazio così elevato.

Non ho dettagli sulla tua situazione, ma dichiari di avere "solo qualche decina di campioni". Siamo caritatevoli e diciamo che ne hai 90. Inoltre dici di avere "diverse migliaia di funzionalità". Immaginiamo che tu abbia "solo" 2000. Per semplicità, supponiamo che tutte le tue funzionalità siano binarie. "Ritieni che l'etichetta di classe possa essere prevista con precisione utilizzando solo alcune funzionalità", supponiamo che cercherai set di massimo 9 funzionalità al massimo. Infine, immaginiamo che la relazione sia deterministica, in modo che la relazione vera sia sempre perfettamente presente nei tuoi dati. (Possiamo modificare questi numeri e ipotesi, ma ciò dovrebbe solo peggiorare il problema.) Ora, quanto saresti in grado di recuperare quella relazione in queste (generose) condizioni? Cioè, con quale frequenza il set corretto sarebbe l'unico set che produce una precisione perfetta? Oppure, in altre parole, quanti set di nove funzionalità si adatteranno anche solo per caso?

Alcune simulazioni matematiche (eccessivamente) semplici dovrebbero fornire alcuni indizi a questa domanda. Innanzitutto, con 9 variabili, ognuna delle quali potrebbe essere 0 o 1, il numero di schemi che un'osservazione potrebbe mostrare sono 29=512 , ma avrai solo 90 osservazioni. Quindi è del tutto possibile che, per un dato set di 9 variabili binarie, ogni osservazione abbia un diverso set di valori predittori: non ci sono repliche. Senza replicati con gli stessi valori del predittore in cui alcuni hanno y = 0 e alcuni y = 1, avrai una separazione completa e una previsione perfetta di ogni osservazione sarà possibile.

Di seguito, ho una simulazione (codificata in R) per vedere con quale frequenza potresti non avere modelli di valori x con 0 e 1 secondi. Il modo in cui funziona è che ottengo un set di numeri da 1 a 512, che rappresentano i possibili pattern, e vedo se uno dei pattern nei primi 45 (che potrebbero essere gli 0) corrisponde a uno dei pattern nei secondi 45 (che potrebbero essere gli 1). Ciò presuppone che si disponga di dati di risposta perfettamente bilanciati, che offrono la migliore protezione possibile da questo problema. Nota che avere alcuni x-replicati con diversi valori-y non ti fa davvero uscire dal bosco, significa solo che non sarai in grado di prevedere perfettamente ogni singola osservazione nel tuo set di dati, che è lo standard I molto rigoroso sto usando qui.

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

La simulazione suggerisce che si avrebbe questo problema con circa l'1,8% degli insiemi di 9 variabili x. Ora, quanti set di 9 ci sono? In senso stretto, quello sarebbe il (poiché abbiamo stabilito che le vere 9 variabili causali deterministiche sono nel tuo insieme). Tuttavia, molti di questi set si sovrapporranno; ci saranno 1991 / 9 221 gruppi non sovrapposti di 9 all'interno di una partizione specificata delle variabili (con molti di questi possibili partizioni). Pertanto, all'interno di una determinata partizione, potremmo aspettarci che ci siano 221 × 0,018 1991 choose 9=1.3×10241991/9221221×0.0184 set di 9 variabili x che predicono perfettamente ogni osservazione nel tuo set di dati.

Tieni presente che questi risultati sono solo per i casi in cui hai un set di dati relativamente più grande (all'interno delle "decine"), un numero relativamente più piccolo di variabili (all'interno delle "migliaia"), cerca solo i casi in cui ogni singola osservazione può essere prevista perfettamente ( ci saranno molti altri set che sono quasi perfetti), ecc. È improbabile che il tuo caso reale risolva "così bene". Inoltre, abbiamo stabilito che la relazione è perfettamente deterministica. Cosa accadrebbe se ci fosse del rumore casuale nella relazione? In tal caso, avrai comunque ~ 4 (null) set che prevedono perfettamente i tuoi dati, ma il set giusto potrebbe non essere tra questi .

Tl; dr , il punto di base qui è che l'insieme di variabili è troppo grande / dimensionale alto, e la tua quantità di dati è troppo piccola, perché tutto sia possibile. Se è davvero vero che hai "decine" di campioni, "migliaia" di variabili e assolutamente nessuna idea terrena quali variabili potrebbero essere giuste, non hai alcuna speranza di arrivare ovunque con qualsiasi procedura. Vai a fare qualcos'altro con il tuo tempo.


1
Ora che è un'introduzione originale a una risposta, la adoro.
Łukasz Grad

1
L'abbandono di un progetto è spesso un'opzione ragionevole. Sebbene certamente una piccola parte dei casi, ho più volte consigliato ai clienti che i progetti che hanno in mente non saranno realizzabili.
gung - Ripristina Monica

1

Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γmm ;(m=1,..,M)γmTXijXij0

XjY=1Y=0

Quindi suggerirei di valutare direttamente la previsione, piuttosto che il rapporto di verosimiglianza. Tuttavia, l'osservazione prevista non dovrebbe essere inclusa nella stima del modello (poiché questa è esattamente la situazione che dovrà affrontare quando si utilizza effettivamente il modello). Quindi fai un nuovo passaggio 1) (il mio suggerimento è il grassetto). 1) Dati gli elementi già presenti nel modello (o solo l'intercettazione sulla prima iterazione), seleziona l'elemento che produce le migliori previsioni volta aggiunta al modello.

Ora devi decidere

  1. ciò che vuoi "meglio" significhi matematicamente
  2. come dividere i dati in parti "adattamento" e "previsione"

Farò un suggerimento per ciascuno:

  1. Y=1Y=0F=CC+IFCI = "errato")
  2. 12,,n121,3,,n2nF=CnFm

Fm(m=1,,M)m=argmaxmMFm . Si noti che la cosa positiva del metodo sopra è che non è necessario preoccuparsi di quante variabili sono nel proprio modello o di quanto siano correlate (a meno che non sia impossibile adattarsi effettivamente al modello). Ciò è dovuto al fatto che il modello è adattato separatamente alla previsione, pertanto nelle predizioni più scarse compariranno distorsioni dovute a eccesso di adattamento o degradazione dovuta a instabilità numerica.

sthMs=p+1XjXj

Dal punto di vista dei passi può essere rischioso perché potresti trovare "massimi locali" anziché "massimi globali", soprattutto perché hai un numero così elevato di predittori (questo è un grande "spazio" su cui ottimizzare, ed è probabilmente multimodale - significa che ci sono molti "migliori" modelli)

100F

Penso che lo troverai molto più semplice per giustificare la tua scelta del modello finale a un non statistico, piuttosto che cercare di spiegare perché il valore p indica che il modello è buono.

Y

Due osservazioni finali:

  1. È inoltre possibile utilizzare questo macchinario per decidere se la scelta graduale è migliore della selezione diretta (aggiungi solo variabili) o della selezione indietro (inizia dal modello completo e rimuovi solo le variabili).
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλλ

Grazie per il consiglio. Tuttavia, ci sono tre problemi: 1. Mi preoccupo di quantificare l'incertezza nelle mie previsioni e il contributo di ciascuna variabile, non solo l'accuratezza della previsione binaria. 2. Data la natura del mio set di dati, è troppo intensivo dal punto di vista computazionale. 3. Per quanto riguarda la conoscenza del dominio, ritengo che il problema dell'optima locale non sia importante.
dsimcha,

100nF

In realtà hai ragione. Questa procedura sarebbe parte di una base di codice più ampia e ho dimenticato che parte del resto del codice non avrebbe dovuto essere rieseguita per ogni iterazione di coltello a serramanico. Gli altri due punti valgono comunque, comunque.
dsimcha,

FFFchosenF(j) jthvariabile sull'accuratezza predittiva dovuta a ciascuna variabile)
Probislogic

F
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.