730 likes | 814 Views
Classification. Salvatore Orlando. Classificazione. Dati una collezione di dati ( training set ) Ciascun record contiene un insieme di attributi , uno dei quali è la classe di appartenenza. Trova un modello per l’attributo classe che diventa funzione degli altri attributi
E N D
Classification Salvatore Orlando
Classificazione • Dati una collezione di dati (training set ) • Ciascun record contiene un insieme di attributi, uno dei quali è la classe di appartenenza. • Trova un modello per l’attributo classe che diventa funzione degli altri attributi • Obiettivo: trovare una funzione che assegni in modo accurato l’attributo classe a nuovi records non classificati. • Un test set è usato per determinare l’accuratezza del modello. • Di solito il dataset iniziale è suddiviso in training e test sets: costruiamo ilmodello con il training set, e usiamo il test set per validarlo.
Test Set Model Esempio di classificazione categorical categorical continuous class Learn Classifier Training Set Cheat = truffatore,imbroglione
Classificazione vs. Clustering • Supervised learning (classification) • Supervisione: I dati del training set (osservazioni, misure, etc.) sono stati preventivamente associati a etichette che indicano la classe di appartenenza • conoscenza supervisionata • I nuovi record di dati sono classificati usando il modello costruito sulla base del training set • Unsupervised learning(clustering) • L’etichetta della classe è sconosciuta • Dati un insieme di misure, osservazioni, ecc. lo scopo del clustering è quello di stabilire l’esistenza di gruppi/classi nei dati • Imparare l’esistenza di un qualche modello presente nei dati, che dà luogo ad una suddivisione dei dati, senza conoscenza precedente
Tecniche di classificazione • Metodi basati sugli Alberi di Decisione (Decision Tree) • Metodi Rule-based • Memory-based reasoning • Neural Networks • Genetic Algorithms • Naïve Bayes • Support Vector Machines
Classificazione basata su Decision Tree • I modelli di classificazione basati su Decision Tree sono considerati tra i migliori • Non costosi da costruire • Facili da interpretare • Facili da integrare con le basi di dati • Buona accuratezza in molte applicazioni, anche in confronto ad altri metodi di classificazione
Decision tree • Decision Tree • Un struttura ad albero che somiglia ad un flow-chart • Ogni nodo interno denota un test su un attributo • Gli archi uscenti rappresentano i risultati del test • Ogni nodo foglia rappresenta un’etichetta di classe o la distribuzione delle varie classi • Uso di un Decision Tree • Per classificare un nuovo dato campione sulla base degli attributi • ovvero per assegnare un’etichetta di classe al nuovo dato • Effettua i test sui valori degli attributi del campione rispetto ai test presenti nel decision tree • A partire dalla radice, e sulla base degli attributi del campione da classificare, segue un cammino fino ad una foglia • L’etichetta della foglia definisce la classe di appartenenza del campione
Esempio di albero di classificazione categorical categorical continuous class Splitting Attributes Refund Yes No NO MarSt Single, Divorced Married TaxInc NO < 80K > 80K YES NO
NO Un altro albero di classificazione categorical categorical continuous class Single, Divorced MarSt? Married NO Refund? No Yes TaxInc? < 80K > 80K YES NO Si possono derivare più alberi dagli stessi dati!
Un altro esempio age? <=30 >40 31..40 student? YES credit rating? no yes excellent fair YES YES NO NO
Algoritmo per Decision Tree Induction • Algoritmo di base (metodo greedy) • L’albero è costruito in modo: • top-down - ricorsivo - divide-and-conquer • All’inizio tutti gli esempi di training sono in corrispondenza della radice • Gli esempi di training sono partizionati ricorsivamente sulla base degli attributi selezionati • Gli attributi di test sono selezionati in base ad un’euristica o a misure statistiche (es., gini index, information gain) • Scopo: suddividere gli esempi creando partizioni omogenee • Esistono metodi che funzionano su attributi di test categorici e/o su attributi numerici • Condizioni per stoppare il partizionamento • Tutti gli esempi di una partizione in una stessa classe • Non abbiamo più attributi sulla cui base partizionare ulteriormente – usiamo una tecnica di majority voting per classificare la foglia
CarType Family Luxury Sports CarType CarType {Sports, Luxury} {Family, Luxury} {Family} {Sports} Come effettuare lo splitting: attributi nominali • Ciascuna partizione è caratterizzato da un sottoinsieme di valori. • Multi-way split: Usa tanti ramificazioni dello split quanti sono i valori distinti. • Binary split: Divisi i valori in due sottoinsiemi. Bisogna individuare un partizionamento ottimale. oppure
Size Small Large Medium Size Size Size {Small, Medium} {Small, Large} {Medium, Large} {Medium} {Large} {Small} Come effettuare lo splitting: attributi ordinali • Ciascuna partizione è caratterizzato da un sottoinsieme di valori. • Multi-way split: Usa tanti ramificazioni dello split quanti sono i valori distinti. • Binary split:Divisi i valori in due sottoinsiemi. Bisogna individuare un partizionamento ottimale. • Questo partizionamentopotrebbe essere possibile? oppure
Come effettuare lo splitting: attributi numerici • Metodi differenti • Binary Decision: (A < v) or (A v) • considera tutti i possibili split e individua il miglior taglio • Può risultare molto costo computazionalmente, anche se esistono dei metodi basati sull’ordinamento • Discretizzazioneper formare un attributo categorico (ordinale) • Statico – discretizzato una volta per tutte all’inizio • Dinamico – le suddivisioni possono essere trovati tramite equal interval partitioning, equal frequency partitioning, o distance-basedclustering.
Discretizzazione • Equal-width (distance) partitioning: • Dividi la scala di variazione dell’attributo in N intervalli identici • Se A e B sono il più piccolo e il più grande valore di un attributo, la larghezza degli intervalli sarà: W = (B-A)/N. • E’ il metodo più semplice, ma gli outlier (o dati non ben distribuiti) possono dare problemi al metodo di discretizzazione • Equal-depth (frequency) partitioning: • Dividi la scala di variazione dell’attributo in N intervalli identici, ciascuno contenente approssimativamente lo stesso numero di campioni • Buon metodo • Cluster analysis partitioning: • Può risultare costoso
Discretizzazione Data Equal interval width Equal frequency K-means (clustering)
Criterio di splitting • Come scegliere l’attributo e il relativo splitting? • uso di particolari indici di dispersione dei valori dell’attributo categorico di classe • Gini index(algoritmo di IBM IntelligentMiner, CART, SLIQ, SPRINT) • Information gain (algoritmi ID3/C4.5)
Gini index • In corrispondenza di un certo nodot dell’albero in costruzione, e rispetto alla corrispondente partizione del dataset di training, possiamo definire il Gini Index: (NOTA: p( j | t)è la frequenza relativa della classe j al nodo t). • Misura l’impurità/disordine del dataset corrispondente a t. • Massimo valore (1 - 1/nc) quando i record sono equamente distribuiti tra tutte le classi informazione meno interessante • Minimo valore (0.0) quando tutti i record appartengono ad una sola classe informazione più interessante
Gini • Una sola classe: • 1 - 12 = 0 • nc classi equiprobabili: • 1 - \sum ((n / nc) / n)2 = 1 - \sum (1 / nc)2 = 1 – nc (1 / nc)2 =1 – 1 / nc
Esempi relativi a Gini Index P(C1) = 0/6 = 0 P(C2) = 6/6 = 1 Gini = 1 – P(C1)2 – P(C2)2 = 1 – 0 – 1 = 0 P(C1) = 1/6 P(C2) = 5/6 Gini = 1 – (1/6)2 – (5/6)2 = 0.278 P(C1) = 2/6 P(C2) = 4/6 Gini = 1 – (2/6)2 – (4/6)2 = 0.444
Uso del GINI Index • Criterio di Splitting: Minimizza il Gini Index della suddivisione. • Quando un nodo t è suddiviso in k partizioni (figli), la qualità della suddivisione è calcolata come: dove, ni= numero di record della partizione (figlio) i, n = numero di record del dataset al nodo t.ni/n costituisce il peso dei vari GINI(i) • Dato il dataset associato al nodo t, si sceglie l’attributo che fornisce il più piccolo GINIsplit(t) per partizionare il dataset • È necessario enumerare tutti i possibili punti di splitting per ciascun attributo
Calcolare il GINI Index per attributi binari • Suddivisione in due partizioni • Si cercano partizioni più grandi e più pure possibili. B? Yes No Node N1 Node N2
Calcolare il GINI Index per attributicategorici • Per ciascuna classe nel dataset, conta il numero dei valori differenti per ogni attributo • computa le singole righe delle matrici di conteggio • Usa la matrice dei conteggi per prendere le decisioni Two-way split (bisogna trovare il migliore partizionamento dei valori) Multi-way split
Calcolare il GINI Index per attributi continui • Solitamente si usa Binary Decision, basato su un singolo valore di splitting • Non abbiamo bisogno di discretizzare • Sono possibili scelte diverse per il valore di splitting • Es.: Numero di possibili valori di splitting = Numero di valori distinti assunti dall’attributo • Ciascun valore di splitting ha una matrice di conteggi associata • Conteggio delle varie classi per ciascuna partizione, (A <v) e (A v) • Metodo naive per scegliere il miglior v • Per ciascun v, scandisci il database per raccogliere la matrice dei conteggi e computare il corrispondente Gini Index (GINIsplit) • Questo metodo è computazionalmente inefficiente! Lavoro ridondante.
Split Positions Calcolare il GINI Index per attributi continui (2) • Metodo per migliorare l’efficienza • Per ciascun attributo • Ordina rispetto ai valori degli attributi • Scandisci linearmente questi valori, aggiornando ogni volta la matrice dei conteggi necessario per calcolare il GINI index • considera che, quando spostiamo il pivot, abbiamo un singolo elemento (appartenente ad una certa classe) che passa da una partizione all’altra • +/- 1 in una particolare riga • Scegli le posizioni di split che hanno il GINI index minore Sorted Values
Criterio di splitting alternativo: Information Gain • In corrispondenza di un certo nodot dell’albero in costruzione, e rispetto alla corrispondente partizione del dataset di training, possiamo definire l’Information Gain: (NOTA: p( j | t)è la frequenza relativa della classe j al nodo t). • Misura l’omogeneità/ordine di un nodo. • Massimo (log nc) quando i record sono equamente distribuiti tra tutte le classi implica meno informazione • Minimo valore (0.0) quando tutti i record appartengono ad una sola classe implica più informazione • I calcoli basati sulla misura dell’Entropia sono simili a quelle basate sul GINI index
Entropy • Una sola classe: • - (1 * log 1) = 0 • nc classi equiprobabili: • - (\sum ( (n / nc) / n) * log ((n / nc) / n) ) = • - ( \sum ( (1 / nc) * log (1 / nc) ) = • - nc * (1 / nc) * log (1 / nc) = - log (1 / nc) = - (log 1 - log nc) = log nc
Esempi relativi all’Information Gain (Entropia) P(C1) = 0/6 = 0 P(C2) = 6/6 = 1 Entropy = – 0 log 0– 1 log 1 = – 0 – 0 = 0 P(C1) = 1/6 P(C2) = 5/6 Entropy = – (1/6) log2 (1/6)– (5/6) log2 (1/6) = 0.65 P(C1) = 2/6 P(C2) = 4/6 Entropy = – (2/6) log2 (2/6)– (4/6) log2 (4/6) = 0.92
Uso dell’Entropia come criterio di splitting • Quando un nodotè suddiviso in kpartizioni (figli), la qualità della suddivisione è calcolata come IG (Information Gain): dove, ni= numero di record della partizione (figlio) i, n = numero di record del dataset al nodo t.ni/n costituisce il peso dei vari Entropy(i) • Misura la riduzione nell’Entropia in conseguenza dello split. Scegli lo split che raggiunge la riduzione maggiore (massimizza il GAIN) • Usato in ID3 e C4.5
Problemi legati all’Information Gain • Svantaggio: • l’IG tende a preferire suddivisioni che producono molte partizioni, piccole ma pure (ovvero che comprendono elementi appartenenti ad una singola classe). Si rischia di costruire un albero overfitted rispetto al training set • Gain Ratio: Il nodo padre, è suddiviso in k partizioni ni è il numero di record della partizione i • Corregge l’Information Gain dello split usando l’entropia del partizionamento (SplitINFO). • Valori alti di SplitINFO si ottengono all’aumento del numero di piccole partizioni! l’aumento di SplitINFO penalizza Gain Ratio • Usato in C4.5
Overfitting Overfitting • L’albero può overfit-are i dati di training • Troppi rami, alcuni dei quali possono riflettere anomalie dovuti a rumori o outlier • Poca accuratezza (troppi errori) per campioni non visti (test dataset)
Overfitting: Pre-Pruning • Pre-Pruning (Early Stopping Rule) • Stop dell’algoritmo prima che esso produca un albero fully-grown • Le tipiche condizioni di stopping: • Stop se tutte le istanze appartengono alla stessa classe • Stop se tutti i valori degli attributi hanno lo stesso valore • Condizioni più restrittive per il pruning: • Stop se il numero di istanze è minore di uno user-specified threshold • Evita la creazione di piccole partizioni • Difficile trovare il threshold • Stop se espandendo il nodo corrente non miglioriamo la misura di impurità (es.., Gini o Information Gain).
Overfitting: Post-Pruning • Post-Pruning • Rimuovi nodi/rami da un albero completo (“fully grown” tree) • Elimina i nodi in modo bottom-up • Usa un insieme di dati differenti dal training data (testing data) per decidere qual è il “best pruned tree” • Se l’errore sui dati di testing migliora dopo la sostituzione del sotto-albero con un nodo foglia • Sostituisci in maniera permanente, generando un albero pruned • L’etichetta di classe da assegnare al nuovo nodo foglia è determinato dalla classe maggioritaria nel sotto albero
Estrarre regole di classificazione da alberi • Rappresenta la conoscenza nella forma di regole IF-THEN • Una regola per ogni cammino dalla radice ad una foglia • Ciascuna coppia attributo-valore lungo un cammino forma una congiunzione • Il nodo foglia restituisce la predizione della classe per la regola estratta • Le regole sono più facili da capire • Esempi IF age = “<=30” AND student = “no” THEN buys_computer = “no” IF age = “<=30” AND student = “yes” THEN buys_computer = “yes” IF age = “31…40” THEN buys_computer = “yes” IF age = “>40” AND credit_rating = “excellent” THEN buys_computer = “yes” IF age = “>40” AND credit_rating = “fair” THEN buys_computer = “no”
Classificatori Bayesiano • Metodo probabilistico (Bayesian) per risolvere il problema della classificazione • Probabilità condizionali: • Teorema di Bayes : C A
Esempio di applicazione del teorema di Bayes • Conoscenza pregressa: • Un dottore sa che la meningite causa rigidità del collo per il 50% dei casi • P(rigidità del collo| meningite) = 1/2 • La probabilità incondizionata che un paziente possa avere la meningite è • P(meningite) = 1/50000 = 0,00002 • La probabilità incondizionata che un paziente possa avere rigidità del collo è • P(rigidità del collo) = 1/20 = 0,05 • Se un paziente ha rigidità del collo, qual è la probabilità che egli abbia la meningite?
Classificatori Bayesiano • Considera i vari attributi e l’etichetta della classe come variabili casuali • Dato un record R contenente gli attributi (A1, A2,…,An) • Lo scopo è predire la classe C di R • Più specificatamente, vogliamo trovare il valore di C che massimizza:P(C| A1, A2,…,An ) • Possiamo stimare P(C| A1, A2,…,An ) direttamente dai dati?
Classificatori Bayesiano • Approccio: • Calcoliamo la probabilità a posteriori P(C | A1, A2, …, An) per tutti i valori dell’etichetta C di classe • Scegli il valore di C che massimizza P(C | A1, A2, …, An) • Sulla base del teorema di Bayes, possiamo equivalentemente scegliere il valore di C che massimizzaP(A1, A2, …, An | C) P(C) • Come stimiamo P(A1, A2, …, An | C) ?
Classificatore Naïve Bayes • AssunzioneNaïve : Assumiamo l’indipendenza tra gli attributi Ai quando sia data una certa classe C • P(A1, A2, …, An |Cj) = P(A1| Cj) P(A2| Cj)… P(An| Cj) • Possiamo facilmente calcolare P(Ai| Cj) per tutte le coppie Ai e Cj nel training set, oltre ai vari P(Cj) • Un nuovo record (B1, B2, …, Bn) è classificato come Cj se risulta massima la produttoria:P(Cj) P(Ai| Cj) = P(Cj) P(A1, A2, …, An |Cj)
Come stimiamo la probabilità dai dati? • Probabilità delle Classi: • P(C) = Nc/N • dove Nc è il numero di istanze che appartengono alla classe C • Es., P(No) = 7/10, P(Yes) = 3/10 • Per attributi discreti: • P(Ai | Ck) = |Aik| / Nck • dove |Aik| è il numero di istanze che hanno l’attributo Ai e appartengono alla classe Ck • dove Nck è il numero di istanze che appartengono alla classe Ck • Esempi: P(Married | No) = 4/7P(Refund=Yes | Yes)=0
Come stimiamo la probabilità dai dati? • Per attributi continui: • Abbiamo bisogno di conoscere la probabilità condizionale P(Ai|C) • nota che il particolare valore dell’attributo continuo Ai potrebbe non essere presente nel dataset di training • Assumiamo che gli attributi obbediscono a certe distribuzioni di probabilità • Tipicamente, si assume la distribuzione normale • Si usano i dati per stimare i parametri della distribuzione di probabilità (ovvero, media e deviazione standard) • Una volta che la distribuzione di probabilità è nota, possiamo usarla per stimare la probabilità condizionale P(Ai|C)
Come stimiamo le probabilità dai dati? • Distribuzione normale: • Una per ciascuna coppia (Ai,ci) • Per (Income, Class=No): • Se Class=No • ij(media nel campione) = 110 • 2ij(varianza nel campione) = 2975
Esempio di classificatore Naïve Bayes Dato il seguente test: P(Refund=Yes|No) = 3/7 P(Refund=No|No) = 4/7 P(Refund=Yes|Yes) = 0 P(Refund=No|Yes) = 1 P(Marital Status=Single|No) = 2/7 P(Marital Status=Divorced|No) = 1/7 P(Marital Status=Married|No) = 4/7 P(Marital Status=Single|Yes) = 2/3 P(Marital Status=Divorced|Yes) = 1/3 P(Marital Status=Married|Yes) = 0 Per Income: Se No: media = 110 varianza = 2975 Se Yes: media = 90 varianza = 25 • P(X|Class=No) = P(Refund=No| Class=No) P(Married| Class=No) P(Income=120K| Class=No) = 4/7 4/7 0.0072 = 0.0024P(X|Class=No) P(No) = 0.0024 0.7 = 0.00168 • P(X|Class=Yes) = P(Refund=No| Class=Yes) P(Married| Class=Yes) P(Income=120K| Class=Yes) = 1 0 1.2 10-9 = 0P(X|Class=Yes) P(Yes) = 0.0 0.3 = 0.0 Poiché P(X|No)P(No) > P(X|Yes)P(Yes) abbiamo che: P(No|X) > P(Yes|X)=> Class = No
Esempio di classificatore Naïve Bayes Test sugli attributi: A: attributes M: mammals Non-M: non-mammals P(A|M)P(M) > P(A|N)P(N) => Mammals
Classificatore Naïve Bayes: sommario • Robusto rispetto al rumore • Gestisce i valori mancanti ignorando le istanze durante il calcolo della stima di probabilità • Purtroppo l’assunzione di indipendenza può non essere valida per qualche attributo • Per superare queste limitazioni: • Bayesian networks, che combinano ragionamenti Bayesiani con relazioni di causalità tra gli attributi • Alberi di decisione, che ragionano su un attributo alla volta, considerando gli attributi più importanti per primi
Classificatori Instance-Based • Memorizza le istanze di training • => “Ritarda” nella costruzione del modello (lazy learner) • Usa le istanze di training per predire l’etichetta di classe di nuovi casi non visti • Approcci Tipici • k-nearest neighbor • Locally weighted regression • Case-based reasoning
K-nearest neighbor • Istanze come punti nel piano euclideo • attributi continui • Richiede tre cose: • L’insieme di istanze memorizzate • Metrica di Distanza • Il valore di k, il numero di vicini “nearest” da estrarre • Per la classificazione: • Estrai ik nearest neighbors • Usa le etichette di classe dei nearest neighbors per determinare l’etichetta di classe dell’istanza non vista (es., attraverso il voto di maggioranza)