Domanda:
Domande sulla selezione delle variabili per la classificazione e diverse tecniche di classificazione
ialm
2011-05-10 22:29:15 UTC
view on stackexchange narkive permalink

Ho una domanda sulla selezione e la classificazione delle caratteristiche. Lavorerò con R. Dovrei iniziare dicendo che non ho molta familiarità con le tecniche di data mining, a parte un breve assaggio fornito da un corso universitario sull'analisi multivariata, quindi perdonami se mi mancano i dettagli sulla mia domanda. Farò del mio meglio per descrivere il mio problema.

Innanzitutto, un po 'del mio progetto: sto lavorando a un progetto di citometria per immagini e il set di dati è composto da oltre 100 caratteristiche quantitative di immagini istologiche di nuclei cellulari . Tutte le variabili sono variabili continue che descrivono le caratteristiche del nucleo, come la dimensione, la quantità di DNA, ecc. Attualmente esiste un processo manuale e un processo automatico per ottenere queste immagini cellulari. Il processo manuale è (molto) lento, ma viene eseguito da un tecnico e produce solo immagini utilizzabili per ulteriori analisi. Il processo automatico è molto veloce, ma introduce troppe immagini inutilizzabili: solo il 5% circa delle immagini è adatto per ulteriori analisi e ci sono migliaia di immagini nucleari per campione. A quanto pare, pulire i dati ottenuti dal processo automatico richiede in realtà più tempo rispetto al processo manuale.

Il mio obiettivo è addestrare un metodo di classificazione, utilizzando R, per discriminare tra oggetti buoni e oggetti cattivi dai dati ottenuti dal processo automatico. Dispongo di un set di allenamento già classificato ottenuto dal processo automatico. Consiste di 150.000 righe, di cui ~ 5% sono buoni oggetti e ~ 95% sono cattivi oggetti.

La mia prima domanda riguarda la selezione delle caratteristiche. Ci sono oltre 100 funzioni esplicative continue e vorrei eventualmente sbarazzarmi delle variabili di rumore per (si spera) aiutare con la classificazione. Quali metodi esistono per la riduzione della dimensionalità con l'obiettivo di migliorare la classificazione? Capisco che la necessità di una riduzione variabile possa variare a seconda della tecnica di classificazione utilizzata.

Il che porta alla mia seconda domanda. Ho letto di diverse tecniche di classificazione, ma sento di non poter determinare adeguatamente il metodo più adatto al mio problema. Le mie preoccupazioni principali sono avere un basso tasso di errata classificazione di oggetti buoni rispetto a oggetti cattivi e il fatto che la probabilità a priori degli oggetti buoni sia molto inferiore alla probabilità a priori degli oggetti cattivi. Avere un oggetto cattivo classificato come buono è meno problematico che recuperare un oggetto buono dal pool di oggetti cattivi, ma sarebbe bello se non troppi oggetti cattivi fossero classificati come buoni.

leggi questo post e attualmente sto considerando le foreste casuali come da risposta di chl. Vorrei esplorare anche altri metodi, e vorrei raccogliere i suggerimenti delle brave persone qui a CV. Accolgo con favore anche qualsiasi lettura sull'argomento della classificazione che possa essere utile e suggerimenti per l'uso dei pacchetti R.

Per favore chiedi maggiori dettagli se il mio post è privo di dettagli.

Ho dimenticato di menzionare, attualmente sto esplorando il pacchetto di caret in R.
@veol caret ha una routine di selezione delle funzionalità chiamata rfe che potresti trovare utile. Puoi leggere di più qui, ma fai attenzione a non usarlo su algoritmi (come glmnet) che hanno la selezione di funzionalità incorporata. http://cran.r-project.org/web/packages/caret/vignettes/caretSelection.pdf
Hai molto budget per esplorare questo problema? Il tuo set di dati è uno che puoi condividere pubblicamente?
@Zach Grazie per il collegamento. Per quanto riguarda il secondo commento, sono stato effettivamente assunto per lavorare a questo progetto (sono uno studente universitario cooperativo), quindi ho tutto il tempo per lavorare su questo problema. Per quanto riguarda il set di dati, non sono autorizzato a condividerlo, ma potrei essere in grado di collegarmi ad alcuni articoli che sono disponibili pubblicamente riguardanti il ​​tipo di analisi che facciamo sui dati se vuoi leggere a riguardo.
@veol Oh, capisco. Allora dovrebbe essere una buona esperienza di apprendimento per te. Sembrava un'analisi interessante, mi piacerebbe vedere uno degli articoli.
@Zach Sfortunatamente, non sono riuscito a trovare versioni gratuite dei documenti che mi era stato dato di leggere. Ecco un documento riguardante l'imaging delle cellule e il calcolo delle caratteristiche numeriche, è vicino al tipo di dati di cui ho a che fare: [Link] (http://www.ncbi.nlm.nih.gov/pubmed/8570289) .
Due risposte:
#1
+14
Dikran Marsupial
2011-05-10 23:04:25 UTC
view on stackexchange narkive permalink

La selezione delle caratteristiche non migliora necessariamente le prestazioni dei moderni sistemi di classificazione e molto spesso peggiora le prestazioni. A meno che scoprire quali sono le caratteristiche più importanti non sia un obiettivo dell'analisi, spesso è meglio nemmeno provare e utilizzare la regolarizzazione per evitare l'over-fitting (selezionare i parametri di regolarizzazione ad es. Cross-validation).

