venerdì 16 luglio 2021

Come il machine learning puo’ aiutare i geofisici nella predizione dei terremoti

 

Come residente della regione Abruzzo, una delle piu’ pericolose da un punto di vista sismico, e dopo aver vissuto il terremoto dell’Irpinia degli anni ottanta ho sperimentato sulla mia pelle la pericolosita’  di questo evento naturale che puo’ fare molti morti se ci trova impreparati.    

Se si riuscisse a prevedere quando avverra’ un terremoto, il popolo potrebbe prendere azioni preventive e si potrebbero salvare cosi potenzialmente molte vite. Con l’avvento del Machine Learning negli anni ottanta, i sismologi erano molto ottimisti e pensavano che prima o poi si sarebbe risolto il problema. Negli anni successivi purtroppo i sismologi hanno imparato che prevedere i terremoti e’ molto piu’ complicato di quanto pensavano a parte qualche dubbio risultato di scienza scadente come quello relativo al terremoto dell’Aquila o quelli riportati nel bel libro di Nate Silver “ The signal and the noise”.

Le onde generate da un terremoto sono composte da due tipi di onde: p-waves (onde di compressione) che viaggiano ad alta velocita’ e quindi meno dannose e le s-waves (onde di traslazione) che arrivano qualche secondo dopo le p-vawes e che generano i danni maggiori.





Rispetto agli anni ottanta il Machine Learning ha fatto molti passi avanti e c’e’ stato anche un aumento significativo dei dati raccolti sul campo e nei diversi laboratori del mondo; questo ha portato una nuova ventata di speranza di poter arrivare prima o poi alla previsione di questi eventi disastrosi.

In questo post cerco di descrivere proprio l’uso del machine learning nella modellizzazione di un set di dati pubblicati dai Laboratori di Los Alamos, ottenuti grazie ad un esperimento che cerca di mimare i terremoti reali.

L’esperimento e’ stato realizzato utilizzando  due presse idrauliche applicate a due lastre di acciaio con in mezzo uno strato granulare che allo stesso tempo viene spinto lentamente verso il basso. Dei sensori acustici catturano il suono generato dall’attrito del sistema generando in output un segnale digitale continuo (vedi immagine di seguito). Questo esperimento e’ una buona simulazione del movimento delle placche tettoniche vicino ad una linea di faglia, producendo dei terremoti ad un tasso  relativamente consistente. 



Il terremoto è un intenso scuotimento della superficie terrestre dovuto a un improvviso slittamento delle rocce nella crosta terrestre o a faglie vicino all'interfaccia tra le placche tettoniche. Il primo terremoto di cui si abbia notizia e’ quello verificatosi in Cina nel 1177 a.C. Il primo sismoscopio fu quello inventato dal filosofo cinese Chang Heng nel 132 d.C. Sebbene oggi il monitoraggio e la registrazione dei terremoti e’ un qualche cosa di ben sviluppato, non siamo ancora in grado di prevederli né di comprenderne la causa esatta. I terremoti tuttavia e le loro conseguenze sono tra gli eventi che di più hanno cambiato la vita nella storia dell'umanità. Le attività sismiche e le conseguenze dei disastri sono state la causa maggiore di  perdite di vite umane rispetto a tutti gli altri rischi naturali messi insieme negli ultimi due decenni, in quantro molti paesi si trovano in zone  sismicamente attive. L'approccio descritto in questo post combina il machine learning con metodi tipici delle serie temporali per stabilire  l'insieme di caratteristiche statistiche più adatte alla previsione del cosiddetto time to fail (TTF - il tempo rimanente prima di un sisma). Il database messo a disposizione dai Laboratori di Los Alamos consiste di due colonne e circa 630 milioni di righe.  Le due colonne del database hanno il seguente significato:

·   acoustic_data: il segnale acustico registrato in laboratorio durante l’esperimento;

·         time to failure TTF: il tempo rimanente in secondi prima che ci sia un terremoto.

 Qui di seguito alcune righe del database in oggetto visualizzate con il software JMP Pro della SAS con cui verranno effettuate tutte le analisi successive. 



Nei due grafici seguenti viene riportato l’andamento del segnale acustico e il time to fail TTF dell’intero esperimento. Ci sono 16 terremoti in totale con time to fail che vanno da circa 16 sec a pochi secondi. 



