Di recente ho riscontrato un problema simile: come gestire l'estrazione di una varietà di funzionalità da un set di dati di grandi dimensioni, senza sapere in anticipo quali sarebbero tutte. (Anche il calcolo ripetuto dei valori medi sarebbe costoso dal punto di vista computazionale.) Inoltre, come gestirò le previsioni in base a diversi set di funzionalità? Se avessi aggiunto una nuova funzionalità, come avrei potuto sapere quali modelli addestrare su nuove funzionalità? Potrebbe rapidamente nevicare in un enorme casino.
La mia soluzione attuale è di rintracciare tutto in un database NoSQL locale (MongoDB). Ad esempio, potrei avere una raccolta features
, ciascuna delle quali ha un nome, una descrizione di come è stata calcolata la funzione, il file python che ha eseguito l'estrazione, ecc.
Allo stesso modo, una raccolta models
include modelli eseguiti sui dati. Ogni voce potrebbe avere un nome, un elenco di funzioni utilizzate per addestrare il modello, i suoi eventuali parametri, i valori previsti su un set di test tenuto, le metriche su come il modello ha funzionato, ecc.
Dal mio punto di vista, questo ha una serie di vantaggi:
- Salvando le previsioni, posso usarle in seguito nelle previsioni dell'ensemble.
- Poiché tengo traccia di quali funzionalità sono state utilizzate, so quali devono essere riqualificate mentre estraggo più funzionalità.
- Salvando le descrizioni dei modelli, mi assicuro di sapere sempre cosa ho provato. Non devo mai chiedermi: "Ho provato LASSO con i parametri di regolarizzazione impostati dal CV di ricerca della griglia?" Posso sempre cercarlo e vedere quanto successo ha avuto.
Dalla tua domanda, sembra che potresti adattare questo approccio al flusso di lavoro del tuo problema. Installa Mongo o un altro database di tua scelta, quindi salva ogni esecuzione sperimentale, i suoi input, i suoi risultati e qualsiasi altra cosa tu possa voler tracciare nel corso del progetto. Questo dovrebbe essere molto più facile da interrogare rispetto a un foglio di calcolo, almeno.