VALIDAZIONE INCROCIATA - METODO DELLA COLONNA DI VALIDAZIONEQuando si utilizza il metodo della colonna di convalida per la convalida incrociata, suddividiamo il set di dati in set di addestramento, convalida e test. Questo rapporto di divisione è specificato dall'utente. C'è qualche linea guida/riferimento per decidere il rapporto di divisione (come 60:20:20/70:15:15/50:25:25/80:10:10). Viene scelto anche in base al numero totale di osservazioni -N ?
Miscelazione e pulizia dei datiModellazione predittiva e Machine LearningOggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDAAlla tua domanda iniziale, no, non ci sono regole specifiche su quanti dati escludere. Nei corsi di analisi di JMP Education, ti consigliamo di conservare tutti i dati con cui ti senti a tuo agio, con almeno il 20% trattenuto. Se ritieni che il set di allenamento sia troppo piccolo per contenere così tante righe, considera la convalida incrociata k-fold. Quante righe sei disposto a sacrificare per la convalida? Usa k = n / tante righe. Se k <5 usando quella formula, considera la validazione incrociata leave-one-out.
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDAPrego @sreekumar .
Se consideri una o più di queste risposte come soluzione/i, non esitare a contrassegnarle come soluzione/i, per aiutare i visitatori della community di JMP a trovare più facilmente le risposte che stanno cercando.
Se hai altre domande o un caso concreto su cui vorresti un consiglio, non esitare a rispondere su questo argomento o crearne uno nuovo.
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDAGrazie per il tuo contributo alla colonna di convalida incrociata.
Sreekumar Punnappilly
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDAGrazie per aver fornito un contributo dettagliato sulla suddivisione dei set di dati nell'apprendimento automatico. Sono sicuro che questo aiuterà nella mia ricerca.
Sreekumar Punnappilly
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDACIAO @Victor_G ,
Sì, penso che ci possa essere qualche tipo di malinteso. Forse dovrei dire che esiste un set di dati di riserva piuttosto che un set di dati di test. Il set di dati di controllo è costituito da dati che non sono mai stati utilizzati nell'addestramento, nella convalida o nella selezione di un modello da un determinato algoritmo (set di test). Uso questo set di hold-out per confrontare i diversi algoritmi l'uno contro l'altro per vedere quale algoritmo funziona meglio. La piattaforma Model Comparison di JMP è molto utile per confrontare i diversi algoritmi tra loro utilizzando un set di hold-out. Ciò consente un confronto imparziale e senza perdite dei diversi algoritmi. Diventa quindi una sorta di set di dati di "test", nel senso che il set di dati di controllo viene utilizzato per vedere quale dei diversi algoritmi funziona meglio su questo set di dati "puro".
Questo è l'unico modo che conosco per confrontare diversi algoritmi tra loro in JMP. Quello che voglio dire è che questo è l'unico modo in cui JMP può confrontare un algoritmo di rete neurale con un algoritmo XGBoost, per esempio. Non userei mai, né consiglierei, l'utilizzo del set di dati di attesa per confrontare diversi modelli all'interno di una piattaforma. Non confronterei i 20 diversi modelli sintonizzati all'interno della piattaforma della foresta di bootstrap l'uno contro l'altro utilizzando il set di hold-out, questo sarebbe lo scopo del set di dati di test.
Quindi, scusa se c'è stato qualche malinteso/confusione. D'ora in poi cercherò di riferirmi ad esso come il set hold-out per evitare confusione con il set di test.
Grazie per la discussione!,
DS
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDABuon punto sul campionamento stratificato @SDF1 !
Mi dispiace, non usiamo la stessa denominazione o c'è un malinteso.
Se porti diversi modelli nel set di test per confrontarli (e selezionarne uno), questo è un problema e non lo scopo di questo set, indipendentemente dalle piattaforme o dai modelli utilizzati. Il confronto dei modelli dovrebbe essere eseguito sul set di convalida (per mantenere un set di test chiaro e "puro" senza perdite di informazioni o pregiudizi), da qui la mia risposta precedente con alcune risorse su questo argomento.
Vedere la Guida di JMP che sottolinea anche le differenze tra i set:"Il set di test verifica la capacità predittiva del modello Dopo è stato scelto un modello." : https://www.jmp.com/support/help/en/17.1/index.shtml#page/jmp/overview-of-the-make-validation-column-platform.shtml#ww269465
Questo è anche un motivo dell'importanza di definire bene i diversi set e fissarli o il metodo, per valutare correttamente diversi modelli sullo stesso set di validazione (o sullo stesso metodo).
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDACIAO @Victor_G ,
Scusa se non è stato chiaro, ma in realtà ci riferiamo alla stessa cosa. Quando ho menzionato i modelli in precedenza, mi riferivo alla generazione di modelli utilizzando la stessa configurazione di test/convalida, ma anche su piattaforme diverse in JMP. Non creo mai modelli pensando a una sola piattaforma, ma genero e metto a punto modelli utilizzando le diverse piattaforme (ad es. NN, BT, Bootstrap Forest, SVM, KNN e XGBoost) e la convalida incrociata con i set di addestramento e convalida. Quindi, dopo aver generato i diversi modelli, confronto la loro capacità di previsione sul set di dati di controllo (test), un set di dati che nessuno dei modelli ha visto durante le fasi di addestramento e convalida. A volte NN funziona meglio, a volte è XGBoost o qualche altra piattaforma.
da ultimo @sreekumar , una cosa che ho dimenticato di menzionare nel mio post precedente, è che aiuta davvero a stratificare la colonna di convalida incrociata utilizzando la colonna di output, la colonna che stai cercando di prevedere. Ciò mantiene una struttura di distribuzione simile per i set di dati di addestramento, convalida e test. A volte questo non può essere fatto, specialmente con set di dati altamente sbilanciati, ma se possibile, lo consiglio vivamente. In caso contrario, i dati vengono inseriti in modo casuale in ogni tipo di set di dati e ciò potrebbe portare a una colonna di convalida mal divisa, che spesso può portare a modelli scadenti.
DS
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDACIAO @SDF1 ,
Una piccola correzione alla grande aggiunta che hai fornito: il set di convalida è il set utilizzato per il confronto e la selezione del modello, non il set di test (ma a volte i nomi di test e convalida sono usati alternativamente o in modo confuso).
Questi due insiemi hanno scopi molto diversi:
- Il set di test è la parte di controllo dei dati, non utilizzata Prima dopo aver selezionato un modello, al fine di fornire una stima imparziale della generalizzazione del modello e delle prestazioni predittive.
- Il set di convalida è una porzione di dati utilizzata per la messa a punto del modello e il confronto dei modelli, al fine di selezionare il miglior modello candidato.
Una spiegazione è data qui: machine learning: posso utilizzare il set di dati di test per selezionare un modello? - Scambio di stack di scienza dei dati
Due spiegazioni a questa differenza di utilizzo:
- Pratico: nelle competizioni di data science, non hai accesso al set di dati di test, quindi per creare e selezionare l'algoritmo più performante devi suddividere i tuoi dati in set di addestramento e validazione e "sperare" di avere buone prestazioni ( e generalizzazione) sul set di test invisibile.
- Teorico : se stai utilizzando il set di test per confrontare i modelli, stai effettivamente facendo una perdita di dati/informazioni, poiché puoi migliorare i tuoi risultati sul set di test nel tempo selezionando l'algoritmo con le migliori prestazioni sul set di test (e quindi, forse continuare a perfezionarlo in base alle prestazioni sui dati di test o provare altri modelli...). Quindi il tuo set di test non è più imparziale, poiché la scelta dell'algoritmo (e forse altre azioni eseguite dopo la selezione) verrà effettuata su questo.
Il set di test è spesso l'ultimo passaggio tra la creazione/sviluppo del modello e la sua implementazione nella produzione o pubblicazione, quindi la valutazione finale deve essere il più equa e imparziale possibile.
Alcune risorse sui set: Set di addestramento, test e convalida (mlu-explain.github.io)
MFML 071 - Qual è la differenza tra test e validazione? - Youtube
Spero che questo possa evitare qualsiasi confusione nella denominazione e nell'uso dei set,
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDACIAO @sreekumar ,
Oltre a cosa @Victor_G ha scritto, ti consiglio vivamente anche di separare il tuo set di dati di test e creare una nuova tabella di dati con esso. In questo modo, quando esegui il training e convalidi i tuoi modelli, puoi confrontarli sulla tabella dei dati di controllo per vedere quale modello offre le prestazioni migliori. Ciò riduce ogni possibilità che il set di dati di test possa essere utilizzato accidentalmente nei set di addestramento o di convalida.
Esistono anche altri modi in cui è possibile utilizzare i dati simulati per addestrare i modelli e quindi testare i modelli sui dati reali. A volte utilizzo questo approccio quando il set di dati originale è piccolo e devo mantenere la struttura di correlazione degli input.
Buona fortuna!,
DS
Oggetto: CONVALIDA INCROCIATA - METODO DELLA COLONNA DI CONVALIDACIAO @sreekumar ,
Domanda interessante, e temo di non avere una risposta definitiva alla tua domanda, poiché dipende dal set di dati, dai tipi di modello da considerare e dalle pratiche/abitudini dell'analista (o della persona che esegue l'analisi).
Innanzitutto, è importante sapere quali sono l'uso e le esigenze tra ogni set:
- Set da allenamento : Usato per l'effettiva formazione del/i modello/i,
- Set di convalida: utilizzato per l'ottimizzazione del modello (regolazione fine degli iperparametri, selezione di funzionalità/soglie, ... ad esempio) e selezione del modello,
- Set di test: utilizzato per la generalizzazione e la valutazione predittiva delle prestazioni del modello selezionato su dati nuovi/non visti.
Esistono diverse scelte/metodi per suddividere i dati in base agli obiettivi e alle dimensioni del set di dati:
- Set di addestramento/convalida/test : set fissi per addestrare, ottimizzare e valutare le prestazioni del modello. Consigliato per set di dati più grandi.
- Convalida incrociata di K-fold : suddivide il set di dati in K pieghe. Il modello viene addestrato K volte e ogni piega viene utilizzata K-1 volte per l'addestramento e 1 volta per la convalida. Consente di valutare la robustezza del modello, poiché le prestazioni dovrebbero essere equivalenti in tutte le pieghe.
- Convalida incrociata Leave-One-Out : Caso estremo della convalida incrociata K-fold, dove K = N (numero di osservazioni). Viene utilizzato quando si dispone di un piccolo set di dati e si desidera valutare se il modello è robusto.
- Autovalidazione/Self Validating Ensemble Model : invece di separare alcune osservazioni in insiemi diversi, si associa ciascuna osservazione a un peso per l'addestramento e la convalida (un peso maggiore nell'allenamento induce un peso inferiore nella convalida, il che significa che questa osservazione verrà utilizzata principalmente per l'allenamento e meno per la convalida), quindi ripetere questa procedura variando il peso. Viene utilizzato per set di dati molto piccoli e/o set di dati in cui non è possibile suddividere in modo indipendente alcune osservazioni tra insiemi diversi: ad esempio in Design of Experiments, l'insieme di esperimenti da eseguire può essere basato su un modello e, in tal caso, è possibile non è possibile suddividere in modo indipendente alcune corse tra addestramento e convalida, poiché influenzerà il modello in modo negativo; le corse necessarie per la stima dei parametri non saranno disponibili, riducendo drasticamente le prestazioni del modello.
Tutti questi approcci sono supportati da JMP: Avvia la piattaforma Make Validation Column (jmp.com)
Come regola generale, viene spesso utilizzato un rapporto 70/20/10.Puoi leggere il giornale " Rapporto ottimale per la suddivisione dei dati "qui per avere maggiori dettagli.In generale, maggiore è il numero di parametri nel modello, maggiore sarà il set di dati di addestramento, poiché avrai bisogno di più dati per stimare con precisione ciascuno dei parametri nel modello, quindi anche la complessità/tipo di modello è qualcosa da considerare durante la creazione di set di addestramento/convalida/test.
Se hai un caso d'uso più preciso, forse questo potrebbe essere più utile e meno generale per fornirti una guida?
Consiglio vivamente anche la playlist "Fare amicizia con l'apprendimento automatico" di Cassie Kozyrkov per saperne di più sull'addestramento, la convalida e il test dei modelli: Fare amicizia con l'apprendimento automatico - YouTube
Spero che questa prima risposta ti possa aiutare,
Oggetto: Convalida incrociata - Metodo a colonne di convalidaGrazie.
In realtà, ci sono due punti da chiarire riguardo alla convalida incrociata K-fold (CV) e alla convalida leave-one-out (LOO) utilizzando la regressione di routine in JMP Pro.
Entrambi i metodi sono direttamente disponibili nella sezione PLSR (regressione ai minimi quadrati parziali), ma c'è una certa incertezza su come procedere e visualizzare le metriche se si applicano CV e/o LOO a una regressione semplice. Ad esempio, sto analizzando spettri e PCR e PLSR sono metodi di routine in questo processo chemiometrico.