Allo scopo di alleggerire il lavoro della CPU del mio PC ho considerato solo lo 0.025% dell’intero database campionato in modo casuale per non perdere l’informazione principale contenuto in esso. Evidenziati in nero due terremoti, l’ottavo e undicesimo della sequenza con i dati ridotti.



I dati acustici mostrano oscillazioni complesse con ampiezza variabile. Subito prima di ogni terremoto si verifica un aumento dell'ampiezza dei dati acustici. Grandi ampiezze si ottengono comunque anche in momenti diversi nel tempo e non sempre esattamente prima di un sisma. Questo lo possiamo vedere nel seguente grafico che riporta il segnale acustico dell’ottavo terremoto; le ampie oscillazioni visibili prima del sisma non avvengono proprio all'ultimo momento. Ci sono treni di oscillazioni intense che precedono il terremoto principale e altri con picchi più piccoli che lo seguono. Quindi, dopo alcune piccole oscillazioni, si verifica il terremoto.



Qui lo zoom sulla parte finale dell’ottavo terremoto. Come si diceva le oscillazioni dopo l’evento sismico sono molto piccole. 

 




Stessa cosa prima del terremoto indicato qui di seguito con una freccia: si notano molti segnali con picchi bassi prima dell’evento sismico. Questi picchi sono il risultato di eventi di micro fratture che possono essere utilizzati per predire il Time to fail (TTF).  In generale piu’ il TTF e’ corto e piu’ i picchi acustici sono frequenti. Le caratteristiche statistiche del segnale acustico quindi possono essere utilizzate come predittori per il modello di machine learning che andremo a sviluppare. 



La varianza del segnale acustico e’ la feature piu’ importante anche se altri parametri statistici come la kurtosis e la skewness non possono essere trascurati. Qui di seguito l’analisi temporale dell’ottavo terremoto eseguita con il modulo di time series di JMP Pro.





Si vede chiaramente che quando il tempo di fallimento tendo a zero (ci approssimiamo quindi all’evento sismico) c’e’ un aumento della variabilita’ del segnale acustico.  




Ovviamente per la costruzione di un modello predittivo non e’ possibile usare il solo segnale acustico fornito dal laboratorio di Los Alamos. Bisogna costruire delle nuove feature a partire dal dato acustico. Quest’attivita’ va sotto il nome di feature engineering. Si tratta di costruire delle nuove colonne (predittori) che possano aiutare l’algoritmo a fare le sue predizioni. Essendo il segnale una serie temporale possiamo usare la tecnica della moving window. In parole semplici a partire da un segnale se ne costruisce un altro calcolando una particolare statistica all’interno di una finestra di dimensione fissata e che si muove rigidamente di uno step alla volta. Supponiamo di avere i seguenti valori: 1 2 3 4 5. Possiamo pensare di costruire una finestra di dimensione 3. Partendo da 1 la finestra ingloba i valori 2, 3 e 4. Nell’ipotesi che siamo interessati alla media il valore sara’ (1+2+3+4)/4=2.5. Poi la finestra viene spostata di 1 e i valori al suo interno saranno: 2 3 4 5. Ricalcoliamo la media che questa volta sara’ 3.5 e cosi via. La finestra a partire da un certo valore della serie puo’ prevedere sia un certo numero di dati prima che dopo.    

Sono state costruite un totale di 18 caratteristiche statistiche. Dieci  di queste sono il massimo, minimo, media, mediana, deviazione standard, varianza, curtosi, moda, range e range interquartile. Le restanti otto caratteristiche sono i percentili a diversi valori: 1%, 5%, 10%, 25%, 75%, 90%, 95% e 99%.

Di seguito i grafici di alcune feature statistiche riportate in funzione del TTF per l’ottavo terremoto. E’ evidente come alcune caratteristiche correlino con il TTF, come per esempio la standard deviation, skewness e kurtosis.  




Nel grafico seguente viene riportato l’andamento della varianza per gli ultimi quattro terremoti contenuti nel database. Si vede come per questi c’e’ un trend a crescere della varianza del segnale acustico quanto il TTF si avvicina a zero (terremoto). Comunque da notare che alcune volte sono presenti delle spikes anche prima che avvenga il terremoto. In effetti dobbiamo pensare che durante il movimento delle placche terrestri iniziano a formarsi delle micro fratture nella crosta terreste la cui lunghezza determina l’intensita’ delle spikes. Col procedere dello slittamento si creeranno sempre piu’ microfratture fino a quando non si formera’ la frattura principale che potra’ essere lunga anche diversi chilometri. E’ un vero e proprio effetto domino.



