La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

I modelli Predittivi Più comuni Specifici per talune applicazioni

Presentazioni simili


Presentazione sul tema: "I modelli Predittivi Più comuni Specifici per talune applicazioni"— Transcript della presentazione:

0 I modelli Predittivi Modelli ad Albero Modello di Previsione
Terminologia Vantaggi Svantaggi Criteri di Split Indicie di Gini Chi-quadro Entropia Riduzione Varianza Overfitting Parametri di limitazione espansione Pruning CrossValidation Modelli ad albero con R Rpart ConfusionMatrix Esercitazione 1 – 2 Ensemble learning RandomForrest

1 I modelli Predittivi Più comuni Specifici per talune applicazioni
Per sviluppare più modelli predittivi

2 Modelli ad Albero: Modello di previsione
Gli alberi di decisione costituiscono il modo più semplice di classificare degli “oggetti” in un numero finito di classi. Essi vengono costruiti suddividendo ripetutamente i records in sottoinsiemi omogenei rispetto alla variabile target. La suddivisione produce una gerarchia ad albero, dove i sottoinsiemi vengono chiamati nodi e, quelli finali, foglie. In particolare, i nodi sono etichettati con il nome delle variabili indipendenti, gli archi (i rami dell’albero) sono etichettati con i possibili valori della variabile, mentre le foglie dell’albero sono etichettate con le differenti modalità della variabile target.

3 Modelli ad Albero: Terminologia
Root Node = rappresenta il db di partenza che verrà diviso in due o più sottoinsiemi Splitting = è il processo attraverso il quale verrà suddiviso il db cosicché il nodo figlio sia più puro Decision Node/Sub_Node = sono i nodi in cui viene suddiviso il db Leaf = è il nodo finale Pruning = è il processo inverso rispetto allo splitting attraverso il quale vengono rimossi i Decision Node Branch = è un insieme di Decision Node e di Leaf Parent e Child Node = un nodo che è diviso in sub nodi è detto Parent i suoi sub Nodi Child

4 Modelli ad Albero: Vantaggi - Svantaggi
E’ facile da capire, la rappresentazione grafica è intuitiva Particolarmente utile nella fase di esplorazione dei dati per identificare le variabili più significative da inserire successivamente magari in un modello regressivo Non richiede una particolare attenzione nella pulizia dei dati, infatti non è particolarmente sensibile ad outlier e/o dati mancanti Possono essere utilizzate variabili categoriche e/o numeriche Non è un modello parametrico, non sono necessarie assunzioni relative alle distribuzioni delle variabili Svantaggi Se non si pone attenzione al numero dei Branch e/o dei Nodes il rischio di Over Fitting è elevato Non è particolarmente efficace se si suddivide la variabile continua in categorie Se la relazione tra descrittori e target è lineare meglio utilizzare modelli regressivi

5 Modelli ad Albero: Criteri di split - Indice di Gini
Gli algoritmi utilizzati nel processo di split sono molteplici e variano in funzione della tipologia di variabile dipendente, numerica o categorica Indice di Gini: utilizzato in presenza di variabili target Categoriche permette solo split binary valori maggiori indicano maggiore omogeneità nei gruppi creati è utilizzato nel metodo CART (Classification and Regression Tree) Step di calcolo si calcola l’indice di Gini per ciascun sub-node come (𝑝𝑟𝑜=1) 2 + (1−𝑝𝑟𝑜=1) 2 = 𝑝 2 + 𝑞 2 si pesano gli indici trovati rispetto alla numerosità del nodo

6 Modelli ad Albero: criteri di split - Indice di Gini
Supponiamo una popolazione della quale conosciamo il sesso, l’altezza e la classe di studio, vogliamo vedere come tali variabili sono correlate al fatto che pratichino il cricket Con riferimento alla variabile sesso, calcoliamo l’indice di Gini per le femmine = = 0.68 e per i maschi = 0.55 da cui l’indice di Gini per la variabile Sesso = 0.68*10/ *20/30 = 0.59 Replicando il medesimo calcolo per la variabile classe di studio si ottiene = ?? 0.51 Per cui la variabile che garantisce una maggiore uniformità e quindi quella scelta tra le due è la variabile Sesso

