Dobbiamo ancora fare la selezione delle funzionalità durante l'utilizzo degli algoritmi di regolarizzazione?


20

Ho una domanda per quanto riguarda la necessità di utilizzare i metodi di selezione delle caratteristiche (le foreste casuali presentano un valore di importanza o i metodi di selezione delle caratteristiche univariati, ecc.) Prima di eseguire un algoritmo di apprendimento statistico.

Sappiamo che per evitare un eccesso di adattamento possiamo introdurre una penalità di regolarizzazione sui vettori di peso.

Quindi, se voglio fare una regressione lineare, allora potrei introdurre i parametri di regolarizzazione della rete L2 o L1 o persino Elastici. Per ottenere soluzioni sparse, la penalità L1 aiuta nella selezione delle funzionalità.

Quindi è ancora necessario fare la selezione delle funzionalità prima di eseguire la regolarizzazione L1 nella regressione come Lasso ?. Tecnicamente Lasso mi sta aiutando a ridurre le funzionalità di penalità L1, quindi perché la selezione delle funzionalità è necessaria prima di eseguire l'algo?

Ho letto un articolo di ricerca che afferma che fare Anova quindi SVM offre prestazioni migliori rispetto all'uso di SVM da solo. Ora la domanda è: SVM inerentemente fa la regolarizzazione usando la norma L2. Al fine di massimizzare il margine, sta riducendo al minimo la norma del vettore di peso. Quindi sta facendo regolarizzazione nella sua funzione oggettiva. Quindi tecnicamente algoritmi come SVM non dovrebbero preoccuparsi dei metodi di selezione delle funzionalità. Ma il rapporto dice ancora che fare la selezione delle caratteristiche univariate prima che il normale SVM sia più potente.

Qualcuno con pensieri?


Una domanda che vorrei sollevare è come funziona la regolarizzazione SVM con i metodi del kernel? La norma L2 si basa sulla normalizzazione degli ingressi. Tuttavia, se usi un kernel (ad es. Polinomiale), i tuoi input effettivi (ad es. I poteri polinomiali) non sono più normalizzati.
seanv507,

Risposte:


17