L’algoritmo di machine learning che si e’ deciso di usare e’ il Random Forest.  Vediamo un attimo di cosa si tratta. Definito Bootstrap Aggregation (o Bagging in breve), è un metodo cosiddetto ensemble. Si tratta cioe’ di una tecnica che combina le previsioni di più algoritmi di apprendimento automatico per fare previsioni più accurate rispetto a qualsiasi singolo modello. Il bagging rientra nella categoria dell’apprendimento Ensemble e il nome deriva dalla combinazione Bootstrap e Aggregation. Il bootstrap indica il campionamento casuale con rimpiazzo del dataset iniziale. Se come modello individuale si decide di usare un decision tree allora l’algoritmo prende il nome di Random Forest. Ciò significa che una foresta casuale combina molti alberi decisionali in un unico modello. Individualmente, le previsioni fatte dagli alberi decisionali potrebbero non essere accurate, ma combinate insieme, le previsioni saranno in media più vicine al target. Il risultato finale restituito da un algoritmo di Random Forest altro non è che la media del risultato numerico restituito dai diversi alberi nel caso di un problema di regressione, o la classe restituita dal maggior numero di alberi nel caso di problemi di classificazione.




Prima di iniziare la modellizzazione si e’ provveduto alla creazione delle nuove features. Per la dimensione della finestra usata per la costruzione delle moving statistics sono stati scelti diversi valori come indicato di seguito:  

Window size: 20, 50, 100, 150, 300, 500

 Le prestazioni della Random Forest hanno mostrato una sensibile dipendenza dall’estensione della finestra temporale come riportato dalle tabelle statistiche  create in JMP per diversi modelli di RF.


L’R2, una delle possibili metriche utilizzate per misurare la bonta’ di un algoritmo mostra un chiaro trend a crescere all’aumentare della dimensione della finestra temporale considerata per la costruzione delle engineering features. Per le analisi mostrate di seguito si e’ scelto una dimensione della finestra di +/-1000.   



Cosi facendo si e’ ottenuto un R2 di circa 96% avendo utilizzato 100 decison tree nella foresta, un minimum split per albero pari a 10 e un numero di termini non superiore a 20.  



 Qui  l’andamento del TTF reale (in blu) e quello predetto (in rosso).




 Assegniamo adesso dei colori diversi al time to fail (TTF): dal rosso al verde man mano che mancano sempre meno secondi all’evento sismico. La parte colorata in viola rappresenta il cosiddetto after shock cioe’ quando il sistema ormai ha subito la frattura. Di norma questa parte andrebbe tolta dall’analisi in quanto ormai il terremoto e’ avvenuto. Notare infatti come quasi tutti i punti viola nel grafico del time predetto rispetto a quello actual si dispongono al di fuori della retta di correlazione.



Eliminando i dati dell’after shock le prestazioni della random forest migliorano ulteriormente dando un R2 del 98% e come predittori piu’ importanti quelli riportati nella tabella seguente.



 
Ai primi posti abbiamo la standard deviation, i primi percentili, il minimo e il massimo e poi via via tutti gli altri. Considerando solo l’ottavo sisma possiamo vedere come esso evolve nel piano delle prime due componenti principali (PCA) che spiegano quasi il 70% dell’intera variabilita’ del sistema. Fino a pochi attimi prima del sisma il sistema si muove all’interno dello spazio identificato dall’ellisse di colore rosso. Nel momento della frattura principale il sistema fa un salto al di la dell’ellisse e si porta in una regione dello spazio mai visitata prima. Una volta rilasciata tutta la sua energia il sistema ritorna dove era partito e cioe’ all’interno dell’ellisse (seguire i colori del grafico per capire come evolve il terremoto). La parte verde indica quando avviene il terremoto mentre quella in viola indica il post terremoto. Questo andamento e’ vero per tutti i 16 terremoti contenuti nel database.  Il loading plot correttamente evidenzia un aumento dei valori di alcuni parametri quale il range, kurtosis, Skewness e varianza all’approssimarsi di un sisma.    


 

