Supponiamo che tu stia analizzando un enorme insieme di dati al ritmo di miliardi di osservazioni al giorno, in cui ogni osservazione ha un paio di migliaia di variabili numeriche e categoriche sparse e possibilmente ridondanti. Diciamo che c'è un problema di regressione, un problema di classificazione binaria sbilanciato e un compito di "scoprire quali predittori sono più importanti". Il mio pensiero su come affrontare il problema è:
Adattare alcuni modelli predittivi su sottocampioni progressivamente sempre più grandi (casuali) dei dati fino a quando:
L'adattamento e la convalida incrociata del modello diventa difficile dal punto di vista computazionale (ad esempio, irragionevolmente lento sul mio laptop, R esaurisce la memoria, ecc.), OPPURE
L'allenamento e il test RMSE o i valori di precisione / richiamo si stabilizzano.
Se gli errori di addestramento e test non si sono stabilizzati (1.), utilizzare un modello più semplice e / o implementare versioni multicore o multinodo del modello e riavviare dall'inizio.
Se gli errori di addestramento e test si sono stabilizzati (2.):
Se (ovvero, posso ancora eseguire algoritmi su quanto non è ancora troppo grande), prova a migliorare le prestazioni espandendo lo spazio delle funzionalità o utilizzando un modello più complesso e riavviando dall'inizio.
Se è "grande" e l'esecuzione di ulteriori analisi è costosa, analizzare l'importanza e la fine delle variabili.
Ho intenzione di usare pacchetti come biglm
, speedglm
, multicore
e ff
in R inizialmente, e successivamente utilizzare algoritmi più complicati e / o più nodi (EC2) come necessario.
Sembra un approccio ragionevole e, in tal caso, hai qualche consiglio o suggerimento specifico? In caso contrario, cosa proveresti invece per un set di dati di queste dimensioni?