Ho avuto un'esperienza un po' strana. Tuttavia, dopo aver creato una colonna di convalida a 4 fold (sopra, 4 fold su 72 osservazioni) ed eseguito la PCR (risposta numerica e componenti principali come predittori), ricevo la seguente risposta di errore:
Quindi, non viene effettuato un vero e proprio CV, giusto?
Secondo punto: come creare una validazione LOO (una colonna?) per la PCR?
Nel complesso, potreste consigliarmi cosa bisogna fare per eseguire correttamente la convalida incrociata e la convalida leave-one-out per una tipica regressione e ottenere metriche di adattamento adeguate? È davvero importante e per me non è ancora scontato.
Grazie mille, colleghi!
Oggetto: Convalida incrociata - Metodo a colonne di convalidaCiao @Nazarkovsky ,
Probabilmente sarebbe stato più semplice aprire una nuova discussione invece di rispondere a questa vecchia, in quanto avrebbe garantito maggiore visibilità e permesso ad altri utenti di JMP di partecipare alla discussione sulla tua domanda.
Sì, a volte si verificano degli errori nelle piattaforme di modellazione JMP quando si utilizza una colonna di convalida incrociata K-Fold fissa, poiché JMP di solito riconosce 2 livelli (addestramento e convalida o test) o 3 livelli (addestramento, convalida e test) dalla colonna di convalida. Nel messaggio di errore che hai ricevuto, non viene eseguita alcuna convalida incrociata, ma viene adattato un modello lineare a tutti i tuoi dati.
Poiché stai utilizzando un modello lineare molto semplice, potresti provare a usare la piattaforma Selezione dei modelli (che include anche PLS se vuoi confrontare i risultati di modelli diversi), specificando le tue variabili X, la tua variabile di risposta Y, la colonna di convalida a 4 fold (oppure eseguendo la convalida incrociata direttamente dalla piattaforma) e il tipo di modello che vuoi adattare (opzioni per modelli di regressione lineare + opzioni di modellazione):