7 Modelli ad Albero: criteri di split - Chi quadro
utilizzato in presenza di variabili target Categoriche permette NON solo split binary valori maggiori indicano maggiore significatività delle differenze tra il nodo principale e i sub-node individuati è utilizzato nel metodo CHAID (Chi Square Automatic Interaction Detector) Step di calcolo si calcola il valore Chiquadro come (𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑧𝑎 𝑂𝑠𝑠𝑒𝑟𝑣𝑎𝑡𝑎−𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑧𝑎 𝐴𝑡𝑡𝑒𝑠𝑎) 2 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑧𝑎 𝐴𝑡𝑡𝑒𝑠𝑎 Vengono sommati I valori trovati per ciascun nodo di split

8 Modelli ad Albero: criteri di split - Chi quadro
Riprendendo l’esempio precedente Per il nodo sesso la Frequenza osservata dei successi (giocano a cricket) è di 2/10 mentre quella di insuccesso (non giocano a cricket) è 8/10, la Frequenza attesa è quella del Parent Node da cui i nodi Maschio e Femmina originano, quindi 5/10 si per successo che insuccesso Di seguito i calcoli per la variabile Sesso e Classe da cui emerge ancora la variabile Sesso

9 Modelli ad Albero: criteri di split - Entropia
Se consideriamo tre insiemi come quelli riportati nella figura seguente E’ evidente che individuare l’insieme più facile da descrivere Quindi possiamo definire una scala di «purezza» da C più puro a A meno puro Possiamo allora dire che più un insieme è puro meno informazioni sono necessarie per descriverlo, quindi possiamo dire che l’informazione rappresenta una misura del grado di «disordine» di un insieme (Entropia) In particolare se un insieme è perfettamente ordinato il grado di Entropia è zero, mentre se è diviso equamente 50/50 l’entropia vale 1 Quindi: Entropia = -p* 𝐿𝑜𝑔 2 *p + q* 𝐿𝑜𝑔 2 *q

10 Modelli ad Albero: criteri di split - Entropia
Step di calcolo Calcolare il grado di Entropia per il Parent Node Calcolare il grado di Entropia per ciascun Sub_Node dello split e calcolare la media pesata per il numero delle osservazioni di tutti i Sub Node dello split Ritornando al nostro esempio: Entropia Parent Node = -(15/30) log2 (15/30) – (15/30) log2 (15/30) =1, nodo Impuro Entropia Femmine = -(2/10) log2 (2/10) – (8/10) log2 (8/10) = 0.72 Entropia Maschi = -(13/20) log2 (13/20) – (7/20) log2 (7/20) = 0.93 Entropia Sesso = 0.72*(10/30) *(20/30) = 0.86 Operando in modo analogo sulla variabile Classe si ottiene un valore di Entropia = 0.99

11 Modelli ad Albero: criteri di split – Riduzione della Varianza
Gli indicatori descritti vengono utilizzati quando la variabile target è categorica, nel caso in cui abbiamo una variabile continua l’indicatore più usato è la capacità dello split di ridurre la varianza nei nodi (minore varianza = maggiore omogeneità) Step di calcolo Calcolare la varianza per ciascun nodo Calcolare la varianza per ciascun split come la media pesata per il numero delle osservazioni di tutti i Sub Node dello split Per usare i dati del nostro esempio assumiamo la variabile target numerica 0-1 Per il nodo Roote abbiamo Media = 0.5 e per la varianza  ((1-0.5)^2+(1-0.5)^2+15 volte e (0-0.5)^2+(0-0.5)^2+…15 volte) / 30 = (15*(1-0.5)^2+ 15*(0-0.5)^2)/30 = 0.25 Femmine: Media = (2*1+8*0)/10=0.2 e Varianza = (2*(1-0.2)^2+8*(0-0.2)^2) / 10 = 0.16 Maschi: Media = (13*1+7*0)/20=0.65 e Varianza = (13*(1-0.65)^2+7*(0-0.65)^2) / 20 = 0.23 Varianza per Split Sesso = (10/30)* (20/30) *0.23 = 0.21 Classe IX: Media = (6*1+8*0)/14=0.43 e Varianza = (6*(1-0.43)^2+8*(0-0.43)^2) / 14= 0.24 Classe X: Media = (9*1+7*0)/16=0.56 e Varianza = (9*(1-0.56)^2+7*(0-0.56)^2) / 16 = 0.25 Varianza per Split Classe = (14/30)* (16/30) *0.25 = 0.25

