In una recente edizione di Technically Speaking , abbiamo visto come incorporare variabili derivate dal text mining in un modello predittivo al fine di migliorare le prestazioni del modello. (Se non hai guardato la presentazione, potresti volerlo fare prima di continuare a leggere.) Il caso di studio si è concentrato più sul text mining che sulla modellazione predittiva, quindi esaminiamo ora due passaggi principali della modellazione che non sono stati discussi: vale a dire, validare il modello e valutare nuove osservazioni.
Convalida del modello
Nella modellazione predittiva, è fondamentale testare l'accuratezza del modello prima di utilizzarlo per generare previsioni. Vogliamo garantire che il nostro modello non sia "overfit", acquisendo accuratamente i dati su cui è stato addestrato ma generando previsioni imprecise per dati che non ha mai visto prima. Da qualche tempo circola su Internet un fantastico meme che cattura il concetto di overfitting.

Un modo per verificare l'eventuale overfitting è mettere da parte o "tenere fuori" un sottoinsieme dei nostri dati, addestrare il modello sui dati rimanenti e quindi testare il modello sull'insieme di controllo. Misuriamo le prestazioni di previsione del modello sia sui dati di addestramento che su quelli di controllo e, se notiamo un forte calo di precisione dall'addestramento ai set di test, abbiamo prove che il nostro modello è eccessivo.
In realtà abbiamo utilizzato questa procedura di convalida degli holdout durante la creazione del modello Bootstrap Forest nel caso di studio, anche se l'abbiamo sorvolata. Di seguito è riportata una tabella delle misure di adattamento del modello dalla procedura di convalida. JMP fornisce una serie di misure lungo le quali confrontare le prestazioni dell'allenamento e del set di test (se sei curioso, leggile Qui ); nella presentazione abbiamo visto Entropy RSquare e Tasso di classificazione errata per il gruppo di test. Nessuna delle misure mostra un forte calo delle prestazioni dall'allenamento al test (anche se ci sono alcuni lievi cali su un paio di misure, il che non è insolito), quindi concludiamo che il nostro modello non è eccessivo.

Potresti notare una cosa: anche in questa tabella c'è una colonna “Convalida”. Di cosa si tratta? In realtà, qui dividiamo i nostri dati in tre sottoinsiemi: formazione, convalida e test. Nel nostro modello Bootstrap Forest, il set di addestramento viene utilizzato per trovare le migliori suddivisioni in ciascun albero decisionale, mentre il set di convalida viene utilizzato per decidere quando interrompere la creazione di nuove suddivisioni in ciascun albero e quando interrompere la creazione di nuovi alberi. Cioè, l'algoritmo di adattamento del modello continua a funzionare finché ogni nuova suddivisione o albero comporta un miglioramento delle prestazioni sul set di convalida. Una volta che le prestazioni del set di convalida diminuiscono, l'algoritmo si arresta. (Ricordate la statistica Entropia RSquare? Questa è la statistica di convalida utilizzata in questo processo.) Una volta interrotto l'algoritmo, l'accuratezza del modello risultante viene valutata utilizzando il set di test. In JMP Pro , tutto questo avviene automaticamente specificando una Colonna di Validazione nella finestra di specifica del modello, come hai visto in la presentazione .
Non tutti i modelli richiedono una convalida in tre parti come questa. È necessario solo per i modelli che utilizzano una procedura di adattamento iterativo e un sottoinsieme di dati separato (il set di convalida) per decidere quando interrompere l'adattamento. Per i modelli che non implicano una procedura di adattamento iterativa – ad esempio la regressione logistica, che avremmo potuto utilizzare qui – sono necessari solo training e set di test.
JMP Pro offre un modo semplice per dividere i nostri dati per la convalida del modello. Abbiamo utilizzato l'utilità Crea colonna di convalida, che esegue un campionamento casuale o pseudocasuale (senza sostituzione) sui nostri dati per creare ciascun sottoinsieme, con i sottoinsiemi registrati in una colonna di convalida nella nostra tabella di dati.

Qui abbiamo utilizzato il campionamento casuale stratificato per creare i nostri sottoinsiemi, come spiegato nel paragrafo nella parte superiore del secondo screenshot. C'era un forte squilibrio in alcune delle nostre variabili categoriali e volevamo evitare una situazione in cui, ad esempio, poche o nessuna delle violazioni aggravate finiva nel set di test. Ciò sarebbe problematico, perché dobbiamo vedere come si comporta il modello in caso di violazioni aggravate per ottenere una misura valida dell'accuratezza del modello.
Puoi vedere nel rapporto interattivo sulla distribuzione di seguito che abbiamo una rappresentazione corrispondente di ciascuna colonna di stratificazione nei nostri tre sottoinsiemi di dati. Con quasi 40.000 righe di dati, c'è una discreta possibilità che saremmo andati bene senza usare la stratificazione, ma non è stata una cattiva idea andare sul sicuro. La stratificazione è una delle numerose procedure di campionamento pseudocasuale che l'utilità Make Validation Column può implementare (vedere Qui per più).