Qui viene riportata la sequenza del segnale acustico per i 16 terremoti del database iniziale.




Utilizzando una parte dei dati mai vista dal modello di Random Forest abbiamo eseguito la validazione dell’algoritmo necessaria per capire se il modello creato sta overfittando i dati. L’R2 medio ottenuto e’ di circa il 75% con una MAE di 2.18. Quest’ultimo indica il mean average error, cioe’ la somma del valore assoluto dei residui diviso il numero totale del campione. Come aspettato rispetto al data set usato come training le performance del modello sono inferiori. In questo caso abbiamo una differenza di circa il 22%. In definitiva il modello ha un Bias del 2% e una Variance del 22% che e’ decisamente ancora alta. In genere per ridurre la varianza ci sono diversi opzioni tra cui: 

 1. aumentare la dimensione del campione

 2.    riduzione della complessita’ del modello   


Poiche’ nel seguente articolo “Machine learning predicts laboratory earthquakes, Geophysical Res. Letters 2017” utilizzando sempre una Random Forest con un centinaio di features e’ stato raggiunto un R2 di 89% sul test set c’e’ da aspettarsi che l’alta variance del nostro modello sia dovuta al campione limitato utilizzato per evitare di impegnare troppo la CPU del PC gia’ messa a dura prova col campione molto piccolo utilizzato rispetto all’originale.

Comunque anche se il risultato del test set non e’ stato dei migliori le informazioni ottenute sono comunque valide. L’utilita’ dell’applicazione del machine learning nella previsione del TTF dei Labmoti (terremoti generati in laboratorio) infatti sta nella possibilita’ di identificare dei segnali sconosciuti che possono portare a nuove conoscenze sulla fisica delle faglie. Cosa che e’ chiaramente deducibile anche dai risultati ottenuti nel nostro caso, che  fanno vedere come le intensita’ dei precursori sismici possono essere cosi basse che spesso potrebbero non essere registrate o addirittura non identificate. In passato infatti questi segnali scambiati per rumore venivano eliminati di proposito introducendo cosi un bias umano che invece nel machine learning e’ stato superato. Anche se il lavoro da fare rimane ancora tanto nella previsione dei terremoti della crosta terrestre di sicuro il ruolo del machine learning sara’ sempre piu’ importante e stimolante.        


venerdì 23 aprile 2021

L’oracolo del cancro al seno

Il tasso di morte per carcinoma al seno nella popolazione femminile e’ molto alto (28% dei tumori femminili) e in Italia e’ la prima causa di morte nella fascia tra i 35 e 50 anni. Secondo la World Health Organization, il cancro al seno colpisce piu’ di 1.5 milioni di donne al mondo. La prima testimonianza di un cancro al seno e’ quella di una donna egizia del 1600 a.C. morta a causa di questa malattia. Contrariamente a quanto si pensa oggi il cancro non e’ una malattia del nostro secolo.  

 

 

Il rischio per una donna di ammalarsi di tumore al seno e’ del 10-12% e varia in base all’eta’:

·        fino a 49 anni à 2.4% (1 donna su 42)

·        tra i 50 e i 69 anni à 5.5% (1 donna su 18)

·        tra i 70 e gli 84 anni à 4.7% (1 donna su 21)

Data l’elevata incidenza ed il tasso di mortalita’ negli ultimi anni sono stati adottati degli screening ben precisi e definiti per identificare precocemente la patologia. Le evidenze scientifiche dimostrano come la diagnosi precoce sia l’azione piu’ efficace nella lotta contro il tumore della mammella. 

Le tecniche diagnostiche piu’ indicate per questa malattia sono l’ecografia, la mammografia, agoaspirato, TAC, PET e RNM. In caso di nodulo al seno, la diagnosi e’ quindi un primo fondamentale passaggio. Una tardiva o non corretta diagnosi della patologia potrebbe infatti portare, nei casi piu’ gravi al decesso della donna. Nonostante i progressi scientifici fatti in ambito medico purtroppo in assoluto non e’ possibile escludere che si possano verificare degli errori medico-sanitari anche durante la fase diagnostica. Questi errori per esempio possono derivare da difetti del macchinario, procedure non seguite scrupolosamente, scambio di analisi, esami mal letti o interpretati, mancato approfondimento con ulteriori visite o esami integrativi. Per questo motivo con l’avvento dell’intelligenza artificiale si e’ pensato di affiancare al medico degli oracoli digitali per riconoscere alcune forme di tumore. Numerosi ricercatori hanno pensato di applicare le tecniche proprie del machine learning per identificare il carcinoma al seno e non solo.

       

