Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica elaborato di laurea Ensemble Learning Anno Accademico 2015-2016 relatore Ch.mo prof. Carlo Sansone candidato Luigi Palermo matr. N46001660 Alla mia famiglia e a chi mi ha donato molto piu’ di nome e cognome Contents 1 Introduzione 1 2 Ensemble Learning 2.1 Generalita’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Metodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 4 3 Bagging 3.1 Bias e varianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 7 4 Randomization 9 4.1 Random forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2 Rotation forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5 Boosting 11 5.1 AdaBoostM1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.2 Vantaggi e svantaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 6 Stacking 15 6.1 Cross-validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.2 Funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 7 Conclusioni 19 Bibliography 21 i 1 Introduzione La creazione di macchine in grado di impossessarsi delle capacita’ cognitive e selettive proprie dell’uomo e’ senz’altro una sfida ambiziosa quanto affascinante di cui si occupa l’intelligenza artificiale, la cui valutazione viene effettuata in relazione alle capacita’ e alle prestazioni; non e’ dunque necessario simulare il comportamento del cervello umano, bensi’ e’ richiesta un’emulazione selettiva nella produzione dei risultati . In sintesi, una macchina dotata di intelligenza artificiale mira utopisticamente ad immedesimarsi in un essere umano. Su tale concetto si basa il Test di Turing, ideato nel lontano 1950 e che ancora oggi non e’ stato superato consistentemente da nessun calcolatore, il cui esempio viene espresso dal matematico britannico (da cui prende il nome) attraverso il “gioco dell’imitazione”, ossia un paradigma che ci permette di giudicare l’intelligenza di un calcolatore. Il test in questione pone un terminale al centro, un interrogatore fisico da un lato e da quello opposto una macchina ed un’altra persona fisica che forniscono alternativamente risposte a quesiti dell’interrogatore stesso; qualora quest’ultimo non dovesse essere in grado di distinguere se tali risposte provengano da una mente umana oppure siano prodotte da un’ intelligenza artificiale allora la macchina potra’ definirsi pensante. L’intelligenza artificiale e’ dunque una disciplina che studia la riproducibilita’ di complessi processi mentali mediante l’uso di calcolatori e rivolge particolare attenzione a come questi ultimi percepiscono l’ambiente esterno, a come interagiscono con esso, in che modo sono in grado di apprendere e risolvere problemi, elaborare informazioni e conseguire decisioni. Di grande rilievo risulta essere l’attivita’ di apprendimento, che permette di accrescere le conoscenze della macchina e di apportare dei cambiamenti adattivi, affinche’ lo svolgimento del processo decisionale in un epoca successiva risulti piu’ efficiente. Pertanto e’ importante la realizzazione di un apprendimento di tipo induttivo oltre che deduttivo, ovvero un processo che partendo da una collezione di esempi riguardanti una determinata sfera d’interesse perviene alla formulazione di un’ipotesi in grado di predire esempi futuri. La difficolta’ concettuale nella formulazione di un’ ipotesi consiste nell’impossibilita’ di stabilire se essa e’ una buona approssimazione della funzione che deve emulare o meno, ma e’ possibile trarre considerazioni di tipo qualiitativo, per cui risultera’ efficiente un’ipotesi che sara’ in grado di effettuare una buona generalizzazione (quindi sapra’ predire nel modo giusto esempi che non ha riscontrato ancora). Inoltre e’ possibile pervenire alla formulazione di piu’ ipotesi, con capacita’ predittiva simile, tutte consistenti; in tal caso per decidere quale utilizzare si fa riferimento al rasoio di Occam, un principio metodologico che ci fa preferire come scelta ottimale la soluzione (in questo contesto l’ipotesi) piu’ semplice. 1 Chapter 1 Introduzione Una sostanziale differenza tra inferenza deduttiva e induttiva e’ che la prima garantisce correttezza logica, in quanto non altera la realta’ d’interesse, mentre la seconda puo’ tendere ad un’eccessiva generalizzazione e dunque compiere dei processi selettivi errati. I sistemi di intelligenza artificiale trovano riscontro in un vasto dominio di applicazioni riguardanti un’elevata quantita ed eterogeneita’ di settori, dall’interpretazione del linguaggio naturale, ai giochi, alla dimostrazione di teoremi matematici, alla robotica. Inoltre i programmi di apprenimento hanno grossa rilevanza per quanto concerne il Data Mining, ovvero l’estrazione di dati e conoscenze a partire da un enorme patrimonio informativo mediante metodi automatizzati. Per riprodurre attivita’ tipiche del cervello umano, quali il riconoscimento di forme e figure, l’interpretazione del linguaggio e la percezione dell’ambiente in maniera sensoriale sono state create le reti neurali, con la finalita’ di simulare al calcolatore la composizione del cervello animale. Il primo percettrone, un modello in grado di accrescere la conoscenza tramite esempi, fu proposto da Rosenblatt poco piu di mezzo secolo fa; esso descriveva il comportamento di un neurone, il quale elaborava la somma pesata dei suoi ingressi producendo un uscita pari a 0 se tale somma era minore di una determinata soglia (controllabile), in caso contrario presentava un uscita pari a 1. Di conseguenza il processo di apprendimento consisteva nell’apportare delle modifiche ai pesi ed era do tipo “supervisionato”, poiche’ al percettrone erano presentanti gli ingressi e le risposte desiderate. Ma presto furono evidenziati i limiti di tale struttura, in quanto fu dimostrata l’impossibilita’ di risolvere attraverso di essa problemi le cui soluzioni non erano linearmente separabili, ragion per cui la ricerca in questo settore visse una fase di stallo finche’ non fu teorizzato il percettrone multilivello (MLP, Multi-Layer Perceptron), che faceva uso di algoritimi di apprendimento molto piu’ potenti (in particolare quello di propagazione all’indietro). Questo tipo di architettura delle reti neurali e’ detta connessionista, la quale consta di un gran numero di elementi di elaborazione semplici (neuroni) e di connessioni pesate tra loro (sinapsi), per cui la conoscenza della rete e’ codificata mediante dei pesi. Le reti neurali sono adeguate a svolgere attivita’ di basso livello, come ad esempio il riconscimento del parlato, di immagini e di tutto cio’ che puo’ avvenire tramite un metodo di classificazione; al contrario comportamenti piu’ complessi come la progettazione o la diagnosi restano afferenti al filone dell’intelligenza artificiale puramente simbolica. Fin qui e’ stato descritto concettualmente un processo che ci consente di produrre un’ipotesi a partire da una collezione di esempi, ma e’ lecito domandarsi cosa accadrebbe se avessimo piu’ ipotesi basate sullo stesso insieme di addestramento e se le potessimo combinare tra loro; in termini di prestazioni, otterremmo una predizione migliore o peggiore? Questa aggregazione di ipotesi e’ alla base dell’ensemble learning. 2 2 Ensemble Learning I metodi di ensemble learning risultano essere tecniche molto potenti per ottenere processi decisionali piu’ corretti, a discapito di una maggiore complessita’ e di una perdita di interpretabilita’ rispetto ai sistemi di apprendimento basati su singole ipotesi. 2.1 Generalita’ L’ensemble learning combina le predizioni di collezioni di ipotesi al fine di ottenere una maggior efficienza prestazionale. Cosi’ come suggerito dalla sua traduzione in italiano (letteralmente “apprendimento per comitato”) , e’ utile, per fini esplicativi, paragonare tale tipo di apprendimento ad un consiglio (o appunto comitato) esecutivo di un’azienda, in cui piu’ persone con determinate competenze espongono le proprie idee al fine di raggiungere una decisione finale. E’ evidente che la conoscenza di un gruppo di persone puo’ portare ad una soluzione piu’ ponderata rispetto alla decisione di un singolo consigliere, inoltre questo tipo di analogia ci permettedi fare considerazioni di tipo qualitativo che risulteranno essere applicabili nel dominio dell’intelligenza artificiale. Infatti, e’ facile immaginare che se i consigliersi hanno tutti conoscenze molto simili tra loro e dunque limitate ad uno stesso ambito, le analisi e le decisioni dei singoli non saranno molto eterogenee e otterremo benefici in misura ridotta nell’utilizzo dell’ensemble. Se invece il sapere di ciascun consigliere risulta essere fortemente settorizzato, in modo tale che ogni partecipante al comitato aggiunge conoscenze non replicate, la decisione finale risultera’ essere piu’ adeguata. Se supponiamo che alla direzione del consiglio vi sia un amministratore, il quale una volta presi in considerazione i singoli pareri (voti) perviene ad una soluzione, e’ ragionevole pensare che egli si fidi maggiormente di chi ha effettuato scelte piu’ corrette in passato, nel caso pratico quindi di consiglieri che ritiene piu’ affidabili. Analogamente, nell’apprendimento per comitato i voti delle singole ipotesi sono pesati in modo da enfatizzare le predizioni di quelle ritenute piu’ corrette. In conclusione, l’ensemble learning combina differenti modelli derivati da uno stesso insieme di addestramento per produrre una combinazione di essi che allarghi lo spazio delle ipotesi. 3 Chapter 2 Ensemble Learning 2.2 Metodi I metodi di apprendimento ensemble piu’ comuni ed efficienti sono: • bagging • randomization • boosting • stacking Per quanto essi possano migliorare le prestazioni effettive del sistema bisogna pero’ tener conto di una maggiore difficolta’ di analisi, poiche’ possono essere composti da un consistente numero di singoli modelli, ragion per cui sara’ difficile comprendere intuitivamente quali fattori hanno contribuito al miglioramento e quali invece possono essere considerati ridondanti o degradanti. Ad esempio si potrebbero prendere in considerazione diversi alberi di decisione generati sul medesimo dataset ed ottenere un voto da ciascuno di loro sulla classificazione di nuovi dati. La capacita’ predittiva finale facilmente risultera’ piu’ corretta di quella dei singoli modelli e cio’ potrebbe essere influenzato in maniera consistente anche solo da un sottoinsieme degli alberi coinvolti nella scelta, ma intutivamente sara’ difficile riconoscere tale sottoinsieme. La tecnica piu’ semplice per combinare le risposte di classificatori individuali in un’unica predizione e’ quella dei voti pesati ed e’ utilizzata sia dal boosting che dal bagging, la cui sostanziale differenza consiste nel modo in cui tali modelli vengono generati. 4 3 Bagging Il bagging prevede l’assegnazione di pesi identici per ciascun modello individuale applicato ad un determinato insieme di addestramento. Si puo’ pensare che se si estraggono piu’ insiemi di addestramento di pari cardinalita’ a partire dallo stesso dominio di un problema e per ciascuno di essi si costruisce un albero di decisione (di conseguenza si otterra’ una foresta), allora questi alberi saranno simili e perverranno a predizioni identiche per un nuovo esempio di test. Tale assunto risulta solitamente errato a causa dell’instabilita’ degli alberi di decisione, i quali a piccoli cambiamenti degli attributi di input possono far corrispondere ingenti cambiamenti in termini di ramificazioni e dunque portare a classificazioni differenti. E’ implicito che se a partire da uno stesso insieme di base si perviene a risultati notevolmente diversi, allora gli output potranno essere sia corretti che sbagliati. In un sistema in cui vi e’ un ipotesi per ciascun training set e la cui risposta ad un nuovo esempio e’ determinata dai voti delle singole ipotesi (voto di maggioranza), risultera’ piu’ occorrente una predizione corretta rispetto a quella che otterremmo a partire da un singolo modello. Ciononostante, sara’ sempre possibile riscontrare una risposta errata in quanto nessuno schema di apprendimento e’ inaffetto da errore. Una stima dell’errore atteso nell’architettura sopra supposta puo’ essere calcolata come la media degli errori dei singoli classificatori. Per comprendere meglio le caratteristiche del bagging e’ bene analizzare prima gli errori di bias, di varianza e il bootstrap. 3.1 Bias e varianza E’ possibile riconoscere due componenti di errore in un modello di apprendimento: il primo dovuto al particolare algoritmo di learning utilizzato, chiamato bias, ed il secondo relativo al peculiare set di addestramento utilizzato, indicato con il nome di varianza. Il bias (che potremmo tradurre come “scostamento”) non puo’ essere calcolato con precisione ma puo’ essere soltanto approssimato, inoltre e’ indipendente dal numero di training set utilizzati ed e’ un indicatore della persistenza dell’errore di uno specifico algoritmo. 5 Chapter 3 Bagging La varianza invece e’ strettamente correlata al particolare set di addestramento utilizzato ed e’ una misura della variabilita’ del modello di learning. In termini pratici, se utilizziamo diversi training set per ripetere l’addestramento piu’ volte, la varianza risultera’ essere la differenza tra i valori predetti da ciascun modello. Una rappresentazione grafica di tale concetto ci permette una comprensione piu’ immediata del problema in questione. Immaginiamo di avere un bersaglio il cui centro rappresenta il modello che predice il valore corretto perfettamente; naturalmente, piu’ ci allontaneremo dal centro e piu’ le predizioni si allontaneranno dai valori effettivi e risulteranno peggiori. Ogni freccetta lanciata sul bersaglio (indicata in figura con una croce grigia) rappresenta la realizzazione di un singolo classificatore. Si puo’ notare che nel caso in cui l’apprendimento ensemble sia affetto principalmente da bias, le freccette (i val- 6 3.2 Bootstrap ori delle predizioni) risulteranno lontani dal centro ma molto vicine tra loro; al contrario, qualora la componente principale dell’errore sia la varianza, le freccette saranno tutte vicine al centro ma distanti tra di loro. Se invece l’errore dovesse essere equamente ripartito ed il suo tasso molto basso, allora avremo freccette tutte vicine al centro ed anche vicine tra di loro; ne consegue che se il tasso di errore dovesse essere molto alto ci troveremo nel caso in cui le freccette sarebbero contemporaneamente lontane dal centro e distanti tra loro. 3.2 Bootstrap Uno dei metodi per misurare il tasso di errore e’ il bootstrap, la cui idea di base e’ quella di estrarre dall’intero dataset di volta in volta degli insiemi per formare un set di addestramento, rimpiazzando le istanze che sono gia’ state prese in considerazione. La variante piu’ comune prevede di campionare N volte un dataset di N istanze , con la tecnica del rimpiazzo degli elementi, per generare un nuovo dataset di N istanze. La probabilita’ che una determinata istanza non venga inclusa e’ pari ad 1/N e di conseguenza la probabilita’ che essa venga invece scelta vale 1 - 1/N. Moltiplicando tali probabilita’ per le N volte in cui prendiamo dei campioni, otterremo dunque che la probabilita’ di un istanza di non appartenere ad un set di addestramento sara’ (1 − 1/N )N = e−1 = 0.368 (36,8%), mentre la complentare probabilita’ di appartenenza sara’ pari al 63,2% . Per questo motivo la tecnica a cui facciamo riferimento prende il nome di “bootstrap 0.632”. 3.3 Funzionamento Il bagging, il cui termine deriva da “Bootstrap Aggregating”, anziche’ campionare ogni volta un set di addestramento diverso (come nel caso del bootstrap semplice) altera il dataset di partenza cancellando e rimpiazzando di volta in volta le varie istanze, in modo da creare molteplici training set di pari cardinalita’. Di conseguenza tale metodo di ensemble applica allo schema di learning utilizzato ciascuno dei sottoinsiemi di istanze generati a partire dallo stesso set di partenza, su cui poi verra’ formulata un’ipotesi finale che classifichera’ l’uscita con un voto in favore della classe a cui apparterra’ il valore predetto. Il bagging puo’ essere anche applicato nel caso di predizione numerica, in cui gli attributi di input anziche’ discreti vengono definiti continui, poiche’ essi non sono dei valori nominali ma numerici. Tuttavia l’uso del termine “continuo” e’ abusato in questo contesto in quanto va in contrasto con la defizione di continuita’ matematica. In uscita di un singolo classificatore numerico non verra’ fornito un voto bensi’ verra’ presentato un valore intero, pertanto la risposta di un modello ensemble in cui viene utilizzato il bagging sara’ la media delle predizioni individuali. 7 Chapter 3 Bagging Questa tecnica di aggregazione di bootstrap tende a neutralizzare l’instabilita’ degli algoritmi di apprendimento e risulta essere piu’ utile proprio negli schemi diapprendimento in cui vi e’ un’elevata instabilita’, in quanto cio’ implica una maggiore diversita’ ottenibile con piccole variazioni di input. Conseguentemente, quando viene utilizzato il bagging si tenta di rendere l’algoritmo di apprendimento il piu’ instabile possibile. Si puo’ sintetizzare il funzionamento di tale metodo in due passi: la generazione dei modelli individuali, in cui vengono selezionate N istanze dall’ insieme di training e viene applicato l’ algoritmo di learning, e la combinazione di essi per produrre una classificazione. Contestualmente al metodo ensemble in questione, l’errore dovuto al bias risulta essere lo scarto quadratico medio ottenuto facendo la media delle classificazioni numeriche dei singoli modelli, mentre la varianza e’ la distanza tra le predizioni dei singoli modelli e dipende dal training set utilizzato. Bias e varianza sono strettamente correlati alla complessita’ del modello di learning, per cui all’aumentare dei parametri aggiunti ad esso la componente di bias andra’ a decadere mentre la componente di varianza aumentera’ esponenzialmente. 8 4 Randomization Le tecniche di randomization sono anch’esse utilizzate, al pari del bagging, per aumentare la diversita’ nei modelli di learning, introducendo casualita’ nei dati di input. Bisogna pero’ tener conto che cio’ avviene a discapito della precisione dei singoli modelli, ragion per cui e’ necessaria una valutazione della giusta dose di casualita’ con cui manipolare i dati di input che risulta quantificabile solo empiricamente. Bagging e randomization, sebbene propongano degli effetti molto simili, risultano essere complementari tra loro in quanto apportano casualita’ agli algoritmi di learning in modo differente; pertanto, risulta spesso utile combinare i due metodi insieme. 4.1 Random forest Una “foresta” permette di costruire un classificatore formato da molteplici alberi di decisione e che presenti in output un risultato generato dalle predizioni dei singoli alberi. Come gia’ discusso, essa e’ conseguibile anche mediante bagging, costruendo un albero di decisione sulla base di ciascun sottoinsieme di addestramento derivato dall’aggregazione di bootstrap. La differenza sostanziale che qualifica la foresta come “random” e’ che ciascun albero opera su un sottoinsieme di istanze estratte casualmente dal training set di partenza (tale metodo di estrazione di features prende il nome di random subspace). Le fasi da seguire per addestrare un sistema random forest sono le seguenti: • selezionare N istanze con rimpiazzo (come previsto dal bagging) in modo casuale, creando un training subset, che per garantire massima efficienza dovrebbe essere circa 32 dell’insieme di partenza. Poi, per ciascun nodo, sia K la cardinalita’ scelta del subset che si desidera ottenere: • selezionare casualmente K features dall’intero training set • selezionare tra le K features quella che consente la migliore suddivisione dell’albero • iterare tale procedimento per i nodi successivi, selezionando dunque altre K features e scegliendo la migliore per “splittare” l’albero di decisione. E’ rilevante notare il rapporto tra il set di features scelto e la bonta’ della predizione che si produrra’ in output. Infatti, maggiore sara’ la correlazione tra gli alberi e 9 Chapter 4 Randomization maggiore risultera’ il tasso di errore, per cui un obiettivo notevole sara’ quello di selezionare features indipendenti in modo da ottenere alberi con bassa correlazione. noltre, e’ importante scegliere un’ adeguata cardinalita’ K del subset scelto al fine di ottenere predizioni migliori, poiche’ per un numero K basso otterremo ovviamente una correlazione ridotta ma risultera’ ridotta anche l’accuratezza delle risposte dei singoli alberi. 4.2 Rotation forest Introdurre casualita’ negli algoritmi di learning secondo le tecniche fin qui analizzate aumenta la diversita’ a discapito di una minore accuratezza dei singoli classificatori. Tuttavia, esiste un metodo di ensemble, il Rotation Forest, che ha la finalita’ di creare diversita’ senza sacrificare l’accuratezza dei modelli individuali, combinando bagging e random subspace. Di conseguenza, il training set con cui addestrare un singolo classificatore viene composto suddividendo l’intero set di features in un numero K di sottoinsiemi. Successivamente, su ciascun subset generato operera’ il PCA (Principal Component Analysis) per creare combinazioni lineari di attributi nel subset preso in considerazione, le quali rappresenteranno rotazioni dell’asse originale. Tale metodo garantisce diversita’ grazie all’estrazione delle features e preserva l’accuratezza dei singoli modelli poiche’ utilizza l’intero set di dati di partenza per addestrare ciascun classificatore. E’ inoltre in grado di garantire prestazioni simili a quelle prodotte dal Random Forest utilizzando un numero inferiore di alberi. 10 5 Boosting Il piu’ potente metodo ensemble risulta essere il boosting, e’ ottenuto mediante una procedura iterativa, in cui ciascun modello individuale non e’ costruito indipendentemente dagli altri (come nel caso del bagging), bensi’ e’ influenzato dai classificatori gia’ generati in precedenza. Cosi’ come per le altre tecniche ensemble, combinare piu’ modelli risulta particolarmente efficace quando essi conseguono un’alta percentuale di predizioni corrette e sono abbastanza diversi tra loro (vi e’ un elevato tasso di variabilita’). La situazione ideale a cui vuol tendere il boosting e’ la settorizzazione massima dei modelli, in modo tale che ciascuno di essi risulti specialista in una parte del dominio in cui gli altri classificatori non riescono a pervenire a previsioni accurate. Dunque il boosting attribuisce pesi maggiori alle istanze che non sono state predette correttamente, in modo da costruire degli alti modelli, nelle successive iterazioni, in grado di colmare questa lacuna. In analogia col bagging, vengono combinati solo algoritmi di learning della stessa tipologia e le loro uscite sono combinate per voto o facendo la media delle singole risposte, nel caso in cui si tratti rispettivamente di classificazione oppure predizione numerica. 5.1 AdaBoostM1 Una delle varianti piu’ utilizzate del boosting e’ l’algoritmo AdaBoostM1, il quale e’ particolarmente indicato nel caso in cui il nostro insieme di input risulti essere discreto e dunque si voglia risolvere un problema di classificazione. Tale algoritmo addestra in maniera sequenziale i modelli individuali, incentivandoli ad ogni iterazione a fornire delle predizioni corrette riguardo le istanze “piu’ importanti”, ossia quelle a cui e’ attribuito il peso maggiore. AdaBoostM1 inizialmente assegna ad ognuna delle istanze dell’insieme di addestramento lo stesso peso, dopodiche’ viene applicato lo specifico algoritmo di learning scelto per generare un classificatore e vengono attribuiti dei nuovi pesi, che risulteranno essere decrementati per quanto riguarda le istanze del training set predette correttamente ed incrementati per quelle che non lo sono. Anche il modo in cui viene calcolato l’errore e’ strettamente correlato ai pesi delle varie istanze; se lo indichiamo con err, esso risulta essere per ciascuno degli m classificatori: 11 Chapter 5 Boosting errm = I X (m) wi f (yi ! = hm (xi )) i=1 in cui (m) • wi e’ il peso dell’osservazione i-esima • f (yi ! = hm (xi )) e’ la funzione che ci indica la diversita’ tra l’ipotesi hm (xi ) (cioe’ la predizione fatta dal classificatore) e il valore effettivo della classe predetta, rappresentato da yi Dal momento che ad ogni iterazione dell’algoritmo di learning viene effettuata una re-distribuzione dei pesi, di volta in volta si otterranno dei set di istanze che possono essere definite piu’ “facili” ed altre piu’ “difficili” (cioe’ non ancora classificate correttamente), sulla cui base verranno costruiti i successivi classificatori. Tenendo conto dell’errore sopra discusso, il quale e’ un valore compreso tra 0 ed 1, ad ogni iterazione (t) i nuovi pesi vengono aggiornati solo per le istanze classificate correttamente come descritto di seguito: peso(t+1) = peso(t) ∗ err (1 − err) mentre il peso delle istanze non classificate resta inizialmente invariato. Successivamente vengono normalizzati i pesi distribuiti, in modo tale che la loro somma totale resti inalterata; cio’ viene realizzato moltiplicando e dividendo il peso di ciascuna istanza rispettivamente per la somma dei vecchi pesi e quella dei nuovi. Come anticipato prima, tale operazione incrementa effettivamente l’importanza delle features non ancora classificate. Stabilita la costruzione iterativa dei modelli individuali, e’ necessario comprendere come combinarli insieme per ottenere una predizione, per cui anche le singole risposte dei classificatori verrano pesate, attribuendo maggiore enfasi a quelli che si ritiene effettuino predizioni migliori. La stima che ci permette di valutare le prestazioni di ciascun elemento appartenente all’ensemble e’ l’errore di predizione, il quale, se risulta essere prossimo allo zero e’ un indicatore di alta accuratezza. AdaBoostM1 permette inoltre la cancellazione dei classificatori ritenuti di scarsa efficienza, per cui vengono cancellati durante le singole iterazioni quelli che restituiscono un errore pari o maggiore a 0,5 e quelli con errore pari precisamente a 0, in quanto i pesi delle singole istanze diverrebbero anch’essi 0. Il peso attribuito a ciascun modello individuale e’: 12 5.2 Vantaggi e svantaggi peso = −log err (1 − err) da cui si evince facilmente la ragione per cui un classificatore che effettua predizioni perfette sull’insieme di addestramento e restituisce errore nullo viene scartato (il suo peso risulterebbe indefinito). Per giungere ad una predizione conclusiva, vengono sommati i voti pesati in favore di ogni classe di output e la piu’ quotata viene scelta. 5.2 Vantaggi e svantaggi Con questo metodo di boosting puo’ essere potenziato qualsiasi algoritmo di learning per incrementarne le prestazioni, sebbene in contrapposizione ai benefici apportati vi siano anche degli svantaggi di cui tener conto. Infatti, dal momento che le features definite “facili” vengono prese in considerazione un numero minore di volte in quanto non sono replicate nei dataset generati nelle successive iterazioni del metodo, vi e’ una perdita di informazioni che precede l’applicazione dello specifico algoritmo di learning utilizzato. Tuttavia, gli effetti negativi del boosting possono essere notevolmente ridimensionati se si considera che ogni volta che un classificatore riscontra un errore maggiore di 0,5 viene scartato ed uno nuovo viene generato su un set differente di istanze. Col boosting inoltre l’errore di addestramento dei singoli modelli raggiunge molto rapidamente lo zero al crescere del numero di iterazioni, ma cio’ non sempre e’ indice di elevate prestazioni, poiche’ non sempre implica necessariamente che il metodo funzioni bene per i nuovi dati (ossia per gli esempi da predire che non sono ancora stati riscontrati). Pertanto e’ possibile ottenere una bassa capacita’ predittiva dell’ensemble, la quale puo’ essere imputata a due fattori: • elevata complessita’ dei singoli classificatori • errore di addestramento che tende velocemente a diventare grande Anche in questo caso, come nei precedenti metodi di ensemble descritti, va ricercato il giusto compromesso tra la complessita’ dei modelli individuali e la loro accuratezza, al fine di scongiurare un decadimento delle prestazioni. Inoltre, osservazioni empiriche hanno evidenziato una caratteristica sorprendente del boosting. Infatti, secondo la visione tradizionale dell’intelligenza artificiale, in accordo con il principio del rasoio di Ocamm, e’ preferibile scegliere, tra piu’ ipotesi che pervengono allo stesso risultato, quella meno complessa; sarebbe dunque lecito attendersi che una volta azzerato l’errore con cui viene effettuata la predizione finale (dopo aver combinato le singole scelte pesate dei vari modelli), le iterazioni possano concludersi. 13 Chapter 5 Boosting Invece, in contraddizione con quanto appena detto, e’ conveniente aggiungere successive iterazioni, le quali sebbene non influenzino l’errore generato e aggiungano complessita’ all’ ensemble, permettono di ottenere prestazioni ancor piu’ soddisfacenti sui nuovi esempi da classificare. 14 6 Stacking Lo stacked generalization, dalla cui abbreviazione deriva il termine stacking, e’ la tecnica di ensemble piu’ recente tra quelle analizzate e fu proposta nel 1992 dall’americano Wolpert, nel tentativo di generare uno schema che riducesse al minimo il tasso di errore dei classificatori. Lo stacking, in virtu’ del suo funzionamento, puo’ essere considerato come un processo che evolve il comportamento del cross-validation per combinare in modo piu’ efficiente i diversi modelli individuali; dunque, prima di procedere all’illustrazione di tale metodo, e’ necessario descrivere i punti salienti della tecnica di base per stimare l’errore atteso. 6.1 Cross-validation Per valutare le prestazioni di un classificatore rispetto ad esempi ancora non riscontrati va analizzato il suo tasso d’errore sul test set, ossia su un sottoinsieme del set di dati che non viene utilizzato per l’addestramento. Solitamente, ad una maggiore quantita’ di dati con cui addestrare e testare un sistema corrisponde una maggiore accuratezza e correttezza nelle predizioni, per cui nel caso si disponga di dati in eccesso non risulta problematica la suddivisione in training set e test set. Al contrario, ovviamente, nel caso in cui si opera con una limitata quantita’ di esempi, e’ necessario prestare attenzione a come si seziona l’insieme di dati. Comunemente si suole dividerlo etichettando i due terzi di esso come insieme di addestramento ed il restante terzo come insieme di test, ma cio’ non garantisce prestazioni affidabili, poiche’ ci si potrebbe ritrovare nell’inauspicata situazione in cui tale distribuzione del data set assegna esempi rappresentativi per l’addestramento al test set ed esempi significativi per il test al training set. Dal momento in cui non vi e’ possibilita’ di riconoscere se a un dato afferisca una maggiore efficacia di training o di test, bisogna ricorrere a metodi che ci garantiscano un’adeguata rappresentazione degli esempi all’interno dei due sottoinsiemi. Un modo primitivo per avvicinarci a tale risultato e’ la stratified holdout, la quale introduce casualita’ nella collezione degli esempi aumentando le possibilita’ di ottenere una ripartizione migliore rispetto alla semplice suddivisione in due/terzi. 15 Chapter 6 Stacking Una piu’ elaborata tecnica, chiamata repeated holdout, prevede invece di ripetere gli interi processi di addestramento e verifica su differenti set di esempi scelti in maniera casuale, al fine di diminuire la componente dell’errore identificata dal bias. Sui tassi di errori prodotti da ciascuna iterazione della tecnica in questione viene poi effettuata la media che ci restituisce il valore complessivo dell’errore. Il cross-validation puo’ essere considerato una particolare variante del repeated holdout, in cui viene selezionato un determinato numero N di partizioni (“folds”) e dunque si suddivide il data set in N sottoinsiemi, di cui a ciascuna iterazione se ne utilizza uno per il test e le restanti per l’addestramento. Il modo piu’ utilizzato per calcolare l’errore atteso di un metodo di learning applicato ad un singolo dataset iniziale e’ quello del tenfold cross-validation, in cui appunto il numero di partizioni (e conseguentemente anche quello di iterazioni) e’ pari a dieci, ma esistono anche altre tecniche adoperate per la stessa finalita’ quali il bootstrap, descritto in precedenza, e il leave-one-out cross-validation, che presenta molte analogie con la procedura appena illustrata ma si differenzia in quanto a turno ciascuna istanza e’ lasciata fuori dall’insieme di addestramento. Il leave-one-out cross-validation risulta essere una tecnica deterministica, di conseguenza replicarla un’unica volta oppure per piu’ volte non produce effetti differenti, comporta pero’ lo svantaggio (comune per quanto riguarda la procedura di cross-validation) di realizzare costi molto elevati dovuti alle N ripetizioni del processo, dettaglio molto importante di cui tener conto soprattutto nel caso di set di dati molto copiosi, i quali rallentano notevolmente tale processo . 6.2 Funzionamento Lo stacking implementa un modo diverso di combinare singoli classificatori rispetto a quelli descritti in precedenza ed e’ utilizzato con minor frequenza, principalmente a causa della perdita’ di interpretabilita’ dovuta al metodo. Tuttavia, al contrario del boosting e del bagging, esso puo’ combinare anche modelli differenti introducendo il concetto di meta-learner in sostituzione della procedura di votazione. E’ possibile schematizzare cosi’ la tecnica di stacking: • suddividere il set di addestramento in due insiemi disgiunti • addestrare ciascun classificatore individuale su uno dei due insiemi • testare ciascun classificatore individuale sull’insieme non ancora utilizzato • utilizzare le predizioni ottenute dal testing come input, le risposte corrette come output e dunque addestrare un livello di “learner” piu’ alto Prima di descrivere nel dettaglio i singoli passi, si puo’ notare che la prima parte di questo metodo e’ analoga al cross-validation, da cui si differenzia in maniera sostanziale nell’ultima operazione che introduce i livelli di learner. 16 6.2 Funzionamento Dunque supponiamo di avere molteplici algoritmi di learning e di volerli combinare tra loro con la tecnica di bagging (di conseguenza affidandoci ai rispettivi voti non pesati); tale ipotesi funzionerebbe bene nel caso in cui i modelli individuali offrissero prestazioni molto simili. Cio’ potrebbe verificarsi nel caso in cui si prendessero in considerazione tre classificatori, di cui due restituissero predizioni non corrette ed uno solo garantisse buone prestazioni; tale combinazione sarebbe disastrosa, poiche’ ad influenzare maggiormente l’output del sistema sarebbero le risposte affette da errore. Pertanto, si rimpiazza la votazione con il meta-learner, il quale e’ un algoritmo per ricercare la migliore combinazione dei singoli modelli che garantiscono un’adeguata correttezza. Il meta-modello che si andra’ a costruire avra’ due livelli: il livello 0, che riceve in ingresso da un classificatore individuale un’istanza ed in uscita presenta una predizione del valore della classe dell’istanza, e il livello 1, che riceve in input le singole risposte dei livelli-0 per formulare una predizione conclusiva. A questo punto il problema da risolvere e’ l’addestramento del livello-1, il quale deve trasformare i training set del livello-0 in un nuovo insieme di training adeguato; merita pero’ di essere evidenziato il fatto che non sempre un modello altamente prestazionale su un insieme di addestramento risulta funzionare in maniera performante anche con un insieme di test. Questa situazione indesiderata e’ dovuta principalmente a problemi di overfitting, ossia il sistema tende a preferire decisioni piu’ aderenti al training set che al reale valore da predire, riducendo cosi’ la propria capacita’ di generalizzazione. Per questa ragione lo stacking non trasforma semplicemente gli insiemi di addestramento, bensi’ vengono riservate delle istanze dal training set del livello-0 per il livello-1; ovviamente, i classificatori individuali sono inizialmente costruiti sul set del livello-0, ma sono successivamente adoperati per classificare le istanze riservate in precedenza in quello che prende il nome di holdout set, dando cosi’ origine all’insieme di addestramento di livello-1. Questa soluzione supera il problema dell’overfitting in quanto i classificatori non sono stati addestrati sull’ holdout set e di conseguenza non possono far altro che predire una classe appellandosi alla propria capacita’ di generalizzare. In seguito alla formazione del training set di livello-1, i vari modelli individuali vengono ri-addestrati sull’intero insieme di dati, in modo tale da eliminare anche la perdita delle informazioni che si sarebbe ottenuta scartando delle istanze per riservarle ad altri utilizzi. E’ comunque vero che l’accuratezza dei singoli classificatori viene implementata a discapito del training set del livello-1, il quale viene formato non tenendo conto dell’intero insieme di addestramento ma soltanto una partizione di esso. Lo stacking puo’ essere applicato anche in casi in cui gli attributi di input non risultano essere discreti ma continui, quindi nei casi di predizione numerica, in cui 17 Chapter 6 Stacking il metodo resta inalterato eccezion fatta per la diversa natura dei valori trattati, i quali non saranno classi ma istanze quantificabili numericamente. 18 7 Conclusioni In questo lavoro di tesi sono stati descritti i differenti metodi di apprendimento ensemble ai fini di migliorare le prestazioni in termini di capacita’ di predizione dei sistemi, a discapito di una perdita di interpretabilita’ imputabile all’ aumendo della complessita’ degli schemi utilizzati. Da quanto analizzato e’ evidente che non esistono soluzioni perfette quando si va alla ricerca di un modello efficiente di apprendimento, bensi’ sono necessari dei compromessi su vari aspetti peculiari dell’azione di learning che devono indirizzare le prestazioni complessive della macchina verso l’alto. Per tale motivo, dopo aver introdotto inizialmente i punti salienti dell’apprendimento in generale e come esso e’ disciplinato dall’intelligenza artificiale, si e’ proceduto con l’illustrazione delle tecniche di ensemble da cui e’ emersa l’esigenza di pervenire a vari trade-off. Un primo bilanciamento, infatti, e’ relativo al tasso di errore atteso, in quanto costituito da due componenti, una imputabile al bias, un’altra alla varianza. Dal momento che un metro di valutazione delle prestazioni di un sistema e’ proprio l’errore atteso, tale compromesso risulta di particolare rilievo e qualora si operi con set di dati molto grandi diventa fondamentale contenere la varianza, viceversa ci si puo’ focalizzare maggiormente nel diminuire la componente di bias. Un secondo trade-off proposto riguarda la variabilita’ dei dati negli insiemi di addestramento: infatti, aumentare la diversita’ presente in questi ultimi vuol dire fornire al sistema una maggiore capacita’ di generalizzazione e dunque essere maggiormente prestazionale in relazione ai futuri esempi. Tuttavia, cio’ si verifica solo se non si degrada eccessivamente l’accuratezza dei modelli individuali, i quali altrimenti fornirebbero predizioni singole poco attendibili. Le tecniche di bagging e randomization implementano tale aumento di variabilita’ in sistemi in cui gli algoritmi di learning sono tutti dello stesso tipo e ad ogni istanza e’ assegnato lo stesso peso. Cio’ non accade nel boosting, che assegna pesi differenti, e che propone un ulteriore compromesso tra la perdita di informazioni dovuta alle cosiddette istanze “facili” e la velocita’ con cui tende a zero l’errore di addestramento. Inoltre, l’attivita’ di verifica della bonta’ degli algoritmi prevede un adeguato partizionamento tra insieme di test e di training, per cui e’ necessario suddividere nel modo piu’ ottimale possibile i due set (ed in particolare va tenuto conto delle istanze che devono appartenervi). Anche quando si utilizza la tecnica di stacking bisogna tener conto che il livello piu’ alto del meta-learner non e’ addestrato sull’intero set di dati bensi’ su una 19 Chapter 7 Conclusioni partizione di essi, ragion per cui viene conferita al sistema una maggior capacita’ di generalizzazione ma non e’ garantita la massima accuratezza delle singole predizioni. Di particolare rilevanza e’ il fatto che essa e’ l’unica di quelle proposte ad essere applicabile anche ad algoritmi di learning di tipologie differenti. In conclusione, la dicotomia che meglio sintetizza l’ensemble learning e’ sintetizzabile in una sola domanda: quanto si e’ disposti a spendere in termini di complessita’ per migliorare le prestazioni? 20 Bibliography [1] IEEE, Rotation Forest: A New Classifier Ensemble Method, http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=1677518&url=http%3 A%2F%2Fieeexplore.ieee.org%2Fiel5%2F34%2F35279%2F01677518.pdf%3Far number%3D1677518 [2] Mathworks, Ensemble Methods, http:/mathworks.com/help/stats/ensemblemethods.html#bsw8aue [3] Martin Sewell, Ensemble Learning, Department of Computer Science University College London, 2008 [4] J.A.Michael, S.Berry Gordon, Data Mining, Apogeo Editore, 2001 [5] P.Norvig, S.J.Russel , Intelligenza artificiale. Un approccio moderno, Volume 1, 2005 [6] P.Tan, M.Steinbach, V.Kumar, Introduction to Data Mining, Pearson International, 2006. [7] A. M. Turing, Computing Machinery and Intelligence, 1950 [8] D.Walpert, Neural Networks, volume 5, 1992 [9] I.H.Witten, E.Frank, M.A.Hall, Data Mining, 3rd edition, Morgan Kaufmann,2011 21