TEORIE E TECNICHE DEL RICONOSCIMENTO Apprendimento automatico Introduzione a SciKit-Learn
FACCIAMO UN PASSO INDIETRO … Molti dei metodi per interpretare testi che abbiamo visto sono basati su CLASSIFICATORI appresi usando tecniche di APPRENDIMENTO AUTOMATICO: Classificazione di documenti in spam / non spam Sentiment analysis Classificazione delle parti del discorso Etc etc
CLASSIFICATORI Un CLASSIFICATORE e’ una FUNZIONE da oggetti che si vogliono classificare a etichette DISCRETE La disambiguazione delle parti del discorso e molti altri problemi in LC possono essere visti come problemi di classificazione Determinare la parte del discorso di un token Assegnare valore SPAM/NO SPAM a un messaggio email Assegnare un valore positivo / negativo ad una recension
CLASSIFICATORI COME FUNZIONI TOKEN POS La DT mamma NN di OF Giacomo NNP ha HV
UNA VISIONE GEOMETRICA DELLA CLASSIFICAZIONE SPAM NON-SPAM
VISIONE GEOMETRICA DELLE FUNZIONI
IL RUOLO DELL’APPRENDIMENTO AUTOMATICO Un classificatore potrebbe essere codificato a mano (in Python, per esempio) Ma nella linguistica computazionale moderna, e in moltre altre aree dell’intelligenza artificiale, questi classificatori non vengono specificati a mano, ma vengono APPRESI AUTOMATICAMENTE a partire da esempi.
APPRENDIMENTO E LA DAMA Il termine ‘Machine Learning’ e’ stato coniato negli anni ‘50 da Samuel, che sviluppo’ tecniche di apprendimento automatico per sviluppare un sistema che imparasse a giocare a dama
Machine Learning definition Arthur Samuel (1959). Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed. Tom Mitchell (1998) Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.
ALTRE APPLICAZIONI Robotica (per esempio veicoli autonomi)
APPROCCI ALL’APPRENDIMENTO SUPERVISIONATO: dato un insieme di esempi di input / output, trovare una associazione che predica accuratamente l’output associato ad un certo input NON SUPERVISIONATO o CLUSTERING: dato un insieme di esempi non etichettati, raggruppare gli esempi in gruppi di oggetti “simili” (CLUSTER)
APPRENDIMENTO SUPERVISIONATO
APPRENDIMENTO SUPERVISIONATO IN NLTK >>> featuresets = [(gender_features(n), g) for (n,g) in names] >>> train_set, test_set = featuresets[500:], featuresets[:500] >>> classifier = nltk.NaiveBayesClassifier.train(train_set) >>> classifier.classify(gender_features('Neo')) 'male' >>> classifier.classify(gender_features('Trinity')) 'female'
DUE TIPI DI APPRENDIMENTO SUPERVISIONATO
CLASSIFICAZIONE: Spam, non-spam Classification Discrete valued output (0 or 1) 1(Y) Spam? 0(N) Length of message (words) Length of message (words)
REGRESSIONE: PREDIRRE IL COSTO DELLE CASE Prezzo (€) in 1000’s Dimensione in m2 Supervised Learning “right answers” given Regression: Predict continuous valued output (price)
APPRENDIMENTO AUTOMATICO IN PYTHON Come abbiamo visto, la libreria NLTK permette di apprendere diversi tipi di classificatori a partire da testi Ma in Python esistono diverse librerie piu’ generali Useremo la libreria SciKit-Learn
SCIKIT-LEARN Una libreria open-source di funzioni per l’apprendimento automatico Basata su numpy, scipy, e matplotlib Fornisce funzioni per Classificazione Regressione Clustering Riduzione di dimensionalita’ Sito web: http://scikit-learn.org/stable/
APPRENDIMENTO AUTOMATICO CON SCIKIT-LEARN Leggere i dati (e ripulirli se necessario) Analizzarli, per esempio tramite visualizzazione Identificare il miglior algoritmo di apprendimento Analizzare le prestazioni
ESEMPIO DI REGRESSIONE Obiettivo: sviluppare una funzione che predice la quantita’ di accessi ad un sito web
I DATI
LEGGERE I DATI
VISUALIZZARE I DATI
VISUALIZZARE I DATI: CODICE
APPRENDERE UNA FUNZIONE Nell’apprendimento supervisionato (sia regressione che classificazione) si cerca di trovare la funzione che fornisca la “migliore rappresentazione dei dati” Si definisce “migliore rappresentazione dei dati” come “rappresentazione che minimizza l’ERRORE”
MINIMIZZARE L’ERRORE
ERRORE NEL CASO DELLA REGRESSIONE
IMPARARE LA FUNZIONE CHE RAPPRESENTA MEGLIO I DATI
VISUALIZZARE IL RISULTATO Dopodiche’ e’ chiaro che c’e’ un problema con l’idea che la funzione sia una linea retta La funzione approssima bene I dati le prime quattro settimane
UN’APPROSSIMAZIONE MIGLIORE
ANCORA MEGLIO?
OVERFITTING Aumentando il grado del polinomio otteniamo delle funzioni che ottengono risultati migliori `memorizzando’ i dati di addestramento, ma non generalizzano a sufficienza
TRAIN E TEST Come nei casi di classificazione visti in precedenza, per trovare la soluzione migliore vogliamo dividere I dati in train e test e valutare solo su tes
LEZIONE DI BASE Sviluppando algoritmi di apprendimento automatico e’ importante non limitarsi a provare tutti I metodi possibili e tutti I parametri possibili, ma cercare di capire cosa sta succedendo (per esempio visualizzando i dati) e scegliere sulla base dell’analisi
PACCHETTI COMPRESI CON SCIKIT-LEARN NumPy Operazioni su array SciPy Contiene implementazioni di praticamente tutti gli algoritmi numerici
NUMPY
SCIPY
LETTURE
QUESTA LEZIONE Echert & Coelho, capitolo 1