12 Modelli ad Albero: Overfitting
Uno dei problemi con i modelli ad Albero è quello dell’overfitting. Se non si pongono limiti il modello calcolerà un albero con una capacità predittiva del 100%, sul file di traning, infatti potrebbe arrivare a foglie con una sola osservazione E’ possibile intervenire in due modi: Limitare l’espansione dell’albero Potando (Pruning) l’albero

13 Modelli ad Albero: Overfitting - limitazione espansione dell’albero
Max depth: definisce il numero massimo di rami Max_features: definisce il numero massimo di caratteristiche da considerare per ogni split a<1 a>=1 100 70 b>10 b<=10 30 Min Sample split: definisce il numero minimo di osservazioni che un nodo deve contenere per poter essere diviso Min Sample leaf : definisce il numero minimo di osservazioni che deve contenere un nodo terminale

14 Modelli ad Albero: Overfitting - limitazione espansione dell’albero
Minimum sample: numero minimo di osservazioni che un nodo deve contenere per poter essere diviso, valori troppo alti potrebbero però limitare la capacita predittiva del modello, la cross validation aiuta al caso (vedi oltre) Minimum sample for leaf: analogo al precedente ma riferito ai nodi terminali. E’ utile un numero basso nel caso di campioni NON bilanciati Maximum depth: massima profondità dell’albero, anche in questo caso la cross validation agevola nell’individuazione del livello ottimale Maximum number of terminal node: può essere specificata al posto della precedente. Con alberi binari (ogni nodo può essere diviso solo i 2 sotto nodi) una profondità n produce al massimo 2 𝑛 rami Maximum features to consider: può essere definito in modo casuale. Una regola «empirica» può essere la radice quadrata delle caratteristiche disponibili

15 Modelli ad Albero: Overfitting – Pruning (Potatura)
L’approccio consiste nel verificare la migliore divisione ed espanderla fino al raggiungimento dei parametri di espansione (slide precedente) Consideriamo la macchina gialla, potete continuare in coda o passare le due macchine avanti e aspettare l’opportunità di ritornare a destra. Nel primo caso si avrà un vantaggio solo nel breve, accelero per pochi metri poi necessariamente sarò superato dalle macchine sulla coda di destra

16 Modelli ad Albero: Overfitting – Pruning (Potatura)
L’albero in figura A è l’albero completo generato considerando i limiti di espansione prefissati Tra parentesi il numero di errori di classificazione per ciascun nodo/foglia, quali foglie potremmo togliere senza peggiorare la performance dell’albero partendo dalle foglie in basso a sinistra? Le foglie 4 e 5 non aggiungono nulla rispetto alla foglia 3 che già ha 0 casi di errata classificazione Waikato University – Eibe Frank

17 Modelli ad Albero: Overfitting – Pruning (Potatura)
Le stesse considerazioni si posso fare per le foglie 7 e 8 rispetto al nodo 6. Sono possibili altre potature? Infine le foglie 10 e 11 non contribuiscono in nulla in termini di errore di classificazione rispetto al nodo 9

18 Modelli ad Albero: Split – Cross Validation
Per valutare l’opportunità o meno di «potare» o meno un nodo sono da considerare due aspetti: complessità e errore La complessità è data dal numero di foglie dell’albero L’errore dalla differenza tra il valore previsto e la previsione Al fine di stabilire però tale errore è opportuno «validare» la stima ottenuta, infatti per esempio l’errore che troviamo nel nodo 3 (0) è ottenuto in fase di costruzione del modello che ha proprio come obiettivo la minimizzazione dell’errore stesso. A tal fine si procede ad una stima dell’errore attraverso la Cross Validation In estrema sintesi la stima dell’errore è fatta NON su tutte le osservazioni del nodo ma estraendo casualmente con ripetizione n campioni di osservazioni e calcolando l’errore come la media degli errori fatti in ciascun «esperimento»

