Non consiglierei di usare questa procedura. La mia raccomandazione è: abbandonare questo progetto. Basta arrendersi e andarsene. Non hai speranze che questo funzioni.
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/9≈221221×0.018≈4 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.