Simulazione dei dati per generare set di dati più grandi per la creazione di modelliCara comunità JMP,
Sto cercando di trovare un modo per generare dati simulati per addestrare meglio un modello che sto costruendo.
Ho un set di dati di dimensioni discrete: alcune migliaia di punti dati, ma vorrei generare dati simulati che mantengano una struttura simile ai dati originali per migliorare il modello. Mi piacerebbe avere circa 20.000-50.000 punti dati con una struttura simile per avere un set più ampio per addestrare, convalidare e testare il modello di previsione.
Solo per scopi visivi, i dati assomigliano a questo:

Ho provato a lavorare con la funzione "Simulatore" della piattaforma Profiler, ma i dati generati lì non mantengono una struttura (variazione) simile ai dati originali: diventano troppo "scoloriti" con lo standard deviazioni dagli input e dalla risposta. Quando provo a creare un modello da questo set e a confrontarlo con il modello originale dai dati di origine, il modello originale lo supera perché quel modello mantiene la struttura dei dati nella sua previsione. Il modello generato dal set di dati simulato non lo fa poiché tutta la struttura è sostanzialmente persa.
Inoltre, la funzione "Simula" (facendo clic con il pulsante destro del mouse su una colonna nella finestra di un rapporto) non mi porta esattamente dove voglio.
Ho fatto un po' di ricerche su ciò che le persone hanno fatto con JMP e ho trovato alcuni potenziali contatti, tuttavia finora nessuno di loro ha realmente seguito ciò che sto cercando.Se qualcuno là fuori ha una soluzione a questo, o può indicarmi la giusta direzione su come codificarlo, gliene sarei grato.
Grazie
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCIAO @Mark_Bailey E @Peter_Bartell ,
Giusto per fornire un feedback e continuare la discussione su questo argomento, sono riuscito a ottenere alcuni dati ragionevoli sul modello utilizzando la piattaforma ARIMA. Fa un buon lavoro nel ricreare un set di dati simile, anche se non è efficace nella previsione, ma va bene. L'applicazione della formula di previsione di questo modello funziona abbastanza bene con il mio set di dati effettivo, quindi fornisce un percorso potenzialmente utile da seguire.
Non sono convinto che questo sia in definitiva il modo in cui desidero procedere, quindi desidero confrontarlo con le altre opzioni di simulazione all'interno di JMP. So che la simulazione stocastica del profiler non aiuta per i motivi di cui abbiamo discusso prima. Inoltre, non è l'approccio migliore per mettere a punto il modello per un migliore adattamento, cosa che vorrei fare.
Per la mia modellazione specifica, sto utilizzando un modello di foresta bootstrap e vorrei migliorarlo ottimizzando il modello. L'ho fatto in parte con una tavola di accordatura. Ci sono però alcune limitazioni a questo riguardo, in particolare con il numero di esecuzioni che posso permettermi (in termini di memoria) nella tabella di ottimizzazione. In genere eseguo la mia modellazione con quante più esecuzioni nella mia tabella di ottimizzazione posso permettermi. Ciò restringe il numero di alberi nella foresta, il numero di termini campionati per suddivisione, i campioni bootstrap, le suddivisioni minime per albero e la suddivisione della dimensione minima. Ciò potrebbe aiutare a ottimizzare i parametri della piattaforma del modello per trovare una soluzione, ma non significa necessariamente un modello ottimizzato in base ai dati in mio possesso.
Quando creo il modello, creo una colonna di convalida che suddivido in un set di training e test, stratificato in base alla mia colonna di risposta. Quindi costruisco il modello solo sui dati di addestramento con una certa% trattenuta per la convalida del modello. L'output del modello dipende dalla colonna di convalida che scelgo (ne ho create diverse). Di seguito è riportato un output tipico (mi dispiace, non posso condividere le informazioni per le colonne di risposta o di fattori). I dettagli delle specifiche della foresta boostrap cambiano a seconda di come sono stati stratificati i dati originali di training e validazione.