19 Modelli ad Albero: il packages rpart in R
Consideriamo il package rpart di R, rpart(formula, data, weights, subset, method, model, x, y, parms, cost, minsplit=20, minbucket=round(minsplit/3), cp=0.01, xval=10, maxdepth=30, ...) formula = specifica il modello data = è il dataset weights = per inserire eventuali pesi delle osservazioni subset = se si vuole considerare solo una parte del dataset method = anova/poisson/exp per modelli regressivi class per modelli di classificazione parms = permette di specificare parametri diversi legati al method per class: prior (specifica eventuali distribuzioni a priori delle osservazioni), loss (matrice costi/ricavi), split (Gini o information(Entropia) per indicare come scegliere lo split ottimale) model, x,y per default FALSE se attivate arricchiscono il risultato di rpart rispettivamente di una copia del dataframe, delle sole variabili predittive, della variabile dipendente

20 Modelli ad Albero: il packages rpart in R
Consideriamo il package rpart di R, (parametri avanzati) cost = permette di attribuire un costo a ciascuna variabile indipendente, la scelta della variabile come predittore non è solo legata alla sua intensità di split ma è ponderata rispetto al suo costo (per esempio di reperimento, ma anche costi alti per variabili con misurazione meno attendibile) minsplit (20) e minbucket (7) = permettono di «limitare» la crescita dell’albero in particolare il primo specifica il numero minimo di osservazioni che un nodo deve avere per poter essere splittato, il secondo il numero minimo di osservazioni che un nodo figlio deve contenere. Generalmente minibuket=miniplsit/3 o miniplit=minibucket*3 cp(0.01) = Un valore di 0.01 implica che split che non permettono miglioramenti dell’impurezza almeno del 1% sono da non considerare maxdepth(30) = profondità massima dell’albero xval(10) = indica il numero di cross validation da considerare

21 Modelli ad Albero: ConfusionMatrix
Caricando la library (caret) abbiamo la funzione confusionMatrix Reale Previsione Evento Non Evento A B C D Reale Previsione Evento Non Evento 150 49 19 95 Accurancy = (A+D)/(A+B+C+D) Kappa = confronta i risultati del modello rispetto ad Probabilità di corretta classificazione = (150+95)/313 = 0.783 Probabilità di «concordanza casuale»: Probabilità Evento Reale = 169/313 = 0.539 Probabilità Evento Previsto = 199/313 = 0.635 Probabilità congiunta Evento, Reale e Previsto = 0.539* = 0.343 Probabilità congiunta NON Evento, Reale e Previsto = ( )*( ) = 0.168 La Probabilità di concordanza = = 0.51 Kappa = ( )/(1-0.51) = 0.557 Mcnemar's Test P-Value = se significativo posso rifiutare l’ipotesi che Reale e Previsto SONO correlati, quindi il modello è buono NO INFORMATION RATE = tanto più Accurancy è maggiore meglio performa il modello (attenzione a Eventi non bilanciati..)

22 Modelli ad Albero: ConfusionMatrix
Caricando la library (caret) abbiamo la funzione confusionMatrix Sintassi nome<-confusionMatrix(modello, dataframe, positive=‘’ valore dell’evento) Reale Previsione Evento Non Evento A B C D Reale Previsione Evento Non Evento 150 49 19 95 Accurancy = (A+D)/(A+B+C+D) Kappa = confronta i risultati del modello rispetto ad Probabilità di corretta classificazione = (150+95)/313 = 0.783 Probabilità di «concordanza casuale»: Probabilità Evento Reale = 169/313 = 0.539 Probabilità Evento Previsto = 199/313 = 0.635 Probabilità congiunta Evento, Reale e Previsto = 0.539* = 0.343 Probabilità congiunta NON Evento, Reale e Previsto = ( )*( ) = 0.168 La Probabilità di concordanza = = 0.51 Kappa = ( )/(1-0.51) = 0.557 Mcnemar's Test P-Value = se significativo posso rifiutare l’ipotesi che Reale e Previsto SONO correlati, quindi il modello è buono NO INFORMATION RATE = tanto più Accurancy è maggiore meglio performa il modello (attenzione a Eventi non bilanciati..)