Immagine ecografica di un cancro al seno         Immagine mammografica di cancro al seno

 Negli ultimi anni, una grande quantita’ di dati relativi al tumore del seno sono stati collezionati e resi disponibili sul web in diveri siti (vedi come esempio UCI). Tra questi database c’e’ quello dell’Universita’ del Wisconsin utilizzato in questo post. E’ un classico database per l’applicazione di algoritmi di classificazione binaria per il machine learning. E’ composto da 569 esempi o istanze, 31 predittori o features e una risposta che in questo caso e’ una variabile binaria con due valori: benigno B e maligno M. Ci sono 357 casi di tumore benigno e 212 di tumore maligno. Le due classi sono abbastanza bilanciate con un rapporto del 60%.  

 

 Le variabili x (i predittori o features) sono state registrate utilizzando delle immagini digitali della massa tumorale catturata con la tecnica dell’ago aspirato. In effetti le variabili sono 10, ma diventano 30 in quanto e’ stato preso il valore medio, la standard deviation e il valore massimo. Si tratta di 10 misure tutte relative ai nuclei delle cellule tumorali (vedi immagine di seguito).  




Le features estratte dall’immagine sono: 

1.     Raggio di un nucleo (media di tutti i raggi, standard deviation e valore massimo)

2.     Perimetro di ogni nucleo mediato

3.     Area del nucleo (valore medio, std e valore max)

4.  Compattezza ottenuta combinando opportunamente l’area e il perimetro (P^2/A)

5.     Smoothness ottenuta facendo la differenza tra il raggio in un certo punto e il valore          medio dei primi vicini

6.     Concavita’ 

7. Punti di concavita’. Diversamente dalla concavita’ questo parametro determina quanti  punti di concavita’ ci sono.

8.     Simmetria misurata tracciando l’asse maggiore passante per il centro e poi facendo la differenza della lunghezza tra linee perpendicolari all’asse maggiore in entrambe le direzioni.

  9.  Dimensione frattale ottenuta approssimando la linea chiusa con la “linea di costa”            descritta da Mandelbrot

10. Texture ottenuta trovando la varianza dell’intensita’ della scala dei grigi nei pixels


Per questo studio e’ stato utilizzato JMP Pro 16 della SAS che contiene una serie di algoritmi di machine learning utilizzabili per scopi di classificazione supervisionata. Tra i modelli disponibili abbiamo: Decision tree, Random Forest, Boosted tree, Logical regression, Support Vector Machine, Naive Bayes, XGboost, kNN, Neural Network (per maggiori dettagli sui diversi  modelli di machine learning fare riferimeno al post “Alla scoperta delle leggi della fisica con il machine learning” su questo blog). Prima di iniziare, controlliamo le distribuzioni delle nostre features che risultano tutte leggermente skewed sulla destra (mostrano cioe’ una leggera coda verso gli alti valori). Non ci sono valori mancanti nel database e solo alcuni outliers.

 


Il training per questo dataset e’ stato fatto su 8 classificatori usando l’opzione 5-fold cross validation. Per stabilire il grado di accuratezza e l’efficacia di qualsiasi modello di machine learning e’ necessario eseguire una o piu’ valutazioni sugli errori che si ottengono con ogni previsione. In genere, dopo il training viene effettuata una stima dell’errore per il modello, meglio nota come valutazione dei residui. Si tratta della stima numerica della differenza tra la risposta prevista e quella originale, chiamata anche errore di addestramento (training error). Tuttavia questo non basta in quanto non da’ un idea di quanto il nostro modello riuscira’ a generalizzare in caso di nuovi dati. Per questo motivo viene utilizzata la valutazione incrociata. Essa consiste nella suddivisione dell’insieme di dati in k parti (5 nel nostro caso) di uguale numerosita’ e a ogni passo la k-esima parte dei dati viene usata come convalida, mentre la restante parte costituisce l’insieme di training (addestramento). In questo modo si allena il modello per ognuna delle k parti evitando problemi di overfitting (sovradattamento) ma anche di campionamento asimmetrico (distorsione) tipico della suddivisione dei dati in due sole parti. 

