(Normalized Compression Distance) Gruppo MAPAG Ingenito Antonio 0521000141 Con il termine classificazione ci si riferisce al piazzamento di oggetti di test sconosciuti in una della categorie ricavate dall'insieme di oggetti di training. Tratteremo la combinazione tra NCD ed un modulo di machine learning • • • • L'obiettivo di una procedura di classificazione è di fare le buone previsioni basate sui dati di training dell'input. Un esperto umano prepara un insieme di n esempi di training. Ogni esempio di training contiene un vettore di input x d-dimensionale ed una etichetta y dell'obiettivo del training. y deve essere scelto da un insieme L di etichette. L'accuratezza è limitata all'accuratezza delle etichette del training set. • • • Una sessione di training esegue un modello M dell'input o dei dati di training (xi, yi) per 1≤i≤n Dopo che M sia stata calcolata da un classifier learning algorithm, denominato trainable classifier system, viene usata per classificare gli oggetti di test sconosciuti xtest, anche della dimensione d Per ogni oggetto ci sarà in output un elemento appartenente ad L Uno dei primi sistemi che hanno usato i classificatori sono stati gli OCR(Optical Character Recognition) ossia a partire da un’immagine Bitmap Rasterized (che è un matrice di valori) e convertirla in caratteri ASCII con un algoritmo di recognition dei simboli. In una fase di preprocessing, l’immagine, viene suddivisa in sotto immagini, ognuna contenente un unico simbolo (o glyph). Ogni quadrato ha lo stesso formato e il glyph è centrato. I pixel possono non essere letti in ordine e convertiti in una successione dimensioni x = (x1, . . . , xd), il pixel i corrisponde alla dimensione xi Per ogni pixel, un colore di background è rappresentato da 0 e da un colore di foreground da 1 Ogni x è un vettore binario con la dimensione uguale al numero di pixel dell’immagine del singolo carattere ottenuto della fase di preprocessing che circonda ogni simbolo L‘output del sistema di classificazione è un singolo carattere preso in un’insieme di caratteri possibili Alla procedura di training si da in input una sequenza di training ((x1, y1)...,(xn, yn)) e darà in output un classificatore "istruito" M. Il classificatore M dovrà essere utilizzato per ogni nuovo esempio x(vettore di pixel che rappresenta un carattere) per fare la predizione della corrispondente classe y(l’attuale carattere) Il più semplice classificatore è denominato classificatore binario. Questo tipo di classificatore può produrre soltanto due etichette in output per ogni caso della prova. Le etichette sono scritte solitamente +1 e -1 o 0 e 1 secondo il problema Ci sono due modi per creare classificatori multi classe a partire da classificatori binari: ◦ one-of-k style ◦ A Coppia Un esempio comune della classificazione binaria è lo spamfiltering problem. Questo problema deve determinare se un dato messaggio di email è non automaticamente una pubblicità commerciale indesiderata (Spam) o prima che sia portato all'attenzione di un utente del email. Un altro esempio di classificatore è il classificatore dei multiclass classifier. Questo tipo di classificatore applica più di due tipi di etichette differenti. Ciò è utile nei casi di riconoscimento di una cifra scritta a mano, dove ci sono almeno dieci etichette differenti per le cifre scritte a mano che devono essere date in output one-of-k style: un classificatore è addestrato per ogni classe, per ognuna delle k classi del problema di classificazione multiclass. Ogni classificatore è istruito per distinguere solo membri della propria classe e rifiutare membri di ogni altra classe(return 0) Istruisce a coppia classificatori binari separati per distinguere ogni un singola coppia di classi disordinate, prese in considerazione È usato uno schema di “votazione” per determinare la classe vincitrice tra tutti i classificatori, per ogni test in input. Questo provoca O(k2) classificatori per k classi One-of-k è meno esatto ma più semplice e veloce A coppia è più accurata ma meno veloce Il più semplice modo per usare NCD per classificare è lo scegliere, per ognuna delle k classi un singolo oggetto prototipo che in qualche modo catturano l’essenza della categoria. Se volessimo distinguere l’inglese dal cinese, si potrebbe usare un dizionario per l’inglese come prototipo per la classe inglese ed un dizionario per il cinese come prototipo per la classe cinese. la classificazione è fatta calcolando l’NCD dell'oggetto di test con ciascuno dei k oggetti del prototipo e selezionando la classe che corrisponde all'oggetto con il minimo valore di NCD Questo metodo, funziona bene per alcuni domini, mentre ci sono piccoli problemi di classificazione su molti altri di un errore incorreggibile Questi problemi, sono dovuti al fatto che le classi diverse di molti problemi(come le classi dei caratteri dell’OCR), spesso non sono ben bilanciate sotto alcuni tipi di compressori. La classe del carattere di pixel del numero ”1” è sufficientemente sottile ed ha un alto valore di NCD confrontata con molti altri membri della classe degli 1. Diversamente con il numero 8, che ha una ricca combinazione di figure e tende a comprimere bene la maggior parte delle altri immagini dovute all’ampia varietà di match possibili Questo porta ad un errore costante che non può essere migliorato poiché non sono disponibili cambiamenti naturali. La più semplice soluzione del problema per usare NCD con una classificazione molto accurata è quella di combinarla con un sistema di classificazione istruibile usando NCD ed una tecnica di estrazione delle caratteristiche. Un sistema di classificazione istruibile prova a trovare le relazioni funzionali in un range discreto (l’insieme di classi) Come le reti neurali e la SVM(Support Vector Machines), sono costruiti su algoritmi di learning continui, che fanno parte di un’ampia classe di algoritmi di computer learning. Data una sequenza di training, ◦ (x1, y1), . . . , (xn, yn) Impara/da come output una funzione continua M mappando un vettore di input ddimensionale in reali unidimensionali Nello stesso modo in cui impara, l’algoritmo di training può essere trasformato in un algoritmo di learning per classificatori binari. Classificando il test vector x = 1 se M(x)>0 x=-1 se M(x)<0 Applicando questa idea, ad un problema di oggetti sconosciuti, in un qualche sono convertiti in un vettore di dimensioni fissate, usando lo stesso ordine di proiezione usata da NCD. Una delle tecniche più semplici è di creare d oggetti dome ancore ed usarle per convertirle tutti gli altri oggetti dell’esperimento in vettori d-dimensionali Ciò può essere memorizzato usando l'oggetto ancora ai per calcolare la dimensione del vettore i per 1≤i≤d Cioè per oggetto o calcoliamo il corrispondente x = (x1..., xd) usando ◦ xi = NCD(o, ai). L’ancora può essere scelta da un esperto umano o in modo casuale da un grande insieme di oggetti di training. Si consiglia di prendere almeno un ancora per ogni categoria in modo da non avere abbassamento dell’accuratezza dovuta all’insufficiente variazione dell’ancoraggio NCD può usare le ancore Può essere usato anche con la Normalizzazione delle Distanze di Google(NDG) Nella scelta di un sistema di learning con l’estrazione di caratteristiche mediante ancore sembra la migliore Una particolare classe di algoritmi di learning sono chiamati Universal Continuous Funcution Lerners che includono ◦ Reti Neurali ◦ SVM (Support Vector Machine) La proprietà di Universal Learning in questo contesto significa che possiamo approssimare ogni funzione continua ad un qualsiasi alto grado di accuratezza dato un sufficiente numero di dati di training vicini al punto che stiamo prendendo in considerazione Usando questa proprietà su un classificatore, si assicura un aumento di affidabilità ed ottimalità dei risultati generati rispetto ad molti altri algoritmi di learning specializzati Sia le reti neurali che la SVM, prendono in input un insieme di etichette dei dati di training ed alcuni modelli parametri specializzati che devono essere settati. In generale i parametri specializzati, sono settati da un esperto umano o da un insieme di procedure automatiche usando crossvalidation basate su parameter scanning Hanno il vantaggio di essere sistemi di classificazione universali Hanno tantissime procedure di training ◦ In questa tesi sono state scelte Fast Backpropagation Self Organizing Maps(SOM) ◦ SOM non è stato progettato esplicitamente per la classificazione, ma è stato facilmente adattato per essere usato per la classificazione in quando usato congiuntamente alla metrica di compressione come NCD C’è stata una grande difficoltà con tutti i tipi di reti neurali, Alcune regolazioni erano difficili da mettere appunto Ci sono delle componenti non lineari(funzione di trasferimento) ed alcune scelte come le funzione sigmoid trascendental come l’arcotangente Un altro difficile problema d’affrontare quando si usano molti tipi di reti neurali è il decidere quanti strati debbano essere usati e per ogni specifico livello, quanti debbano avere un certo settaggio Ci sono quattro difficili scelte prima di decidere quale rete neurale e poiché presentano tutte tanti problemi si fanno due scelte di addestramento: ◦ Overlearning ◦ Underlearning Si ha quando ci sono troppi neuroni Durante la fase di training, la rete neurale sembra che abbia una grande accuratezza sui dati, ma essendo troppi, non riesce a generalizzare Quando ci sono pochi neuroni L’esattezza della risposta si ha solo in un numero ristretto di dati in input E’ difficile dire quali siano i parametri migliori I sistemi commerciali usano una elevata quantità di macchinari semi-automatici per aiutare l’utente a settare i parametri Questi problemi portano ad una difficile integrazione tra sistemi easy-to-use e sistemi di addestramento parameter-free La Statistical Learning Theory, detta anche teoria di Vapnik –Chervonenkis, caratterizza le proprietà di algoritmi di apprendimento che permettono loro di generalizzare a dati nuovi elementi appresi in precedenza. Una SVM è un classificatore binario che apprende il confine fra esempi appartenenti a due diverse classi. Funziona proiettando gli esempi in uno spazio multidimensionale e cercando un iperpiano di separazione in questo spazio. L'iperpiano di separazione massimizza la sua distanza (il “margine”) dagli esempi di training più vicini. Proprietà generali delle SVM: ◦ improbabile l'overfitting, ◦ Capacità di gestire dati con molte caratteristiche descrittive, ◦ compattamento dell'informazione Per usare una SVM si ha bisogna scegliere una funzione di Kernel che la corrispondente funzione di trasferimento nelle reti neurali La funzione Kernel va scelta accuratamente per un tipo di problema: è sempre possibile mappare l’input in uno spazio di dimensione maggiore del numero di punti del training set e produrre un classificatore perfetto; tuttavia questi generalizzerebbe malissimo su dati nuovi, per via dell’overfitting. Ci sono due parametri per la SVM ◦ C è la costante delle risposte sbagliate ◦ g rappresenta il kernel e determina il tasso di decadimento esponenziale intorno a ciascuno dei punti di training yi(xi ·w+b)−1 ≥ 0. Ve la risparmio!!! Grazie ;)