Oppure, utilizzando direttamente l'opzione di convalida incrociata K-fold dalla piattaforma, è possibile ottenere questi risultati:

Se si desidera eseguire una convalida incrociata Leave-One-Out, è sufficiente specificare K=n (dove n è il numero di iterazioni nella tabella). Se si desidera accedere ai risultati dei singoli fold, è possibile adattare la soluzione fornita qui alla propria piattaforma di modellazione: Accesso alle metriche out-of-fold per la convalida incrociata K-Fold.
Infine, vedo almeno un problema importante nel tuo flusso di lavoro di modellazione che potrebbe portare a una perdita di dati: devi applicare la convalida incrociata o la tua strategia di suddivisione/validazione anche all'analisi delle componenti principali. Se non lo fai, la PCA vedrà l'intero dataset e apprenderà le correlazioni tra i fattori da tutto il dataset, e il modello lineare che stai adattando successivamente (e valutando grazie alla convalida incrociata) beneficerà di tutte le informazioni del dataset, non delle informazioni provenienti da 3 su 4 fold. Poiché JMP non ha implementato un ruolo di validazione (ancora!) per la PCA, ecco perché ho aggiunto questa lista dei desideri, per prevenire la perdita di dati e possibili errori nei flussi di lavoro di modellazione come il tuo: Aggiungi l'opzione del ruolo di validazione nella piattaforma di analisi delle componenti principali. In sintesi, dovresti:
- Definire e applicare una strategia di validazione (CV, LOO o suddivisione standard in training/validazione o training/validazione/test).
- Pre-elabora i dati solo sul set di addestramento (oppure pre-elabora i dati più volte a seconda del numero di fold utilizzati).
- Applica un modello utilizzando la stessa strategia di validazione ai dati preelaborati del set di addestramento (o dei corrispondenti fold di addestramento).
Spero che questa risposta ti sia d'aiuto.
Oggetto: Convalida incrociata - Metodo a colonne di convalidaAd ogni modo, la sezione relativa alla convalida incrociata k-fold in JMP è ancora carente. Mi chiedo perché gli sviluppatori non se ne preoccupino, dato che questo metodo di validazione è uno strumento fondamentale per una valutazione preliminare di qualsiasi modello, soprattutto con un numero limitato di dati. Inoltre, nell'opzione per la creazione di una colonna di convalida incrociata k-fold, non è possibile impostare la convalida incrociata a 3 fold: il valore minimo è 4.
Non mi piace nemmeno il report di JMP sulle metriche per la convalida incrociata (CV), poiché non c'è un'opzione/pulsante finale per creare una colonna "Previsto" dopo tutte le esecuzioni come risultato medio e confrontarlo con i valori previsti forniti dalla regressione generalizzata o dalla PLSR.
Per quanto riguarda la validazione della PCA, questa opzione si trova in Unscrambler, un software tradizionale per la chemiometria (analisi multivariata di dati chimici, come gli spettri). Sì, la validazione viene eseguita su un numero preimpostato di componenti rispetto alla varianza spiegata. Per questo test di perdita utilizzo Unscrambler, aha.
Nella Community è presente una serie di post su JMP dedicati all'analisi degli spettri, ma mancano ancora discussioni esaustive su CV e PCR.
Tuttavia, in chemiometria, SVR (regressione a vettori di supporto), PLSR e PCR vengono sempre applicati e le loro metriche vengono confrontate.
Grazie per LOO, funziona davvero bene.
Oggetto: Convalida incrociata - Metodo a colonne di convalidaAd ogni modo, la parte relativa alla convalida incrociata k-fold in JMP è ancora debole. Mi chiedo perché gli sviluppatori non se ne preoccupino, dato che questo metodo di validazione è uno strumento fondamentale per una valutazione preliminare di qualsiasi modello, soprattutto con un numero limitato di dati. Inoltre, tra le opzioni disponibili per la creazione di una colonna di convalida incrociata k-fold, è impossibile implementare la convalida incrociata a 3 fold: il valore minimo è 4.
Non mi piace nemmeno il report di JMP sulle metriche per la convalida incrociata (CV), poiché non c'è un'opzione/pulsante finale per creare una colonna "Previsto" dopo tutte le esecuzioni come risultato medio e confrontarlo con i valori previsti forniti dalla regressione generalizzata o dalla PLSR.
Per quanto riguarda la validazione della PCA, questa opzione si trova in Unscrambler, un software tradizionale per la chemiometria (analisi multivariata di dati chimici, come gli spettri). Sì, la validazione viene eseguita sul numero di componenti rispetto alla varianza spiegata. Per questo test di perdita utilizzo Unscrambler, aha.
Nella Community è presente una serie di post su JMP dedicati all'analisi degli spettri, ma mancano ancora discussioni esaustive su CV e PCR.
Tuttavia, in chemiometria, SVR (regressione a vettori di supporto), PLSR e PCR vengono sempre applicati e le loro metriche vengono confrontate.
Grazie per LOO, funziona davvero bene.