Ciò che mi interessa fare ora è ottimizzare il modello per un adattamento migliore, possibilmente utilizzando l'opzione di simulazione per una statistica del modello. Potrei farlo modificando la N per i set di training e validazione o tramite RMSE dei singoli alberi, ecc. So che non sarò in grado di utilizzare questo approccio per modificare le specifiche della foresta di bootstrap (la tabella di ottimizzazione lo fa), ma vorrei usarlo in modo tale da poter ottimizzare il modello, ad esempio il numero di campioni utilizzati per l'addestramento e la validazione, o il numero di suddivisioni, al fine di massimizzare r^2.
Riassumendo: vorrei utilizzare un metodo di simulazione per aiutare ad addestrare i dati. So che la piattaforma di simulazione del profiler non funziona, il che mi lascia con ARIMA (possibile) o l'opzione di simulazione bootstrap per una statistica del modello. Non sono sicuro di come utilizzare al meglio quest'ultimo metodo di simulazione per mettere a punto il modello.
Qualsiasi pensiero o feedback che potresti avere sull'ottimizzazione dei modelli attraverso le simulazioni sarebbe apprezzato.
Grazie in anticipo per il tuo tempo!
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCIAO @GM ,
Grazie per il contributo e il suggerimento. Hai ragione riguardo all'obiettivo previsto e alla descrizione dei dati multivariati. L'ordine in cui i dati vengono generati non sembra essere un buon predittore. Esistono altre proprietà misurate che, se utilizzate collettivamente, forniscono una previsione ragionevole della "y" che voglio modellare/prevedere. La difficoltà arriva quando si cerca di addestrare il modello per adattarlo meglio. Mi piacerebbe farlo simulando i dati, ma questo si sta rivelando più impegnativo del previsto.
L'approccio MVN svolge sicuramente un lavoro migliore nel preservare alcune delle correlazioni multivariate dei dati rispetto all'opzione di simulazione nel profiler. Questa opzione crea semplicemente una media con una determinata deviazione standard.
Sfortunatamente, quando provo a creare un modello utilizzando lo script MVN e i dati generati, le prestazioni sono molto peggiori di un modello simile creato solo a partire dai dati originali.
Finora, trovo che il modello ARIMA svolga un lavoro migliore nel catturare le oscillazioni a breve termine nei dati, così come parte della struttura a lungo termine. Fa anche un pessimo lavoro nel prevedere le previsioni nei dati, ma quello che penso è usarlo per generare nuovi dati che vengono aggiunti ai dati originali per costruire un set di dati più ampio e quindi addestrare un modello con quel set di dati più grande.
Quello che penso che proverò ora è "Salvare colonne" dal rapporto ARIMA, estrarre i valori previsti e quindi concatenarli con la tabella dati originale. Quindi, vorrei randomizzare le righe nella nuova tabella dati e creare un modello con quel set di dati più grande. Immagino che un'altra opzione potrebbe essere quella di generare più colonne di convalida, eseguire lo stesso modello con diverse righe di convalida incrociata e calcolare la media dei modelli risultanti.
Apprezzo tutti i contributi a questa discussione. Anche se non ho ancora trovato una soluzione adeguata, sto imparando molto e mi vengono in mente alcune nuove idee da provare.
Grazie!
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliin base alla discussione, sembra che tu abbia una variabile di risultato che desideri modellare con altre variabili predittive, dove il tempo o l'ordine in cui i dati vengono generati non è una variabile predittrice.Potresti voler simulare la tua matrice NxP (N = righe, P = variabili (yex)) utilizzando una distribuzione normale multivariata.Questo collegamento fornisce JSL per simulare distribuzioni normali multivariate. http://www.jmp.com/support/notes/36/140.html È necessario modificarlo in base alla matrice di covarianza stimata, ma dovrebbe funzionare se i dati seguono una distribuzione normale multivariata.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCIAO @Mark_Bailey ,
Potrebbero sicuramente esserci alcune carenze nei predittori adeguati. Tuttavia, in base alle altre analisi che abbiamo effettuato, il set che abbiamo sembra decisamente più adatto di molti altri che abbiamo esaminato.
Per quanto riguarda la complessità e la convalida incrociata, ne tengo sicuramente conto. Genero una colonna train/convalida/test per ridurre il rischio di overfitting. La modellazione bootstrap della foresta genera una formula di previsione dell'albero decisionale piuttosto complessa che è molto più estesa rispetto, ad esempio, ai modelli di regressione generalizzata o alla modellazione della rete neurale. Funziona meglio anche quando si confrontano i modelli tra loro. In genere, trovo che dopo aver eseguito la piattaforma della foresta bootstrap con una matrice di ottimizzazione, ci sono nell'ordine di oltre 60 alberi, con ~ 4 termini campionati per suddivisione. Il numero di suddivisioni per trimestre può variare, ma spesso è compreso tra 1.000 e 3.000.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliInnanzitutto, ARIMA e altri modelli di serie temporali presuppongono perturbazioni a breve termine e alcune tendenze periodiche, quindi non sono adatti per previsioni a lungo termine.
Il problema della "mancanza di adattamento" con i modelli attuali (la previsione manca delle escursioni estreme della risposta osservata) potrebbe non essere aiutato da ulteriori dati. Potrebbero mancarti predittori sufficienti. Una direzione per ridurre la distorsione è includere più termini nell'espansione della base utilizzando l'attuale set di funzionalità. Menzioni diverse tecniche di modellazione ma non dici nulla sulla complessità di questi modelli che hai esplorato. Una maggiore complessità, con il rischio di un adattamento eccessivo affrontato dalla convalida incrociata, potrebbe risolvere il problema dei bias. L’altra direzione per ridurre i bias è cercare le caratteristiche mancanti che spiegherebbero finalmente gli scostamenti dalla risposta osservata.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCIAO @Mark_Bailey ,
In definitiva, mi piacerebbe costruire un modello forte che preveda i valori futuri dati i fattori in arrivo. Ho esaminato ARIMA e FDE. Sono d'accordo che la FDE probabilmente non è un approccio adatto. Tuttavia, penso che la modellazione ARIMA potrebbe fornire un percorso per generare nuovi dati per l'addestramento del modello.
Diversi fattori vengono misurati più o meno parallelamente alla risposta. Tutte le misurazioni utilizzano materiale di partenza, ma ne viene campionata una grande quantità per poter eseguire le altre misurazioni.Abbiamo identificato una serie di fattori che hanno la più forte capacità predittiva. Ho utilizzato questi fattori e la risposta per verificare diversi modelli utilizzando metodi di regressione generalizzata, albero potenziato, foresta boostrap, reti neurali e altri metodi di partizionamento. Confrontando i modelli trovo che la foresta bootstrap fornisce costantemente risultati di modellazione migliori rispetto alle altre. Posso migliorare ulteriormente questo modello trattenendomi per i test e eseguendo il modello con una tabella di regolazione per ottimizzare i parametri di adattamento.
Ciò che trovo ancora, però, è che il modello non cattura realmente gli alti e bassi dei dati tanto quanto crediamo dovrebbe (o potrebbe). Cattura parte della struttura, ma non è eccezionale nel ottenere alti e bassi. Pertanto, vorrei simulare un set di dati più ampio che includa più di questi eventi per costruire un modello migliore. E poiché è necessario molto tempo per creare effettivamente un set di dati di valori reali, la simulazione dei dati per addestrare un modello sarebbe utile.
Penso che la piattaforma ARIMA possa essere di aiuto in questo senso. L'ho testato per generare valori previsti dei fattori e della risposta. Ciò genera un nuovo insieme di valori per i fattori e le risposte che imitano i dati reali. Posso quindi concatenare i dati simulati e reali in una nuova tabella di dati per generare un nuovo set di dati due volte più grande.
Sfortunatamente, il modello ARIMA non svolge un buon lavoro nel prevedere molti nuovi valori per i fattori o la risposta, quindi non posso utilizzarlo per generare periodi di previsione. Tuttavia, penso che questo approccio alternativo per costruire un set di dati simulati potrebbe rivelarsi utile.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliNon è chiaro se la simulazione di più dati possa essere d’aiuto. Se riesci a simulare i dati, allora hai il modello dei dati. La "struttura" è uno spostamento della popolazione (non riprodotta dalla simulazione Monte Carlo con una media costante).
Stai misurando contemporaneamente i candidati per le variabili predittive (fattori) con questa risposta? Hai esplorato correlazioni, associazioni e possibili modelli?
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCIAO @Peter_Bartell E @Mark_Bailey ,
Apprezzo molto la discussione su questo argomento, poiché mi sta dando alcune idee su come migliorare la mia analisi.
I dati provengono da un processo, ma non sono in tempo reale. Vengono raccolti in un database a cui si accede successivamente. Non posso garantire che ogni punto sia veramente sequenziale dopo il precedente. Esiste un tipico intervallo di tempo tra i punti, ma se c'è una pausa nel processo, che potrebbe durare ore o giorni, il database riprende semplicemente da dove si era interrotto. Quindi non si tratta, in senso stretto, di una serie temporale. Tuttavia, in pratica, se il modello ARIMA può duplicare una risposta simile ai dati reali, ciò dovrebbe essere sufficiente (credo).
I dati provengono dalla stessa fonte. I campioni vengono estratti dal processo e su di essi viene eseguita una misurazione.
Non ho ancora provato a stimare l'autocorrelazione. La simulazione Monte Carlo potrebbe essere una strada da percorrere per generare dati di input/output che imitino i dati reali. Non sapevo che JMP potesse eseguire simulazioni MC. Li ho già fatti su altri problemi, ma non usando JMP. Queste sono cose che dovrò esaminare.
L’obiettivo è sviluppare un modello in grado di prevedere bene la risposta. In questo modo potremmo monitorare solo i fattori (più semplice). Se il modello prevede un avvertimento, è possibile compiere sforzi più impegnativi.
Penso ancora che varrebbe la pena leggere qualcosa su FDE e ARIMA, potrebbe far nascere qualche idea. Spero che le mie spiegazioni un po' vaghe abbiano un senso. Grazie per aver compreso le preoccupazioni relative alla divulgazione.
Grazie
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliSono d'accordo con @Mark_Bailey ultimo paragrafo sopra... e come ho affermato in un post precedente... da quello che hai condiviso finora... dubito che FDE o l'analisi delle serie temporali sia l'approccio più appropriato per i tuoi obiettivi.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliQuindi i dati non sono tracciati in ordine temporale? Non provengono dalla stessa fonte (fonte unica)?
Quando dici che ogni misurazione è indipendente, hai stimato l'autocorrelazione, anche solo per un ritardo pari a 1? Mentre “indipendente” potrebbe significare che i dati sono stati raccolti separatamente, sto parlando di indipendenza statistica o mancanza di correlazione.
I dati simulati sono quelli che mi aspetterei. Esiste un’unica popolazione con media e varianza stabili. La simulazione Monte Carlo include perturbazioni casuali sia dei fattori che della risposta.
La "struttura" che vedi nei tuoi dati ma non nella simulazione è il risultato di altre "cause assegnabili". Le cause possono verificarsi in modo casuale nel tempo e nell'entità. La simulazione deve includere il loro contributo. Sai cosa sono? Come si verificano? Come modellarli?
Capisco che non puoi rivelare la vera natura e i dettagli delle misurazioni, ma forse potresti usare un'analogia per darci un'idea dei dati e di cosa stai facendo. Ad esempio, forse state misurando di tanto in tanto la pressione in tre tubi lanciasiluri all'interno di un sottomarino nucleare...
Supponendo che possiamo aiutarti a simulare i dati reali, che tipo di analisi o modellazione pensi di utilizzare con essi?
Peter è molto utile ma man mano che impariamo di più sul tuo problema, dubito che questi suggerimenti possano essere d'aiuto. L'analisi dei dati funzionali riguarda funzioni, profili o curve. Immagina un campione di centinaia di serie di dati e desideri modellare la forma e il modo in cui la forma è influenzata da fattori o il modo in cui prevede i risultati. Apparentemente hai una singola serie di dati che desideri estendere. La FDA non prevede previsioni oltre il dominio originale. Il modello ARIMA presuppone punti equidistanti. Può modellare l'autocorrelazione, le perturbazioni e la stagionalità per prevedere il futuro ma non lontano. D'altra parte è possibile una simulazione Monte Carlo basata sul modello ARIMA.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelli@SDF1 : La tua frase "struttura a lungo termine" può avere molti aspetti, sfumature e problemi collegati. Ad esempio, la stagionalità può essere una forma di struttura. I metodi delle serie temporali ARIMA sono MOLTO adatti per modellare gli effetti della stagionalità e la tendenza a lungo termine o il movimento ciclico in un processo. Vedere la classica tabella dei dati seriesg.jmp nella directory dei dati di esempio JMP.
Il mio suggerimento per cominciare è documentarsi sulle funzionalità di JMP/JMP Pro all'interno della documentazione di JMP. Ecco un collegamento per FDE:
https://www.jmp.com/support/help/14/functional-data-explorer.shtml
Ed ecco un collegamento per l'analisi delle serie temporali:
https://www.jmp.com/support/help/14/time-series-analysis.shtml
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCiao Peter,
Una di queste piattaforme consente di mantenere la struttura a lungo raggio? Li leggerò ancora, potrebbe darmi qualche idea su come codificare la mia soluzione.
Grazie!
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliDato che le osservazioni non sono una serie temporale, ritiro le mie precedenti raccomandazioni relative a Functional Data Explorer o all'analisi delle serie temporali. Entrambe le tecniche assumono una certa struttura nel corso del tempo tra le osservazioni... e poiché queste osservazioni sono indipendenti l'una dall'altra... non è consigliabile utilizzare FDE o serie temporali.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCiao Mark,
I dati non dipendono dal tempo. Ogni misurazione è indipendente dalla precedente, ma in genere i dati vengono raccolti uno dopo l'altro. Potrebbero essere considerate una serie temporale, ma non in senso stretto in quanto potrebbero non essere tecnicamente sequenziali. Ancora più importante, però, ogni misurazione è una misurazione indipendente di una risposta.
Si spera che l'immagine seguente spiegherà cosa intendo riguardo ai dati simulati che perdono qualsiasi struttura:

L'ho generato aprendo il simulatore in Profiler, assegnando a ciascun predittore (ne ho diversi) una distribuzione normale con una SD realistica (derivata dai dati effettivi) e generando una tabella con 50.000 risposte. Anche se la media, i massimi e i minimi potrebbero essere vicini all'aspetto dei dati originali, l'altra struttura viene persa. Questo nuovo set di dati non contiene lo stesso tipo di struttura "a lungo raggio" di quello originale, ed è questa struttura che è altrettanto importante da catturare in un set di dati simulato quanto lo sono i valori effettivi dei dati. Non deve corrispondere esattamente, ma almeno avere una struttura simile (vedi post originale per il confronto).
Sono d'accordo che le due opzioni del simulatore integrate in JMP non sono appropriate. Qualche suggerimento su un argomento specifico su cui documentarsi per la formula della colonna o per scrivere uno script? Non ho familiarità con nessuna delle formule integrate che potrebbero occuparsi di questo per me. Sto bene con lo scripting di una cosa del genere, ma avrei bisogno di sapere da dove cominciare. Devo ancora esaminare l'altro suggerimento di Peter Bartell sull'esploratore di dati funzionali e sulla modellazione ARIMA per vedere se sarebbero in grado di gestirlo.
Grazie!
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliQuindi la risposta è un segnale dipendente dal tempo? Esistono dei predittori o è l’autocorrelazione ad essere importante?
Cosa intendi con " Sfortunatamente, quando provo a utilizzare la funzionalità di simulazione del Profiler e a generare set di dati più grandi, i nuovi dati di output non mostrano alcuna struttura correlata ai dati originali. " Qual è la natura della struttura desiderata?
In cosa differiscono i dati da una serie temporale?
Non penso che il simulatore di Prolfier o la funzionalità della piattaforma JMP Pro Simulate soddisferanno le tue esigenze. Una formula di colonna o uno script sarà probabilmente l'approccio più soddisfacente.
Alcuni dettagli non si possono rivelare (capito) quindi dobbiamo giocare a "venti domande!"
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCiao Mark,
Grazie per i tuoi commenti
I dati generati sono molto lenti, il che significa che è necessario molto tempo per ottenere effettivamente i dati, i giorni e le settimane originali. Pertanto, non è possibile creare un set di dati di 50 KB. Sto utilizzando alcune delle funzioni di modellazione di Pro (con Pro 14.1.0) per provare a generare un modello che non solo preveda bene i dati, ma catturi anche la struttura all'interno dei dati. Avere un set di dati più ampio che imiti la struttura originale sarebbe molto utile per migliorare il modello. Aumentare la dimensione del campione (incluso anche più formazione, convalida e dimensione del test) e acquisire la struttura dei dati aiuterebbe ad addestrare un modello migliore, almeno penso.
Non è strettamente una serie temporale, anche se si potrebbe vederla in questo modo. Gli eventi dei dati non sono necessariamente legati tra loro nel tempo. Un altro poster ha suggerito un'analisi delle serie temporali, che esaminerò.
Sfortunatamente, quando provo a utilizzare la funzionalità di simulazione del Profiler e a generare set di dati più grandi, i nuovi dati di output non mostrano alcuna struttura correlata ai dati originali. Posso costruire su di esso un nuovo modello che si adatta molto bene, ma quando confronto il nuovo modello con il modello originale (costruito sui dati originali), utilizzando i dati originali, il nuovo modello non si adatta altrettanto bene.
Mi spiace, non posso essere più specifico, ma non posso discutere i dettagli dei dati. Spero che i miei commenti abbiano senso rispetto ai punti che hai sollevato.
Grazie!
Da quello che voglio fare, la funzionalità di simulazione in Profiler sembra la strada giusta da percorrere, ma non mi dà quello che sto cercando di ottenere. La simulazione Platorm non è sicuramente la strada giusta da percorrere, o almeno posso vedere come adattarla per darmi quello che cerco.
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliCiao Peter,
Grazie per i commenti Ho dimenticato di aggiungere nel post originale che sto utilizzando JMP Pro 14.1.0.
Potrei dover aspettare fino al lancio del prossimo aggiornamento, ma posso almeno leggere e approfondire.
Grazie!
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliInnanzitutto, come utilizzeresti i dati simulati per migliorare il modello? Si tratta di disporre di dati sufficienti per dimostrare la fattibilità di un particolare approccio di modellazione? Si tratta di valutare la dimensione del campione che potrebbe essere sufficiente per un particolare modello? Si tratta solo di aumentare la dimensione del campione?
In secondo luogo, sembra che tu abbia un'unica serie temporale. Questa interpretazione è corretta?
In terzo luogo, la funzionalità di simulazione del Profiler è pensata per funzionare con un modello adattato o salvato. È possibile descrivere la variazione nei predittori e nelle risposte in termini di modelli di distribuzione parametrici. Non so se quel meccanismo funziona con i modelli di serie temporali. (Altri esperti possono intervenire qui.)
La simulazione della piattaforma ha lo scopo di ricampionare i dati sulla base di un modello di salvataggio con una componente stocastica per generare la distribuzione di campionamento empirico della statistica scelta in una piattaforma.
Penso di poter ottenere un programma SAS per simulare dati di serie temporali che potrebbero essere adattati a una formula o uno script di colonna JMP. (Non posso promettertelo.)
Sono sulla strada giusta?
Re: Simulazione dei dati per generare set di dati più grandi per la costruzione di modelliSe disponi di JMP Pro versione 14.2, il tuo problema sembra un'applicazione perfetta per Functional Data Explorer. Un'altra opzione potrebbe essere l'approccio di modellazione delle serie temporali utilizzando forse una sorta di costrutto ARIMA? Non è necessario JMP Pro per l'approccio alle serie temporali.