23 Modelli ad Albero: ConfusionMatrix
Reale Previsione Evento Non Evento A B C D Sensitivity = A/(A+C) quanti Eventi colgo sul totale degli Eventi Specificity = D/(B+D) quanti NON Eventi colgo sul totale dei NON Eventi Balanced Accuracy = (sensitivity+specificity)/2 Prevalence = (A+C)/(A+B+C+D) quanti sono gli Eventi rispetto a tutte le osservazioni PPV = Eventi correttamente classificati su totale Eventi Previsti = A/(A+B) NPV = NON Eventi correttamente classificati su totale NON Eventi Previsti = D/(C+D) Detection Rate = Eventi correttamente classificati su totale Eventi = A/(A+B+C+D) Detection Prevalence = Eventi previsti su totale Eventi = (A+B)/(A+B+C+D)

24 Modelli ad Albero: Esempio – Lettura Dati
Facciamo esempio, consideriamo codice primo_ese_alberi.r (è UN FILE TXT) Consideriamo il file dell’esercitazione con la Regressione, la direzione dell’azienda tessile vuole conoscere la propensione al riacquisto di ogni cliente, con l’assegnazione della relativa probabilità

25 Modelli ad Albero: Esempio – Il Modello
Le prime due variabili non sono necessarie, come possiamo procedere?: nuovo_dataframe <- data.frame(training[,2:37]) oppure nuovo_dataframe <- data.frame(training[,-c(1,2)]) identificare il dataframe come training[,-c(1,2)] o training[,2:37] Dobbiamo ricodificare con stringa la variabile Target (SEMPRE PER UTILIZZARE RPART) Naturalmente le medesime operazioni vanno fatte sul dataframe di testing…. Per ordine possiamo cancellare dal workspace i dataframe se abbiamo utilizzato l’opzione A Costruiamo il modello predittivo ad Albero albero <- rpart(Target1 ~., Dipendete con tutte le altre come predittive data=train1, nome data frame con i dati method = "class", metodo class per variabile Target discreta xval=10, considerare 10 crossvalidation maxdepth=10, massimo 10 rami cp=0.01, almeno un miglioramento del 1% per dividere il nodo parms = list(split = 'gini')) criterio di splitting Gini

26 Modelli ad Albero: Esempio –Risultati
Plot albero e albero$frame

27 Modelli ad Albero: Esempio – Cross Validation
Verifichiamo come ha lavorato la crossvalidation evidenziando il «guadagno» ad ogni passo

28 Modelli ad Albero: Esempio_Importanza Variabili
Importanza delle variabili varImp(albero) ci fornisce l’elenco delle variabili e relativa importanza, per farne un grafico dobbiamo creare un dataframe con dentro due colonne, una con i valori dell’importanza per ciascuna variabile e una l’importanza imp<-as.data.frame(varImp(albero)) imp ha 1 solo variabile Overall e le righe si chiamano come le variabili imp$var <-rownames(imp) aggiungiamo una colonna prendendo i valori dai nomi delle righe names(imp)[names(imp)=="Overall"] <- "imp" rinominano la variabile Overall come imp rownames(imp) <- NULL cancelliamo i nomi delle righe imp<-imp[ order(imp$imp),] ordiniamo le osservazioni in ordine crescente di importanza o decrescente imp<-imp[ order(-imp$imp),] Definiamo i parametri per il grafico par(las=2) METTI le label perpendicolari all'asse par(mar=c(5,13,1,2)) gestione margini sotto,sin,sopra,dx Costruiamo il grafico barplot(imp$imp, horiz=TRUE, names.arg=imp$var, cex.names=0.7)

29 Modelli ad Albero: Esempio_Entropia
Per default il pakage rpart in presenza di variabili target discrete utilizza l’indice di Gini per valutare la divisione del nodo proviamo a modificare l’opzione albero_E <- rpart(Target1 ~., data=train1, method = "class", xval=10, maxdepth=10, cp=0.01, parms = list(split = 'information')) indichiamo come metodo Entropia Confrontiamo i due risultati


Scaricare ppt "I modelli Predittivi Più comuni Specifici per talune applicazioni"

Presentazioni simili


Annunci Google