Il motivo per cui la selezione delle caratteristiche è difficile è che implica un problema di ottimizzazione con molti gradi di libertà (essenzialmente uno per caratteristica) in cui il criterio dipende da un campione finito di dati. Ciò significa che puoi adattare eccessivamente il criterio di selezione delle funzionalità e finire con un set di funzionalità che funziona bene per quel particolare campione di dati, ma non per nessun altro (cioè generalizza male). La regolarizzazione d'altra parte, mentre ottimizza anche un criterio basato su un campione finito di dati, implica meno gradi di libertà (tipicamente uno), il che significa che l'adattamento eccessivo del criterio è più difficile.

Sembra per me che l'idea "la selezione delle caratteristiche dà prestazioni migliori" ha piuttosto superato la data di scadenza. Per classificatori lineari semplici non regolamentati (es. Regressione logistica), la complessità del modello (dimensione VC) cresce con il numero di caratteristiche. Una volta introdotta la regolarizzazione, la complessità del modello dipende dal valore del parametro di regolarizzazione piuttosto che dal numero di parametri. Ciò significa che i classificatori regolarizzati sono resistenti all'over-fitting (a patto di regolare correttamente il parametro di regolarizzazione) anche in spazi dimensionali molto elevati. In effetti questa è la base del motivo per cui funziona la macchina del vettore di supporto, utilizzare un kernel per trasformare i dati in uno spazio dimensionale elevato (possibilmente infinito), quindi utilizzare la regolarizzazione per controllare la complessità del modello e quindi evitare l'over-fitting. / p>

Detto questo, non sono previsti pranzi gratuiti; il tuo problema potrebbe essere quello in cui la selezione delle funzionalità funziona bene e l'unico modo per scoprirlo è provarlo. Tuttavia, qualunque cosa tu faccia, assicurati di utilizzare qualcosa come la convalida incrociata annidata per ottenere una stima imparziale delle prestazioni. La convalida incrociata esterna viene utilizzata per la valutazione delle prestazioni, ma in ogni piega ripetere ogni passaggio dell'adattamento del modello (inclusa la selezione delle caratteristiche) di nuovo in modo indipendente. Un errore comune consiste nell'eseguire la selezione delle funzionalità utilizzando tutti i dati e quindi eseguire la convalida incrociata per stimare le prestazioni utilizzando le funzionalità identificate. Dovrebbe essere ovvio il motivo per cui non è la cosa giusta da fare, ma molti l'hanno fatto poiché l'approccio corretto è computazionalmente costoso.

Il mio suggerimento è di provare SVM o regressione logistica del kernel o LS-SVM ecc. con vari kernel, ma nessuna selezione di funzionalità. Se non altro ti darà una linea di base significativa.

Grazie per la tua risposta dettagliata. Non ho familiarità con le macchine vettoriali di supporto, ma sono ansioso di provarlo. Dopo una rapida lettura su wikipedia, sto provando SVM lineare con le impostazioni predefinite in R su un sottoinsieme casuale dei miei dati (ci è voluto un po 'con l'intero set di dati). Mi consigliate qualche buon articolo o lettura per familiarizzare con gli SVM?
@veol Un SVM lineare è un buon punto di partenza, ma non utilizzare solo le impostazioni predefinite, la chiave per ottenere buone prestazioni da un SVM sta nella scelta di un buon kernel e nell'ottimizzazione attenta degli iperparametri (il parametro di regolarizzazione e qualsiasi parametri del kernel). Questo può essere fatto minimizzando l'errore di convalida incrociata o un limite alle prestazioni di generalizzazione (ad esempio i limiti "raggio-margine" o "intervallo". Non uso R, ma qualsiasi pacchetto SVM decente dovrebbe automatizzare questa procedura tramite la discesa del gradiente o ricerca sulla griglia.
@veol Per quanto riguarda le fonti di informazione, così come i due documenti chiave sugli SVM (Boser Guyon e Vapnik e Cortes e Vapnik), ci sono molti buoni libri di testo che trattano questo genere di cose, come "learning with kernels" di Scholkopf e Smola , "metodi del kernel per il riconoscimento dei modelli" di Shawe-Taylor e Christianini o "riconoscimento dei modelli e apprendimento automatico" di Bishop. Buona fortuna con il tuo progetto!
(+1) bella spiegazione delle basi. Anche in questo caso è un momento in cui vorrei aggiungere una risposta ai miei preferiti (invece dell'intera domanda).
Grazie per l'ottima risposta, ho imparato molto. Come si esegue la regressione logistica del kernel in R?
#2
+6
richiemorrisroe
2011-05-10 23:04:58 UTC
view on stackexchange narkive permalink

Sulla riduzione della dimensionalità, una buona prima scelta potrebbe essere l ' analisi delle componenti principali.

A parte questo, non ho molto da aggiungere, tranne che se hai qualsiasi interesse per il data mining, ti consiglio vivamente di leggere gli elementi dell'apprendimento statistico. È sia rigoroso che chiaro, e anche se non l'ho finito, probabilmente ti darebbe molte informazioni sul modo giusto per affrontare il tuo problema. Capitolo 4, classificatori lineari sarebbero quasi certamente sufficienti per iniziare.

Purtroppo, la PCA è stata la prima cosa che ho tentato di ridurre la dimensionalità dei dati. Non ha fornito risultati significativi e mi è stato detto di diffidare di creare trasformazioni che potrebbero essere applicabili solo al set di addestramento e non ai dati futuri. Grazie per la raccomandazione del libro - anche se ho familiarità con LDA, ci sono altri metodi che potrebbero rivelarsi utili. Vedrò se ce n'è una copia nel mio palazzo o nella biblioteca dell'università.
C'è una copia PDF disponibile per il download al link sopra se questo aiuta.
Ah, non l'avevo notato. Sono andato direttamente al sommario. Leggere questo sembra un buon punto di partenza.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...