Selezione delle funzioni per Support Vector Machines


9

La mia domanda è triplice

Nel contesto di macchine vettoriali di supporto "Kernelized"

  1. È desiderabile la selezione di variabili / funzionalità, soprattutto perché regolarizziamo il parametro C per evitare un eccesso di adattamento e il motivo principale dietro l'introduzione di kernel in un SVM è quello di aumentare la dimensionalità del problema, in tal caso ridurre le dimensioni mediante la riduzione dei parametri sembra controintuitivo
  2. Se la risposta alla prima domanda è "NO", allora, a quali condizioni cambierebbe la risposta che si dovrebbe tenere a mente?
  3. Esistono buoni metodi che sono stati tentati di portare alla riduzione delle funzionalità degli SVM nella libreria di Python di Scikit-Learn? Ho provato il metodo SelectFpr e sto cercando persone con esperienze con metodi diversi.

1
La selezione delle funzioni è sempre utile, a meno che le caratteristiche iniziali non siano di altissima qualità per cominciare. Sklearn offre molte diverse librerie di selezione delle funzioni ( scikit-learn.org/stable/modules/feature_selection.html ) Sono parziale di RFE.
David,

1
Non hai menzionato il tuo contesto - nota che se si trova in un contesto aziendale, ogni funzione che rimane nel modello richiederà manutenzione a un certo livello - c'è un costo in denaro letterale se hai più variabili, nel senso che richiede, ad esempio, maggiori sforzi di raccolta dei dati, tempo DBA e tempo di programmazione. Questa considerazione ovviamente non si applica se si tratta di una comp Kaggle o simile, e se l'utilizzo di un extra di 200 delle funzioni disponibili nel set di dati ti dà un aumento dello 0,01% delle prestazioni, sei in denaro.
Robert de Graaf,

Risposte:


3

Personalmente, mi piace dividere la selezione delle funzioni in due:

  • selezione delle funzioni senza supervisione
  • selezione delle funzioni supervisionate

La selezione delle funzioni senza supervisione è qualcosa come il clustering o la PCA in cui si seleziona la gamma meno ridondante di funzionalità (o si creano funzionalità con ridondanza ridotta). La selezione delle funzioni supervisionate sono cose come Lazo in cui si selezionano le funzionalità con il massimo potere predittivo.

Personalmente di solito preferisco ciò che chiamo selezione delle funzioni supervisionate. Quindi, quando si utilizza una regressione lineare, selezionare le funzioni in base a Lazo. Metodi simili esistono per indurre la scarsità nelle reti neurali.

Ma in effetti, non vedo come farei in un metodo usando i kernel, quindi probabilmente stai meglio usando quella che chiamo selezione delle funzioni senza supervisione.

EDIT: hai anche chiesto della regolarizzazione. Ritengo che la regolarizzazione sia di aiuto soprattutto perché lavoriamo con campioni finiti e quindi la distribuzione di training e testing differirà sempre in qualche modo e si desidera che il modello non si adatti eccessivamente. Non sono sicuro che rimuova la necessità di evitare di selezionare le funzionalità (se ne hai davvero troppe). Penso che la selezione di funzionalità (o la creazione di un sottoinsieme più piccolo di esse) aiuta a rendere le funzionalità che si hanno più robuste ed evitare che il modello apprenda da correlazioni spurie. Quindi, la regolarizzazione aiuta, ma non è sicuro che sia un'alternativa completa. Ma non ci ho pensato abbastanza a fondo.

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.