La selezione delle funzionalità a volte migliora le prestazioni dei modelli regolarizzati, ma nella mia esperienza generalmente peggiora le prestazioni di generalizzazione. La ragione di ciò è che più scelte facciamo sul nostro modello (compresi i valori dei parametri, la scelta delle caratteristiche, l'impostazione degli iperparametri, la scelta del kernel ...), più dati dobbiamo fare queste scelte in modo affidabile. Generalmente facciamo queste scelte minimizzando alcuni criteri valutati su un insieme finito di dati, il che significa che il criterio ha inevitabilmente una varianza diversa da zero. Di conseguenza, se minimizziamo il criterio in modo troppo aggressivo, possiamo adattarlo eccessivamente, ovvero possiamo fare delle scelte che riducono al minimo il criterio a causa di caratteristiche che dipendono dal particolare campione su cui viene valutato, piuttosto che perché produrrà un autentico miglioramento delle prestazioni.

Ora SVM è un'implementazione approssimativa di una prestazione legata alla generalizzazione che non dipende dalla dimensionalità, quindi in linea di principio possiamo aspettarci buone prestazioni senza la selezione delle caratteristiche, a condizione che i parametri di regolarizzazione siano scelti correttamente. La maggior parte dei metodi di selezione delle funzionalità non ha tali "garanzie" sulle prestazioni.

Per i metodi L1, certamente non mi preoccuperei della selezione delle funzionalità, poiché il criterio L1 è generalmente efficace nel tagliare le funzionalità. Il motivo per cui è efficace è che induce un ordinamento in cui le funzioni entrano ed escono dal modello, il che riduce il numero di scelte disponibili nella selezione delle caratteristiche, e quindi è meno soggetto a sovra-adattamento.

Il miglior motivo per la selezione delle funzionalità è scoprire quali funzionalità sono rilevanti / importanti. Il motivo peggiore per la selezione delle funzionalità è migliorare le prestazioni, per i modelli regolarizzati, generalmente peggiora le cose. Tuttavia, per alcuni set di dati, può fare una grande differenza, quindi la cosa migliore da fare è provarlo e utilizzare uno schema di valutazione delle prestazioni solido e imparziale (ad esempio convalida incrociata nidificata) per scoprire se il tuo è uno di quei set di dati.


Cosa intendi per valdiazione incrociata nidificata? Applicando la validazione incrociata di k volte N?
yasin.yazici,

5

jβ^j=.0001β^j=0

Tuttavia, ci sono ancora motivi per rimuovere completamente una variabile.

  1. A volte l'obiettivo non è la precisione predittiva ma la spiegazione di un fenomeno mondiale. A volte vuoi sapere quali variabili fanno e non influiscono su una determinata variabile dipendente. In questi tipi di situazioni, un modello parsimonioso è un modo preferito di comprendere e interpretare
  2. β^j
  3. Ragioni computazionali: un modello con meno variabili funziona generalmente più velocemente e non è necessario archiviare i dati per quelle variabili estranee.

2
Ciao TrynnaDoStat, sono totalmente d'accordo con i tuoi punti 1 e 3. Ma l'argomento 2 non ha davvero raggiunto il punto. Se si seleziona la funzionalità con lo stesso set di dati, si rischia anche di aver scelto il set di funzionalità errato. Perché una variabile casuale potrebbe sembrare ben correlata con la variabile obiettivo nei dati.
gstar2002,

β^j

0

Non credo che il sovradimensionamento sia il motivo per cui abbiamo bisogno della selezione delle caratteristiche in primo luogo. In effetti, il sovradimensionamento è qualcosa che accade se non forniamo al nostro modello dati sufficienti e la selezione delle funzionalità riduce ulteriormente la quantità di dati che passiamo al nostro algoritmo.

Direi invece che la selezione delle funzionalità è necessaria come fase di preelaborazione per i modelli che non hanno il potere di determinare da soli l'importanza delle funzionalità o per gli algoritmi che diventano molto meno efficienti se devono fare da soli questa ponderazione dell'importanza .

Prendiamo ad esempio un semplice algoritmo k vicino più vicino basato sulla distanza euclidea. Guarderà sempre tutte le caratteristiche come aventi lo stesso peso o importanza per la classifica finale. Quindi, se gli dai 100 funzionalità ma solo tre di queste sono rilevanti per il tuo problema di classificazione, tutto il rumore proveniente da queste funzionalità extra annulla completamente le informazioni delle tre funzionalità importanti e non otterrai previsioni utili. Se invece si determinano in anticipo le caratteristiche critiche e si passano solo quelle al classificatore, funzionerà molto meglio (per non parlare di essere molto più veloce).

D'altra parte, guarda un classificatore di foresta casuale. Durante l'allenamento, determinerà automaticamente quali funzionalità sono le più utili trovando una divisione ottimale scegliendo da un sottoinsieme di tutte le funzionalità. Pertanto, farà molto meglio a setacciare le 97 funzioni inutili per trovare le tre buone. Certo, funzionerà ancora più velocemente se fai la selezione in anticipo, ma il suo potere di classificazione di solito non ne risentirà molto dandogli molte funzionalità extra, anche se non sono rilevanti.

Infine, guarda le reti neurali. Ancora una volta, questo è un modello che ha il potere di ignorare le funzionalità irrilevanti e l'allenamento mediante backpropagation di solito converge all'utilizzo delle funzionalità interessanti. Tuttavia, è noto che l'algoritmo di addestramento standard converge molto più rapidamente se gli input vengono "sbiancati", ovvero ridimensionati in base alla varianza dell'unità e con una correlazione incrociata rimossa (LeCun et al, 1998) . Pertanto, sebbene non sia strettamente necessario selezionare le funzionalità, è possibile pagare in termini puramente prestazionali per eseguire la preelaborazione dei dati di input.

Quindi, in sintesi, direi che la selezione delle caratteristiche ha meno a che fare con il sovradimensionamento e più con il potenziamento del potere di classificazione e dell'efficienza computazionale di un metodo di apprendimento. Quanto è necessario dipende molto dal metodo in questione.


3
(1) Non sono d'accordo con la tua prima proposta. La selezione delle funzionalità non riduce la quantità di dati ma riduce il numero di funzionalità. Il numero di istanze (campioni) rimane lo stesso e può essere d'aiuto per un overfitting perché il classificatore necessita di un minor numero di parametri (se si tratta di un modello parametrico) per adattarsi ai dati. Meno parametri significano meno potenza di rappresentazione, quindi meno probabilità di sovralimentarsi. (2) Qual è il tipo di algoritmo di selezione delle funzionalità che hai menzionato da usare prima di KNN? Come sa quali funzionalità saranno più efficaci?
yasin.yazici,

@ yasin.yazici: supponi di fare una classificazione delle cifre scritta a mano e di eliminare tutto tranne il pixel più in alto a sinistra. Non hai semplicemente ridotto la quantità di dati che avevi?
cfr

@chf No, riduce solo il numero di funzioni. Per non dire che il set di dati è MNIST ci sono 784 caratteristiche per ogni campione e 60000 campioni. Se butti via una parte delle tue funzionalità, hai ancora 60000 campioni.
yasin.yazici,

@ yasin.yazici: il mio punto è che il numero di campioni non è uguale alla quantità di dati. I dati sono l'intera matrice di "campioni x caratteristiche".
cfr

La selezione delle funzionalità può (e spesso lo farà) sovrautilizzare. Se stai usando studenti regolarizzati e non ti interessa l'importanza delle funzionalità, quindi, a meno che tu non abbia molti dati e un solido schema di convalida, non vedo molto uso per la selezione delle funzionalità.
Firebug,

0

Penso che se non si dispone di un numero sufficiente di punti dati per ottimizzare in modo efficace i parametri, è possibile eseguire la selezione delle funzionalità per rimuovere alcune variabili. Ma non suggerirei di farne troppo perché puoi perdere il segnale che vuoi modellare.

Inoltre, potrebbero esserci alcune funzionalità che non desideri nei tuoi modelli in base alla comprensione del business che potresti voler rimuovere.


0

Nel caso del lazo, la preelaborazione dei dati per rimuovere le funzioni di disturbo è in realtà piuttosto comune. Per un recente articolo che discute i modi per farlo, consultare i test di screening di Xiang et al per problemi di lazo . La motivazione comune menzionata negli articoli che ho visto è quella di ridurre l'onere computazionale del calcolo della soluzione.

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.