Bentornati ad Analytics con fiducia. In questa serie esplorerò la chiave del successo con la moderna analisi dei dati: la convalida. Nel primo e nel secondo post abbiamo discusso della generalizzabilità e visto come costruire modelli problematici che non generalizzano. In questo post continuiamo con il case study sulle ricette di reazione e introduciamo la convalida del holdback come semplice strumento per costruire modelli di cui ti puoi fidare.
Ricorda che in questo caso di studio stiamo esaminando ricette per realizzare un prodotto chimico di alto valore [1]. Esistono 4.608 possibili variazioni nella scelta degli ingredienti (4 elettrofili x 3 nucleofili x 12 ligandi x 8 basi x 4 solventi). Vogliamo utilizzare i dati di appena 150 ricette possibili per costruire un modello per prevedere la resa di qualsiasi ricetta e trovare le migliori combinazioni di ingredienti.
Il modello di partizione che abbiamo creato l'ultima volta sembrava ottimo a prima vista, con un RSquare di 0,985 e un grafico Effettivo/Previsto che mostrava un eccellente adattamento ai dati. Ma poi abbiamo confrontato le previsioni del modello con le rese effettive per tutte le 4.458 ricette che non erano presenti nei dati di addestramento. Il modello prevedeva rendimenti prossimi al 100% per diverse ricette che in realtà avevano rendimenti vicini allo 0!
Actual versus Predicted plots for the data that was used to train the model (left) and the data for all the other recipes that were not used to train the model (right). This is an example of an "overfit" model that does not generalize.Actual versus Predicted plots for the data that was used to train the model (left) and the data for all the other recipes that were not used to train the model (right). This is an example of an "overfit" model that does not generalize.Actual versus Predicted plots for the data that was used to train the model (left) and the data for all the other recipes that were not used to train the model (right). This is an example of an "overfit" model that does not generalize.Grafici effettivi e previsti per i dati utilizzati per addestrare il modello (a sinistra) e i dati per tutte le altre ricette che non sono state utilizzate per addestrare il modello (a destra). Questo è un esempio di modello "overfit" che non generalizza.
Come possiamo evitare di costruire tipi di modelli che sembrano buoni sui dati di addestramento, solo per scoprire che non si generalizzano quando testati su dati invisibili? E come possiamo assicurarci che i nostri modelli non siano inutilmente complessi?
Un'idea che potrebbe esserti venuta in mente sarebbe quella di convalidare il modello rispetto a dati invisibili in ogni fase del processo di costruzione. Avremmo potuto fermarci dopo ogni suddivisione nell'albero decisionale per verificare il confronto tra Effettivo e Previsto (e RSquare) per le 4.458 ricette che non sono state utilizzate per addestrare il modello. Potremmo selezionare il modello migliore come quello in cui l'adattamento ai dati invisibili è migliore. E avremmo conoscenza di quanto bene possiamo aspettarci che funzioni.
Naturalmente, questo è in una situazione artificiale. Se avessimo i dati per tutte le possibili ricette, non ne tratterremmo la maggior parte per convalidare il modello. Possiamo usare la stessa idea ma utilizzando i dati solo per le 150 ricette?
Presentazione...Crea colonna di convalida
Sì, esiste uno strumento per questo. Crea colonna di convalida in JMP Pro contrassegnerà una parte delle righe nella tabella dati da trattenere e utilizzare come convalida in ogni fase del processo di creazione del modello. Esistono varie opzioni utili che esploreremo nei post successivi, ma per questo esempio lo manterremo semplice e ci atterremo alle impostazioni predefinite.
The Make Validation Column tool in JMP Pro (Analyze > Predictive Modeling). In this example, we stick with the defaults to make a Random Validation Column and click OK.The Make Validation Column tool in JMP Pro (Analyze > Predictive Modeling). In this example, we stick with the defaults to make a Random Validation Column and click OK.The Make Validation Column tool in JMP Pro (Analyze > Predictive Modeling). In this example, we stick with the defaults to make a Random Validation Column and click OK.Lo strumento Crea colonna di convalida in JMP Pro (Analizza > Modellazione predittiva). In questo esempio, manteniamo le impostazioni predefinite per creare una colonna di convalida casuale e fare clic su OK.
Andremo con il suggerito 0,75/0,25suddivisione training/convalida, il che significa che 37 delle 150 righe di dati verranno trattenute per la convalida.
The default 0.75/0.25 training/validation split in Make Validation Column. Enter “1234” as the Random Seed if you want to follow along in JMP Pro and get the same results.The default 0.75/0.25 training/validation split in Make Validation Column. Enter “1234” as the Random Seed if you want to follow along in JMP Pro and get the same results.The default 0.75/0.25 training/validation split in Make Validation Column. Enter “1234” as the Random Seed if you want to follow along in JMP Pro and get the same results.La suddivisione predefinita di addestramento/convalida 0,75/0,25 nella colonna Crea convalida. Immettere "1234" come seme casuale se si desidera proseguire in JMP Pro e ottenere gli stessi risultati.
Ora abbiamo una colonna Validazione nella nostra tabella dati che contrassegna 37 righe per la convalida e le altre per l'addestramento:
Validation column in our data table that marks 37 of the rows for validation and the others for trainingValidation column in our data table that marks 37 of the rows for validation and the others for trainingValidation column in our data table that marks 37 of the rows for validation and the others for trainingColonna di convalida nella nostra tabella dati che contrassegna 37 righe per la convalida e le altre per l'addestramento
Ora ripetiamo il modello di partizione che abbiamo creato nel post n. 2, ma con convalida. Il passaggio chiave qui è aggiungere la colonna Convalida nel ruolo Convalida quando si avvia Partizione.
Partition model with validationPartition model with validationPartition model with validationModello di partizione con convalida
La prima suddivisione è la stessa del nostro modello senza convalida. Ma ora possiamo vedere RSquare sia per i dati di training che per i dati di validazione. L'adattamento ai dati di validazione non è altrettanto buono per i dati di training (RSquare = 0,133 vs 0,224).

