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
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
400
Prezzo (€)
in 1000’s
300
200
100
0
0
500
1000
1500
2000
2500
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
1. Leggere i dati (e ripulirli se necessario)
2. Analizzarli, per esempio tramite
visualizzazione
3. Identificare il miglior algoritmo di
apprendimento
4. Analizzare le prestazioni
ESEMPIO DI REGRESSIONE
• Obiettivo: sviluppare una funzione che predice
la quantita’ di accessi ad un sito web
Reading in the data
We have collected the web stats for the last month and aggregated them in ch01/
dat a/ web_t r af f i c. t sv (t sv because it contains tab separated values). They are
stored as the number of hits per hour. Each line contains consecutive hours and the
number of web hits in that hour.
I DATI
lines look like the following:
[ 19 ]
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”
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
Scarica

slides - clic