S. giampaolo - La statistica per decidere: l’approccio locale agli indicatori di benessere
Learning Machine Come dare senso ai daticena/materiale/GestioneDB/Machine Learning.pdf · Non è...
Transcript of Learning Machine Come dare senso ai daticena/materiale/GestioneDB/Machine Learning.pdf · Non è...
Cos’è il machine learningIl machine learning (o apprendimento automatico) è una branca
dell’intelligenza artificiale (Artificial Intelligence) che consente ai sistemi
informatici di migliorare le proprie prestazioni, senza essere esplicitamente
riprogrammati, apprendendo automaticamente dall’esperienza.
Questa tecnologia ci può aiutare ad affrontare problemi complessi e ad
elaborare grosse moli di dati.
Machine Learning MethodsLe tre principali categorie dell’apprendimento automatico
1. Apprendimento supervisionato
2. Apprendimento non supervisionato
3. Apprendimento per rinforzo
Machine Learning MethodsApprendimento supervisionatoIl sistema riceve degli esempi etichettati in base all’output che si vuole
ottenere e, a partire da questi dati di training, deve estrarre una regola
generale che associ ad ogni nuovo input l’etichetta corretta.
Machine Learning MethodsFrom: Profolan Object: Il miglior rimedio contro le calvizie
From: 7Slim Object: Come perdere peso?
From: News-info Object: Pubblicazione bandi
From: EasyChair Object: CLiC-it 2018 submission
From: Nicoin Object: Il modo più semplice di smettere di fumare
Spam o E-mail?
Es. Classificazione tramite l’utilizzo degli alberi decisionali
Machine Learning MethodsApprendimento non supervisionatoNon esistono dati etichettati, è il sistema che, a partire dagli input, deve
trovare una struttura nei dati.
Machine Learning MethodsEs. Raggruppamento tramite clustering
Machine Learning Methods
Machine Learning Methods
Machine Learning Methods
Machine Learning MethodsApprendimento con rinforzoIl sistema riceve input dall’ambiente e attua delle azioni. Il sistema
prova ad attuare delle azioni allo scopo di ricevere delle ricompense. Il
sistema cercherà di attuare le azioni che ottimizzano la ricompensa a
seconda dello stato dell’ambiente circostante.
Machine Learning MethodsAzioni Penalità Ricompensa
Ambiente
L’apprendimento nell’informaticaModelli predittivi Modelli Descrittivi
Apprendimento supervisionato
ClassificazioneRegressione
Ricerca sottogruppi
Apprendimento non supervisionato
Clustering predittivo
Clustering descrittivoRicerca regole di associazione
L’apprendimento nell’informaticaModelli predittivi Modelli Descrittivi
Apprendimento supervisionato
ClassificazioneRegressione
Ricerca sottogruppi
Apprendimento non supervisionato
Clustering predittivo
Clustering descrittivoRicerca regole di associazione
L’apprendimento nell’informaticaModelli predittivi Modelli Descrittivi
Apprendimento supervisionato
ClassificazioneRegressione
Ricerca sottogruppi
Apprendimento non supervisionato
Clustering predittivo
Clustering descrittivoRicerca regole di associazione
Oggi vedremo laClassificazione Testuale
Terminologia1. Feature: è il formalismo utilizzato per rappresentare un oggetto (negli esempi che
vedremo oggi l’oggetto è un testo)2. Task: è il problema che si vuole affrontare e risolvere (per esempio, la
classificazione di E-mail tra ‘Spam’ e ‘E-mail regolari’)3. L'algoritmo di apprendimento: è un metodo matematico/statistico/logico
utilizzato per creare un modello4. I dati di training: sono i dati che vengono utilizzati da un algoritmo di
apprendimento per creare un modello5. Il modello: è l’output di un algoritmo di apprendimento ottenuto addestrandolo
con un determinato set di dati di training
Il flusso dei dati
Caratteristiche (feature)
Testi da classificare
Modello
Algoritmo di
apprendimento
Testi classificatimanualmente
(train set)
Dati Output
Task
Apprendimento automatico
TerminologiaI dati di training (train set) sono un set di testi classificati (solitamente da degli annotatori manuali) discernendo tra due o più classi.
L’input di un task di classificazione testuale è un set di testi (test set) che si vuole classificare discernendo tra due o più classi (le stesse classi utilizzate nel training set).
l’output un predizione automatica della classe di appartenenza di ogni elemento del test set.
Il flusso dei dati
Caratteristiche (feature)
Testi da classificare
Modello
Algoritmo di
apprendimento
Testi classificatimanualmente
(train set)
Dati Output
Task
Apprendimento automatico
Fermiamoci un attimo
E vediamo un esempio pratico
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
1: Definiamo un taskLo hate speech – espressione tradotta normalmente in italiano come “discorsi d’odio” o
“espressioni d’odio” o “linguaggio d’odio” – consiste in una specifica forma di discriminazione che si estrinseca non attraverso azioni o omissioni, ma mediante deprecabili modalità di
manifestazione del pensiero. Diffuse e reiterate attraverso Internet, tali forme espressive hanno l’effetto di alimentare i pregiudizi, consolidare gli stereotipi e rafforzare l’ostilità di taluni gruppi
di persone, solitamente in maggioranza o in posizione di dominanza in un determinato contesto sociale, nei confronti di altri gruppi con diverse caratteristiche, in genere minoritari.
https://www.agendadigitale.eu/cultura-digitale/le-strategie-di-contrasto-allodio-online-nellunione-europea-46113/
Hate Speech Detection
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
2.1. Raccogliamo un datasetTwitter è il social media più utilizzato dai ricercatori per le analisi sui social media perché fornisce una serie di API (Application programming interface) che consentono di raccogliere i post pubblici pubblicati dagli utenti di questa piattaforma (per saperne di più https://apps.twitter.com/ )Esistono librerie per i più diffusi linguaggi di programmazione che consentono di usare facilmente le API, e tanto codice pronto è reso liberamente disponibile dai programmatori: https://github.com/mirkolai/twitter-experiment
2.2. Raccogliamo un datasetPotremmo interrogare le API di twitter chiedendo di ricevere solo tweet che contengono determinate parole chiave.Ad esempio, potremmo focalizzarci sull’analisi dell’hate speech online rivolto agli immigranti e analizzare i tweet che contengono almeno una di queste parole:
[ migrant*, immigrat*, clandestin* ,stranier*]
2.3. Raccogliamo un datasetFormattiamo i dati nel modo che ci viene più semplice.Potremo, ad esempio, creare un file excel in cui, in ogni riga, è presente l’id di un tweet (il suo codice univoco) e il suo contenuto testuale.id testo
1046604997545414656
Nuova, ennesima, manifestazione pro #immigrati #clandestini a #Milano. Radical chic, buonisti, immigrazionisti, sindacati, coop, onlus, ong, Anpi con la regina degli anti italiani, la Boldrini.Come al solito a loro interessa solo il business dell'accoglienza. https://t.co/N2qiaDh64Y
1046620978544095233
Milano, migliaia in piazza contro razzismo e intolleranza. Anpi: “Vera minaccia non sono i migranti ma le mafie” https://t.co/YutiphXCrl via @fattoquotidiano
1046639560581685250
@giovanniproto67 @pdnetwork meno male che ci sono LORO che manifestano per" più MIGRANTI e più FORNERO per TUTTI..."
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
3.1. Creiamo un train setDobbiamo definire quali sono le classi (etichette) alle quali possono appartenere i tweet.Potremo optare per una classificazione binaria (ricordate Spam e E-mail? ).
Il tweet può contenere hate speech (uso l’etichetta YES) oppure no (uso l’etichetta NO).
3.2. Creiamo un train setNon è assolutamente facile decidere se un tweet contiene hate speech o no. Spesso dipende dalla sensibilità di chi lo legge.
1. Bisogna fornire agli annotatori manuali delle linee guida che definiscono cosa sia l’hate speech ai fini del nostro task
2. Bisogna chiedere a più annotatori di annotare lo stesso tweet in modo da avere più pareri possibili
3.3. Creiamo un train setEsempio di linee guida:
YES: il tweet ha l’effetto di alimentare i pregiudizi, consolidare gli stereotipi e rafforzare l’ostilità verso i migranti
NO: il tweet non alimenta i pregiudizi, non consolida gli stereotipi e non rafforzare l’ostilità verso i migranti
3.4. Creiamo un train setProcuriamoci gli annotatori manuali:
1. Si può chiedere ai colleghi agli amici e conoscenti, ma non è facile trovare qualcuno disposto a dedicare il suo tempo ad annotare qualche migliaio di tweet.
2. Ci vengono in supporto piattaforme online dove, annotatori manuali, si rendono disponibili, previo pagamento, ad annotare i testi per noi. es. https://www.figure-eight.com/
3.5. Creiamo un train setSe gli annotatori manuali etichettano in modo diverso lo stesso tweet si può scegliere di chiedere un ulteriore parere (un’altra annotazione) e di selezionare la classe più utilizzata.
1046604997545414656
Nuova, ennesima, manifestazione pro #immigrati #clandestini a #Milano. Radical chic, buonisti, immigrazionisti, sindacati, coop, onlus, ong, Anpi con la regina degli anti italiani, la Boldrini.Come al solito a loro interessa solo il business dell'accoglienza. https://t.co/N2qiaDh64Y
X
YES
X X X X
3.6. Creiamo un train set
1047919240848838656@MaxBastoni @coccaclaudio Riprendiamoci la nostra città ripulita da clandestini ,abusivi, delinquenti, migranti, spacciatori e nigeriani e zingari YES
1048255760575152129
Lo dovete dare solo agli italiani!che schifo sti stranieri voglio sempre e solo tutto gratis!@luigidimaio non fare la cazzata di darlo a tutti dallo solo agli italiani nati in italia no stranieri!leggete ste merde straniere vogliono solo soldi facili!👇https://t.co/zanyD7Y0kL
YES
1053063253654409216
Non fare le piste ciclabili per far dispetto ai migranti è la versione razzista di tagliarselo per far dispetto alla moglie. https://t.co/zzovf3WwK2 NO
1055101652557094913
"Sciacallo!" gridano al Ministro dell'Interno, accorso per un omicidio, quelli che vanno in crociera a filmare immigrati. #desiree NO
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
4.1. Passare dai testi alle feature
I computer hanno difficoltà a lavorare con i testi, preferiscono avere a che fare con i numeri.
L’approccio più semplice in assoluto è creare una rappresentazione vettoriale di un testo.
L’unione di più testi creerà una matrice.
4.2. Passare dai testi alle feature
Testi
Feature
4.3. Passare dai testi alle feature
Oppure, immaginiamo la matrice come uno scaffale componibile Ikea
● Ogni piano orizzontale dello scaffale rappresenta un oggetto in forma vettoriale (in questo caso un tweet)
● Ogni pila verticale di cassetti rappresenta una caratteristica (feature).
4.3. Passare dai testi alle feature
Testo 1Testo 2Testo 3Testo 4
Feature 1Feature 2Feature 3Feature 4
4.4. Passare dai testi alle feature
id Parola 1
Parola 2
Parola 3
... Parola M
tweet 1
1 1 0 ... 1
...
Tweet N
0 0 1 ... 0
Il train set diventerà una matrice NxM (N righe, M colonne) con 1 riga per ogni tweet e 1 colonna per ogni parola contenuta nel dizionario (la lista delle parole in lingua italiana, o più semplicemente, la lista di tutte le parole presenti almeno in un tweet del train set).
4.3. Passare dai testi alle feature
1047919240848838656@MaxBastoni @coccaclaudio Riprendiamoci la nostra città ripulita da clandestini ,abusivi, delinquenti, migranti, spacciatori e nigeriani e zingari YES
1055101652557094913
"Sciacallo!" gridano al Ministro dell'Interno, accorso per un omicidio, quelli che vanno in crociera a filmare immigrati. #desiree NO
Bag of word (BoW), una feature per ogni parola
id città migranti omicidio ... delinquenti immigrati
etichetta
1047919240848838656
1 1 0 ... 1 0
YES
... ... ... ... ... ... ......
1055101652557094913
0 0 1 ... 0 1
NO
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
5.1. Algoritmo di Machine LearningLa scelta dell'algoritmo di machine learning più adatto per affrontare un determinato task dipende da tanti fattori.Nonostante alcuni fattori possano essere valutati prima della sperimentazione, valutare quale sia il più prestante è fondamentale (vedremo in seguito come si misurano le prestazioni di un modello).
5.2. Algoritmo di Machine LearningLa scelta dell'algoritmo di machine learning più adatto per affrontare un determinato task dipende da tanti fattori.Nonostante alcuni fattori possano essere valutati prima della sperimentazione, valutare il comportamento di diversi algoritmi di machine learning per un determinato task è fondamentale (vedremo in seguito come si misurano le prestazioni di un modello.
Ricordiamo che il modello è l’output dell’algoritmo di machine learning.
5.3. Algoritmo di Machine LearningGli algoritmi di machine learning che possono essere utilizzati per classificare possono essere divisi in base ai loro output:
● Modelli geometrici (per esempio Support Vector Machine)● Modelli probabilistici (per esempio Naïve Bayes)● Modelli logici (per esempio gli alberi decisionali)● Basati su reti neurali
Nella lezione di laboratorio entreremo più in dettaglio su questo punto.
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
6.1. Creare il modelloPer creare un modello bisogna dare “in pasto” all’algoritmo di machine learning la rappresentazione vettoriale di un train set. Nella lezione di laboratorio faremo pratica su questo punto.
6.2 Creare il modello1047919240848838656
@MaxBastoni @coccaclaudio Riprendiamoci la nostra città ripulita da clandestini ,abusivi, delinquenti, migranti, spacciatori e nigeriani e zingari YES
... …. ...
1055101652557094913
"Sciacallo!" gridano al Ministro dell'Interno, accorso per un omicidio, quelli che vanno in crociera a filmare immigrati. #desiree NO
Modello
Algoritmo di
apprendimento
Apprendimento automatico
train set
1 1 0 ... 1 0
YES
... ... ... ... ... ......
0 0 1 ... 0 1
NO
Rappresentazione vettoriale del train set
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
7.1. Valutare il modelloL’etichetta assegnata del modello viene chiamata predizione.
L’etichetta assegnata dall’annotatore umano viene chiamata gold label.
Il modello deve “azzeccare” (predirre) l’etichetta (classe) assegnata ad un testo avvicinandosi il più possibile alle scelte operate dall'annotatore umano (la gold label).
...Ma non possiamo predire i tweet che sono stati usati per addestrare l’algoritmo. Sarebbe come se durante la lezione mi venissero date le risposte delle domande dell’esame...
7.2. Valutare il modelloK-fold validation
5-fold validation (in ogni fase uso 4 parti per addestrare l’algoritmo di apprendimento TRAIN e 1 parte per valutare il modello TEST)Train set Fase 1 Fase 2 Fase 3 Fase 4 Fase 5
7.3. Valutare il modello
Modello
Algoritmo di
apprendimento
Dati Output
Task
Apprendimento automatico
Train
Test
Train set
Predizione Gold
Fase 1
vs
7.3. Valutare il modello
Modello
Algoritmo di
apprendimento
Dati Output
Task
Apprendimento automatico
Train
Test
Train set
Predizione Gold
Fase 2
vs
7.3. Valutare il modello
Modello
Algoritmo di
apprendimento
Dati Output
Task
Apprendimento automatico
Train
Test
Train set
Predizione Gold
Fase 3
vs
7.3. Valutare il modello
Modello
Algoritmo di
apprendimento
Dati Output
Task
Apprendimento automatico
Train
Test
Train set
Predizione Gold
Fase 4
vs
7.3. Valutare il modello
Modello
Algoritmo di
apprendimento
Dati Output
Task
Apprendimento automatico
Train
Test
Train set
Predizione Gold
Fase 5
vs
7.4. Valutare il modelloPredizione Gold
vsSi tratta di valutare quanto la predizione del modello sia “simile” all’annotazione manuale
Due misure comuni sono:
● Accuracy
● F-measure
7.4. Valutare il modelloPredizione Gold
vsL’accuracy misura il numero di volte che il modello ha azzeccatoPredizione
YES
NO
Gold
+
Accuracy
7/(7+3)=0,7
7.4. Valutare il modelloPredizione Gold
vsL’F-Measure è invece una misura più complessa e si calcola come rapporto (media armonica) tra precision e recall
F_YES= 2 (precision_YES*recall_YES)/(precision_YES+recall_YES)
F_NO= 2 (precision_NO*recall_NO)/(precision_NO+recall_NO)
F_AVG= (F_YES+F_NO)/2
Tutti i valori sono compresi tra 0 e 1
7.4. Valutare il modelloPredizione Gold
vs
La precision sulla classe YES misura il numero di volte che il modello ha “azzeccato” la classe YES diviso il numero di volte che il modello ha predetto YES
PredizioneYES
NO
Gold
+
Precision_YES
1/(1+1)=0,5
7.4. Valutare il modelloPredizione Gold
vs
La recall sulla classe YES misura il numero di volte che il modello ha “azzeccato” la classe YES diviso il numero di volte che il modello avrebbe dovuto predire YES
PredizioneYES
NO
Gold
+
Precision_YES
1/(1+2)=0,3
7.4. Valutare il modelloPrecision = quante anatre ho colpito/quanti colpi ho sparato
Recall = quante anatre ho colpito/quante anatre hanno sorvolato il prato
F-measure = media armonica tra precision e recall
7.4. Valutare il modelloPredizione Gold
vsPredizione
YES
NO
Gold
+
F_YES/2=0,1875
*Precision_YES Recall_YES
Precision_YES Recall_YES
+
*0,5 0,3
0,5 0,3
F_YES=0,375
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
Modello
8. Annotare nuovi testi
Testi da classificare
Algoritmo di
apprendimento
Testi classificatimanualmente
(train set)
Output
Task
Apprendimento automatico
Testi predetti
Facciamo Machine learningAbbiamo bisogno di:
1. Definire un task da risolvere2. Raccogliere un dataset di testi3. Creare un train set di testi annotati4. Rappresentare i testi tramite feature5. Scegliere un algoritmo di machine learning 6. Creare il modello7. Valutare il modello8. Annotare testi per i quali non è stata definita un’etichetta
Progetto in corso
Anteprima del sito controlodio.it
Versione beta: http://beta.controlodio.it/
Questionario sull’usabità: https://docs.google.com/forms/d/10V6dJN771SqL6jLlq53tvS6HFEsNf-WM
Fc7DzwDgmlA/edit?ts=5c01261d
L’importanza dell’apprendimentoIl caso della vespa Sphex