Per stabilire quanto un modello e’ bravo nella classificazione esistono diverse metriche. Quelle piu’ usate sono legate al concetto di matrice di confusione. La nostra risposta puo’ avere solo due possibili valori M e B. Quindi accoppiando le risposte del modello e quelle effettive possiamo avere la seguente matrice: 

 

FN rappresenta il numero di casi in cui il modello ha previsto Malignant e invece nella realta’ il tumore e’ Benign (si parla di falsi negativi). Viceversa per il caso FP (falsi positivi) che rappresenta i casi missing. Il rapporto tra la somma FN+FP e il numero totale di esempi TP+TN+FP+FN (dove TP e TN indica i totali positivi e negativi rispettivamente) e’ chiamato misclassification error ME da cui si ricava immediatamente l’accuratezza data da:

A=1-ME=1-((FN+FP)/(FN+FP+TN+TP))

Osserviamo che come ci si aspetta se l’errore e’ nullo allora l’accuratezza sara’ massima e cioe’ 1. Nel caso invece in cui l’errore e’ massimo e cioe’ 1 allora l’accuratezza del modello e’ pari a zero. Un’altra metrica e’ la Precisione P del modello che indica l’abilita’ di un classificatore di non etichettare un’istanza positiva che in realta’ e’ negativa.

P=TP/(TP+FN)

Altre metriche utilizzate da JMP Pro per i classificatori sono l’R2, il RASE e l’AUC. Trattandosi di un classificatore che lavora su dati categorici per la risposta ci si chiede come e’ possibile che JMP restituisca il valore del R2 che tutti associamo alle regressioni numeriche? E la stessa domanda nasce anche quando le X sono categoriche. Un algoritmo dopo tutto e’ una sequenza di operazioni matematiche. Ma come si fa a sommare due variabili nominali quali Benigno e Maligno?


Nell‘ambito del Machine learning si usa il cosiddetto algoritmo “one hot encoder”.  Nell’esempio dei colori della tabella qui sotto, la variabile ha 3 stati (red, blue e green) e quindi si creano altrettante variabili dummy con valori di 0 e 1.    

In questo modo e’ possibile calcolare il valore del R2 essendo adesso le variabili tutte numeriche. Allo stesso modo e’ possibile calcolare il cosiddetto RASE, cioe’ la radice quadrata del valore medio dell’errore (y-ya) al quadrato (ya e’ il valore effettivo e y quello previsto dal modello). L’AUC indica invece l’area al di sotto della curva ROC. Vediamo di cosa si tratta. In qualsiasi problema di classificazione, il modello genera per ogni record un valore di probabilita’ di appartenenza ad uno dei 2 gruppi. Per decidere quindi se un record appartiene ad una classe piu’ che ad un’altra, e’ importante stabilire un valore di soglia per la probabilita’. Ovviamente al variare di tale soglia cambiera’ l’output del modello e la relativa matrice di confusione. Per stabilire se un modello sta lavorando bene si puo’ utilizzare la curva di ROC. Sull’asse della x viene riportato il numero di falsi positivi (FP) o 1-SPE dove SPE=TN/(TN+FP)  e’ la cosiddetta Specificita’, mentre sull’asse delle y viene riportata la quantita’  TP/(TP+FN) che in modo indiretto e’ legata al numero di falsi negativi (quando FN e’ zero infatti questo rapporto vale 1). Il migliore modello di classificazione sara’ quello che ottiene FP=0 e FN=0, che nel piano della curva ROC corrisponde al punto x=0 e y=1. I due plot ROC seguenti si riferiscono al caso della rete neurale per il set di Training e di Validation. I colori rosso e blu indicano i due valori della classe di risposta: Benign e Malignant. L’AUC come indica l’acronimo e’ il valore dell’area al di sotto della curva ROC. Piu’ e’ prossimo ad 1 e meglio e’ la prestazione del modello.    




 

