Passaggi di apprendimento automatico


9

Quale delle seguenti opzioni di passaggi è quella corretta quando si crea un modello predittivo?

Opzione 1:

Prima elimina i predittori più ovviamente cattivi e, se necessario, preelabora i rimanenti, quindi addestra vari modelli con convalida incrociata, scegli i pochi migliori, identifica i predittori migliori che ognuno ha utilizzato, quindi riqualifica quei modelli solo con quei predittori e valuta l'accuratezza di nuovo con convalida incrociata, quindi scegli quello migliore e allenalo sul set di allenamento completo usando i suoi predittori chiave e quindi utilizzalo per prevedere il set di test.

Opzione 2:

Prima elimina i predittori più ovviamente cattivi, quindi preelabora i rimanenti, se necessario, quindi utilizza una tecnica di selezione delle funzionalità come la selezione ricorsiva delle funzionalità (ad es. RFE con rf) con convalida incrociata, ad esempio per identificare il numero ideale di predittori chiave e quali sono questi predittori sono, quindi, formare diversi tipi di modello con convalida incrociata e vedere quale offre la migliore precisione con i principali predittori identificati in precedenza. Quindi allenare di nuovo il migliore di quei modelli con quei predittori sul set di addestramento completo e quindi utilizzarlo per prevedere il set di test.


1
Cosa intendi per preelaborare il rimanente, se necessario ? È la pulizia dei dati?
Dawny33

1
Intendevo preelaborare le restanti funzionalità che ritieni utili. Per preelaborazione intendo, fare ridimensionamento o trasformazioni come log o altri se e quando necessario.
AK,

Ahh, come mi aspettavo :) Comunque, ho scritto la risposta con il flusso di lavoro che io e il mio team generalmente seguiamo!
Dawny33

Risposte:


16

Ho trovato entrambe le opzioni leggermente difettose. Quindi, questo è generalmente (in senso lato) come appare un flusso di lavoro di modellazione predittiva:

  • Pulizia dei dati : richiede più tempo, ma ne vale la pena ogni secondo trascorso qui. Più i tuoi dati sono puliti attraverso questo passaggio, minore sarebbe il tuo tempo totale trascorso.
  • Suddivisione del set di dati : il set di dati verrebbe suddiviso in set di training e test, che verrebbero utilizzati rispettivamente per scopi di modellazione e previsione. Inoltre, sarebbe necessario eseguire una suddivisione aggiuntiva come set di convalida incrociata.
  • Trasformazione e riduzione: coinvolge processi come trasformazioni, ridimensionamento medio e medio, ecc.
  • Selezione funzione: questo può essere fatto in molti modi come la selezione della soglia, la selezione del sottoinsieme, ecc.
  • Progettazione del modello predittivo: progettare il modello predittivo sui dati di allenamento in base alle funzionalità disponibili.
  • Convalida incrociata:
  • Previsione finale, convalida

Penso che i tuoi passaggi corrispondano alla mia opzione 2. La mia comprensione è che come parte del passaggio Selezione funzionalità, possiamo eseguire una funzione di eliminazione delle funzionalità ricorsiva (RFE) utilizzando foreste casuali, ad esempio con convalida incrociata per determinare il numero migliore di predittori e quali sono e quindi usano quei predittori per addestrare diversi algoritmi con validazione incrociata e confrontare l'accuratezza per ottenere il modello migliore che utilizza quei migliori predittori. Cosa ne pensi?
AK,

@AndrewKostandy Sì, l'algoritmo di selezione dei sottoinsiemi per la selezione delle funzionalità funziona quasi allo stesso modo :)
Dawny33

Prego. Attualmente sto imparando un esame in cui una delle domande standard del professore è "qual è la prima cosa che pensi di fare dopo aver ottenuto e pulito i dati?" :-)
Martin Thoma,

@ Dawny33 Non vorresti eseguire trasformazioni, ridimensionamento ecc. Prima di suddividere il tuo set di dati in formazione e test?
Minu,

1
Qual è il motivo per cui dovresti eseguire trasformazioni variabili e ridimensionare solo in base ai dati di allenamento? Come regolereste quindi i dati del test in modo che corrispondano? Solo curioso.
Minu,

3

Il punto in cui la selezione della funzione trova un posto nella pipeline dipende dal problema. Se conosci bene i tuoi dati, puoi selezionare manualmente funzionalità basate su questa conoscenza. In caso contrario, la sperimentazione con i modelli che utilizzano la convalida incrociata potrebbe essere la migliore. Ridurre il numero di funzioni un priorato con qualche tecnica aggiuntiva come chi2 o PCA può effettivamente ridurre la precisione del modello.

Nella mia esperienza con la classificazione del testo con il classificatore SGD, ad esempio lasciare tutte le centinaia di migliaia di parole codificate come caratteristiche binarie ha portato risultati migliori rispetto alla riduzione a poche migliaia o centinaia. Il tempo di allenamento è in realtà più veloce con tutte le funzionalità poiché la selezione delle funzionalità è piuttosto lenta con il mio set di strumenti (sklearn) perché non è stocastico come SGD.

La multicollinearità è qualcosa a cui prestare attenzione, ma l'interpretazione dell'interfaccia potrebbe essere altrettanto importante.

Quindi le persone segnalano di ottenere il miglior risultato con gruppi di modelli. Ogni modello cattura una parte particolare dello spazio informazioni meglio degli altri. Ciò ti impedirebbe anche di selezionare le funzionalità prima di adattare tutti i modelli che includeresti nel tuo ensemble.

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.