Alternative agli alberi di classificazione, con migliori prestazioni predittive (ad es. CV)?


23

Sto cercando un'alternativa agli alberi di classificazione che potrebbe produrre un migliore potere predittivo.

I dati con cui ho a che fare hanno fattori sia per le variabili esplicative che per quelle spiegate.

Ricordo di essermi imbattuto in foreste casuali e reti neurali in questo contesto, sebbene non le avessi mai provate prima, ci sono altri buoni candidati per un tale compito di modellizzazione (in R, ovviamente)?


5
Non preoccuparti delle reti neurali, questa è una tecnologia obsoleta.

1
@mbq continui a sostenere questa affermazione?
rhombidodecahedron

@rhombidodecahedron Certo, gioca con le NN dal 2010 e sarai d'accordo. Inoltre, dubito che qualsiasi modello DL porterebbe qualsiasi cosa in una tabella con dati (presumibilmente) di dimensioni così ridotte.

Risposte:


25

Penso che varrebbe la pena provare a Random Forests ( randomForest ); sono stati forniti alcuni riferimenti in risposta a domande correlate: selezione delle funzioni per il modello "finale" quando si esegue la validazione incrociata nell'apprendimento automatico ; I modelli CART possono essere resi robusti? . Il potenziamento / l'inserimento in blocco li rende più stabili di un singolo CART che è noto per essere molto sensibile alle piccole perturbazioni. Alcuni autori hanno sostenuto che ha funzionato così come SVM penalizzato o Gradient Boosting Machines (vedi, ad esempio Cutler et al., 2009). Penso che sicuramente superino le NN.

Boulesteix e Strobl offrono una bella panoramica di numerosi classificatori nella selezione ottimale dei classificatori e bias negativi nella stima del tasso di errore: uno studio empirico sulla previsione ad alta dimensione (BMC MRM 2009 9: 85). Ho sentito parlare di un altro buon studio alla IV riunione EAM , che dovrebbe essere sottoposta a revisione in Statistica in medicina ,

João Maroco , Dina Silva, Manuela Guerreiro, Alexandre de Mendonça. Le foreste casuali superano le reti neurali, supportano macchine vettoriali e classificatori di analisi discriminanti? Un caso di studio sull'evoluzione della demenza nei pazienti anziani con disturbi cognitivi

Mi piace anche il pacchetto caret : è ben documentato e consente di confrontare la precisione predittiva di diversi classificatori sullo stesso set di dati. Si occupa della gestione di campioni di addestramento / test, precisione di calcolo, ecc. In poche funzioni intuitive.

Il pacchetto glmnet , di Friedman e coll., Implementa GLM penalizzato (vedere la recensione nel Journal of Statistical Software ), in modo da rimanere in un noto framework di modellazione.

Altrimenti, puoi anche cercare classificatori basati su regole di associazione (vedi la Task View CRAN su Machine Learning o gli algoritmi Top 10 nel data mining per una breve introduzione ad alcuni di essi).

Vorrei menzionare un altro approccio interessante che ho intenzione di implementare nuovamente in R (in realtà, è il codice Matlab) che è l' analisi della corrispondenza discriminante di Hervé Abdi. Sebbene inizialmente sviluppato per far fronte a studi su piccoli campioni con molte variabili esplicative (alla fine raggruppati in blocchi coerenti), sembra combinare in modo efficiente la DA classica con le tecniche di riduzione dei dati.

Riferimenti

  1. Cutler, A., Cutler, DR e Stevens, JR (2009). Metodi basati sugli alberi , nell'analisi dei dati ad alta dimensione nella ricerca sul cancro , Li, X. e Xu, R. (a cura di), pagg. 83-101, Springer.
  2. Saeys, Y., Inza, I. e Larrañaga, P. (2007). Una revisione delle tecniche di selezione delle caratteristiche in bioinformatica . Bioinformatica, 23 (19): 2507-2517.

2
+1 Ottima risposta. Concordo anche con la raccomandazione di cura.
Shane,

12

È importante tenere presente che non esiste un algoritmo che sia sempre migliore di altri. Come affermato da Wolpert e Macready, "ogni due algoritmi sono equivalenti quando la loro performance è mediata su tutti i possibili problemi". (Vedi Wikipedia per i dettagli.)

Per una data applicazione, quella "migliore" è generalmente quella che è più strettamente allineata alla tua applicazione in termini di ipotesi che fa, i tipi di dati che può gestire, le ipotesi che può rappresentare e così via.

Quindi è una buona idea caratterizzare i tuoi dati in base a criteri come:

  • Ho un set di dati molto grande o modesto?
  • La dimensionalità è alta?
  • Le variabili sono numeriche (continue / discrete) o simboliche o un mix e / o possono essere trasformate se necessario?
  • È probabile che le variabili siano ampiamente indipendenti o abbastanza dipendenti?
  • È probabile che vi siano variabili ridondanti, rumorose o irrilevanti?
  • Voglio essere in grado di ispezionare il modello generato e provare a dargli un senso?

Rispondendo a questi, è possibile eliminare alcuni algoritmi e identificarne altri potenzialmente rilevanti, per poi finire con un piccolo set di metodi candidati che hai scelto in modo intelligente come probabilmente utili.

Mi dispiace non darti una risposta semplice, ma spero che ciò aiuti comunque!


2
+1 Adoro la citazione. ("due algoritmi equivalenti quando la loro performance è mediata su tutti i possibili problemi.")
Assad Ebrahim,

8

Per la classificazione multi-classe, anche le macchine di supporto vettoriale sono una buona scelta. In genere uso il pacchetto R kernlab per questo.

Vedere il seguente documento JSS per una buona discussione: http://www.jstatsoft.org/v15/i09/


@Tal Ecco una buona recensione (o penso di sì) di SVM vs RF: un confronto completo di foreste casuali e macchine vettoriali di supporto per la classificazione dei tumori basata su microarray, j.mp/ab7U8V . Anch'io preferisco kernlaba e1071.
chl

2
@chl Non mi piace questo documento mentre è tratto dalla prospettiva dell'apprendimento SVM - fare una ripetizione di un algoritmo stocastico (RF) è solo una spazzatura; anche l'appendice 2 mostra quanto possa essere negativo applicare il flusso di lavoro SVM a RF. Eppure concordo sul fatto che quasi sempre SVM può essere ottimizzato per sovraperformare la RF a causa del trucco del kernel (che la RF semplice non ha, mentre ciò non significa che non può averla in generale), ma con uno sforzo di ottimizzazione esponenzialmente crescente.

@mbq In effetti, questo è un buon punto.
chl

3

Come già accennato, le foreste casuali sono un "upgrade" naturale e, oggigiorno, le SVM sono generalmente la tecnica consigliata da usare.

Voglio aggiungere che il più delle volte il passaggio a SVM produce risultati molto deludenti. Il fatto è che, mentre tecniche come gli alberi casuali sono quasi banali da usare, le SVM sono un po 'più complicate.

Ho trovato questo documento inestimabile quando ho usato SVM per la prima volta (A Practical Guide to Support Vector Classication) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

In R puoi usare il pacchetto e1071 per SVM, si collega alla libreria libSVM standard de facto (almeno nel software libero!).


2
kernlab usa anche libsvm per l'ottimizzazione, quindi non c'è una grande differenza in questo senso (anche se è molto più flessibile).
Shane,

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.