L’accuratezza di tutti i modelli testati con il comando Model Screening di JMP e’ ben al di sopra del 90%, il che significa che il massimo errore per mis-classification e’ minore del 10%. L’algoritmo del Neural Boosted addirittura mostra un errore del solo 1%. Non c’e’ che dire, l’oracolo digitale sembra fare delle ottime previsioni. Attenzione. Anche se nella lingua inglese non c’e’ una grossa differenza tra prediction e prevision (o forecast) questo non e’ vero in italiano. Nella nostra lingua la predizione e’ quella fatta da un mago che cerca di capire cosa accadra’ nel futuro aiutandosi con strumenti che di scientifico non hanno praticamente nulla (e quindi fallira’ miseramente). Al contrario la previsione e’ quella che cerca di capire cosa puo’ succedere utilizzando metodi scientifici (matematici, fisici, statistici) come la previsione del ritorno della cometa di Halley o la probabilita’ che il costo delle azioni Apple crescera’ nei prossimi giorni.   

Ritorniamo ai modelli testati. Il migliore e’ la rete Neurale Boosted. Ma cosa significa boosted? E’ una classe di modelli nati nel 1988 con l’idea che mettendo insieme piu’ modelli di apprendimento deboli si possa creare un modello piu’ forte (della serie che l’unione fa la forza). Si tratta di un modello iterativo (lavora in seriale) che stabilisce come collegare tra loro un insieme di weak learner per crearne uno strong. Anche se l’accuratezza raggiunta da questo modello e’ molto alta, il fatto che ci siano alcuni casi in cui abbiamo predetto che il cancro e’ benigno mentre invece e’ maligno non ci piace affatto, visto che si ha a che fare con le vite delle persone. Meglio caso mai  avere un Falso negativo (diciamo che e’ maligno ma in realta’ e’ benigno) che oltre alla paura non fara’ altri danni alla persona sottoposta alla diagnosi. C’e’ da dire comunque che nel Machine learning e’ possibile provare a penalizzare gli esempi che ricadono nella casella FN rispetto a quella FP. In JMP Pro questo puo’ essere fatto direttamente dal Model Screening utilizzando l’opzione Decision Thresholds. Questa permette di esplorare la soglia dei modelli per la classificazione binaria. C’e’ un report per ogni modello specificato dal metodo di validazione. 

 

Ogni report contiene un grafico della distribuzione delle probabilita’ previste, delle carte a barra per le diverse classificazioni e la matrice di confusione. Nelle barre la porzione in rosso e’ proporzionale all’errore di mis-classification. Spostando la linea nera al centro del grafico delle distribuzione si puo’ cambiare la soglia e cercare di diminuire il numero di falsi positivi rispetto a quelli negativi. Con la scelta operata nel nostro caso si e’ potuto ottenere un azzeramento dei Falsi positivi per le NN Boosted raggiungendo un’accuratezza del 100%.

 

Anche se in JMP le opzioni che vado a descrivere adesso vengono implementate automaticamente, in generale usando linguaggi come Python o R e le loro librerie, conviene prima di passare al training/test del modello di normalizzare le variabili X per esempio facendo in modo che tutti i predittori siano nel range 0-1 e che questi vengano trasformati con una funzione tipo logaritmo per cercare di eliminare la skewness  della distribuzione.  In definitiva i 5 steps piu’ importanti in ogni attivita’ di Machine learning sono:

1.   Data collection: si tratta dello step dove viene raccolto il materiale da dare in pasto agli algoritmi per trasformarlo in conoscenza utilizzabile. Nella maggior parte dei casi i dati devono essere combinati in una singola sorgente come un file testo, csv o excel. 

2. Data exploration/preparation: la qualita’ di qualsiasi progetto di machine learning dipende dalla qualita’ dei dati in ingresso. Quindi ogni qualvolta si parte col costruire un modello si devono pulire i dati dal rumore, eliminare quelli non necessari, e riempire le celle vuote del database (missing value). 

3. Model training: una volta che i dati sono stati prepararti si divide il set in training/validation/test e si fa partire la ricerca

4.   Model evaluation: poiche’ ogni machine learning tende ad essere biasato e’ importante valutare le prestazioni dell’algoritmo in termini di generalizzazione. Per fare questo si utilizzano diversi tipi di metriche a secondo che si tratta di un problema di regressione o di classificazione. 

5.  Model improvement: nel caso in cui siano necessarie prestazioni migliori si puo’ pensare di utilizzare delle strategie avanzate. Qualche volta basta cambiare il modello, o costruire dei nuovi predittori (feature engineering). Altre volte in caso di underfitting del sistema semplicemente raccogliere piu’ dati.             

 


http://www.wikio.it