Possiamo premere Go e l'algoritmo esplorerà una serie di suddivisioni e poi ridurrà l'albero che aveva il massimo Validation RSquare, ovvero il modello che meglio prevede i dati che abbiamo trattenuto. In questo caso, Validation RSquare (in rosso) ha raggiunto il picco a cinque divisioni. Oltre quel punto, il modello stava diventando più complesso e si adattava meglio ai dati di addestramento, ma si adattava eccessivamente al rumore piuttosto che trovare modelli che generalizzassero a dati invisibili. Potremmo anche ridurli a quattro suddivisioni poiché Validation RSquare è lo stesso e il modello è più semplice.

E gli altri modelli?
Esistono numerosi altri tipi di modelli statistici e di apprendimento automatico che potremmo utilizzare. Un altro vantaggio della convalida holdback è che ci consente di creare e confrontare rapidamente modelli convalidati e scoprire quali funzionano meglio. La piattaforma di screening dei modelli in JMP Pro rende tutto ciò molto semplice. In questo caso, troviamo che un modello di albero potenziato ha il valore RSquare di convalida più alto:
Model Screening report showing the Boosted Tree has a slightly better Validation RSquare than the Decision Tree and the other statistical and machine learning methods.Model Screening report showing the Boosted Tree has a slightly better Validation RSquare than the Decision Tree and the other statistical and machine learning methods.Model Screening report showing the Boosted Tree has a slightly better Validation RSquare than the Decision Tree and the other statistical and machine learning methods.Il report di screening del modello che mostra l'albero potenziato ha un RSquare di convalida leggermente migliore rispetto all'albero decisionale e agli altri metodi statistici e di apprendimento automatico.
Ora, quando osserviamo le prestazioni di questo modello Booted Tree, vediamo che esiste un accordo molto migliore tra le previsioni e i rendimenti effettivi delle 4.458 ricette che non sono state utilizzate per addestrare o convalidare il modello:

Saperne di più:
[1] Dati provenienti da Perera D, Tucker JW, Brahmbhatt S, Helal CJ, Chong A, Farrell W, Richardson P, Sach NW. Una piattaforma per lo screening automatizzato delle reazioni su scala nanomolecolare e la sintesi in flusso su scala micromolecolare. Scienza. 26 gennaio 2018;359(6374):429-434. doi: 10.1126/science.aap9112. PMID: 29371464. I set di dati campionati e completi sono allegati come tabelle di dati JMP.
Ottima spiegazione Fil! Mi è appena stato concesso l'accesso alla versione PRO da agosto come prima persona in Arla Foods 
Non vedo l'ora di iniziare a convalidare i modelli che costruisco.
Ho due domande di follow-up relative al tuo post: diciamo che ho creato un design DoE personalizzato con l'app. 20-30 corse.
L'addestramento, la convalida e il test del modello funzionano ancora o sono necessarie più di 100 esecuzioni per trarne effettivamente qualcosa?
Se poi iniziassi ad ampliare lo stesso progetto (testando gli stessi fattori) a nuovi livelli? JMP distribuirebbe quindi nuovamente queste esecuzioni sia come formazione che come convalida?
Grazie.
Distinti saluti
Kristian Bertelsen