L'utilità Crea colonna di convalida ha riportato una colonna denominata "Convalida" nella nostra tabella di dati (che è disponibile per il download nella pagina di presentazione dal punto di vista tecnico) e l'abbiamo quindi inserita nella piattaforma Bootstrap Forest per attivare il processo di convalida. Non abbiamo trovato prove di overfitting, quindi supponendo che siamo a nostro agio con l'accuratezza complessiva del modello, siamo pronti a usarlo per generare previsioni per ("punteggio") nuove osservazioni.
Segnare nuove osservazioni
Immaginiamo di avere un gruppo di violazioni del codice edilizio appena emesse e di voler assegnare a ciascuna una probabilità di sanzione finanziaria, che utilizzeremo per ponderare ogni importo di sanzione imposta nelle nostre proiezioni finanziarie. Ad esempio, una sanzione imposta di $ 1.000 per una violazione con una probabilità di sanzione pari a 0,7 comporterebbe un pagamento previsto di $ 700. Naturalmente, alla fine l'intervistato pagherà $ 1.000 o $ 0, ma in media, per molte violazioni, la somma delle nostre proiezioni dovrebbe avvicinarsi alle nostre entrate finali (speriamo). Otteniamo le probabilità di penalità dal nostro modello Bootstrap Forest, ma quel modello ha preso come input i punteggi dell'analisi degli argomenti. Quindi dobbiamo eseguire le nostre nuove violazioni attraverso entrambi i modelli. Questa non è una pratica insolita, utilizzare l'output di un modello come input per un altro.
JMP possono restituire modelli come formule di colonna nella tabella dati originale (sotto le opzioni del triangolo rosso nelle piattaforme di modellazione) e verranno eseguiti su tutti i nuovi dati che aggiungiamo alla tabella. Per assegnare un punteggio alle nuove osservazioni, aggiungiamo semplicemente le nuove violazioni alla nostra tabella e i punteggi degli argomenti e le probabilità di penalità vengono calcolati automaticamente dalle formule delle colonne. Creiamo quindi una nuova formula di colonna che moltiplica le probabilità di sanzione per gli importi della sanzione applicata e otteniamo i pagamenti previsti. Di seguito abbiamo proiezioni per 1.000 nuove violazioni. Prevediamo che questi ci consentiranno di guadagnare circa 1,84 milioni di dollari, anche se circa un terzo di tale totale è rappresentato solo dai 100 maggiori pagamenti previsti in quella coda positiva. L'accuratezza della nostra proiezione dipenderà in gran parte da ciò che accadrà con tali violazioni.
(A parte: abbiamo descritto il metodo "punta e clicca" per assegnare un punteggio alle osservazioni, ma il punteggio potrebbe essere facilmente automatizzato tramite script in JSL (JMP Scripting Language). Il modello potrebbe anche essere distribuito al di fuori di JMP in un linguaggio come Python o JavaScript, con la capacità di JMP Pro di scrivere codice di punteggio in altri linguaggi.)
E questo evidenzia forse la domanda più importante di tutte: quanto sono buone le nostre proiezioni, davvero? Disponiamo di statistiche adeguate come Entropy RSquare per acquisire le prestazioni del modello, ma ciò che noi Veramente preoccuparsi è l’accuratezza della proiezione finanziaria. In pratica, lo avremmo valutato come parte della fase di costruzione del modello generando una proiezione delle entrate per il nostro set di test e confrontandola con le entrate effettive che abbiamo osservato. Non lo abbiamo fatto qui perché, sfortunatamente, i dati disponibili non contenevano gli importi delle sanzioni inizialmente imposte, ma solo gli importi finali dopo la sentenza. (Nell'esempio del punteggio sopra, abbiamo semplicemente immaginato alcuni importi di penalità inizialmente imposti a scopo esplicativo.)
Un pensiero d'addio
Anche se siamo arrivati al nostro obiettivo – un modello che assegna probabilità di sanzioni pecuniarie a nuove violazioni – un progetto come questo non è mai stato veramente realizzato. Nel corso del tempo, potrebbero emergere nuovi tipi o tendenze di violazioni, nuove politiche potrebbero alterare il rapporto tra le caratteristiche della violazione e le penalità, oppure le probabilità di pagamento delle penalità potrebbero semplicemente cambiare nel tempo a causa di fattori non misurati come la capacità di applicazione o l’indulgenza. Le tendenze nel tempo nel grafico sottostante potrebbero suggerire quest’ultima ipotesi. (La larghezza della linea rappresenta le violazioni totali per anno, il che rende chiaro che non disponiamo ancora di dati sufficienti nel 2020 per fidarci dell’improvviso aumento di quest’anno.)

Per molte possibili ragioni, il nostro modello potrebbe diventare meno accurato col passare del tempo. Dovremmo riadattare periodicamente i nostri modelli Topic Analysis e Bootstrap Forest, incorporando i dati più recenti (e magari scartando quelli più vecchi) per garantire che le nostre previsioni rimangano accurate.