Workshop introduttivo sul Machine Learning con Python, per European Physical Society Young Minds Catania.
Agenda:
1. Cosa e' il Machine Learning
2. Tassonomia del Machine Learning
3. Problemi di Regressione
4. Valutazione del modelli
5. Problemi di Classificazione (Cenni)
6. Problemi di Clustering (Cenni)
Per Python si utilizzano:
1. numpy
2. matplotlib
3. sklearn
Codice disponibile su: https://github.com/lucanaso/mlworkshop-eps
2. General Plan
✧ 2 sessioni di 4 ore: sabato 8 maggio + 15 maggio 2021
✧ Slides + codice
✧ Contenuti:
✧ Machine Learning: definizioni e tassonomie
✧ Problemi di Regressione
✧ Valutazione dei modelli
✧ Cenni di problemi di Classificazione e Non-supervisionati
2
Luca Naso
8 Maggio 2021
4. Wikipedia 1
Il Machine Learning (apprendimento automatico) è quella branca
dell'intelligenza artificiale che raccoglie metodi sviluppati negli ultimi
decenni del XX secolo in varie comunità scientifiche [...]; che utilizza
metodi statistici per migliorare la performance di un algoritmo
nell'identificare pattern nei dati.
Ref: https://it.wikipedia.org/wiki/Apprendimento_automatico
4
8 Maggio 2021 Luca Naso
5. Definizione operativa di apprendimento
Si dice che un programma apprende dall'esperienza E con riferimento
a alcune classi di compiti T e con misurazione della performance P,
se le sue performance nel compito T, come misurato da P, migliorano
con l'esperienza E.
Da "Machine Learning" di Tom M. Mitchell (1990)
5
8 Maggio 2021 Luca Naso
6. Wikipedia 2
Nell'ambito dell'informatica, il machine learning è una variante alla
programmazione tradizionale, nella quale in una macchina si
predispone l'abilità di apprendere qualcosa dai dati in maniera
autonoma, senza istruzioni esplicite.
Ref: https://it.wikipedia.org/wiki/Apprendimento_automatico
6
8 Maggio 2021 Luca Naso
7. Wikipedia 1+2
Il Machine Learning è quella branca dell’informatica che dà ai
computer la possibilità di imparare qualcosa senza che questo gli
venga esplicitamente insegnato, tramite l'applicazione di algoritmi su
dati.
Dati = contengono implicitamente la capacità (e. g. una statua di
Canova contiene implicitamente lo stile Neoclassico)
Algoritmi = servono per imparare (estrarre la capacità dai dati)
7
8 Maggio 2021 Luca Naso
8. Risolvere senza sapere la soluzione
Il Machine Learning esplora lo studio e la costruzione di algoritmi che
permettono ai computer di imparare una capacità dai dati.
La macchina impara dai dati, non dall'uomo.
Il ruolo dell'uomo non è spigare la soluzione, ma il metodo.
Possiamo risolvere problemi per i quali non sappiamo la soluzione.
Il ML ci consente di barattare dei dati in cambio di una macchina che
possiede una capacità che noi non abbiamo.
Ref: Luca Naso :)
8
8 Maggio 2021 Luca Naso
9. Esempi
✧ Identificazione dello spam, acquisti online fraudolenti
✧ Ottimizzazione dei prezzi
✧ Stima del rischio (di insolvenza, di incendio, ...)
✧ Face recognition
✧ Sistemi di raccomandazione
✧ Assistenti Vocali
✧ Deep Fake
✧ Auto a guida autonoma
9
8 Maggio 2021 Luca Naso
10. Evoluzione dell'interesse, fino ad oggi
Google Trend per "Machine Learning"
Feb 2020: max assoluto, poi scende
2004 - 2015: tra il 5% ed il 25% del massimo
10
8 Maggio 2021 Luca Naso
13. 2 vie
Classifichiamo i tipi di Machine Learning seguendo due strade:
✧ 1. In base al modo di apprendere
✧ 2. In base agli output prodotti dal modello
13
8 Maggio 2021 Luca Naso
15. 3 tipi di Apprendimento
✧ 1. Apprendimento supervisionato
✧ 2. Apprendimento non supervisionato
✧ 3. Apprendimento rinforzato
15
8 Maggio 2021 Luca Naso
16. Apprendimento Supervisionato e Non
16
8 Maggio 2021 Luca Naso
Informazioni note per ciascuna osservazione del dataset
Non Supervisionato
1. i valori di input
(caratteristiche, features, X)
2. il valore di output desiderato
(target, y)
Supervisionato
1. i valori di input
(caratteristiche, features, X)
2. il valore di output desiderato
(target, y)
17. Apprendimento Supervisionato
✧ Per ciascuna osservazione/dato sono noti:
✧ i valori di input (caratteristiche, features, X)
✧ il valore di output desiderato (target, y)
✧ e.g.
✧ Dato l'investimento in pubblicità (osservazione) sappiamo quante
vendite sono state generate (target)
✧ Data temperatura e vento (osservazione) sappiamo se ha piovuto
(target)
17
8 Maggio 2021 Luca Naso
18. Esempio: Impariamo il cinese
Impariamo i numeri cinesi con l'approccio supervisionato
1. Osservazione = carattere cinese
2. Features = immagine del carattere cinese
3. Target = significato del carattere cinese
18
Luca Naso
8 Maggio 2021
23. Impariamo il cinese: previsioni
✧ Il nostro cervello ha "automaticamente" trovato un modo di
associare ciascun carattere cinese ad un numero
✧ Che numero è questo?
23
8 Maggio 2021 Luca Naso
= ?
24. Apprendimento Non Supervisionato
✧ Per ciascuna osservazione/dato sono noti:
✧ i valori di input (caratteristiche, features, X)
✧ il valore di output desiderato (target, y)
✧ e.g.
✧ Dato un insieme di utenti che visita un sito web, trovare dei gruppi con
comportamenti simili
✧ Date le analisi di pazienti con una certa malattia, trovare l'origine della
malattia
24
8 Maggio 2021 Luca Naso
25. Esempio: Impariamo il cinese
Impariamo i numeri cinesi con l'approccio non supervisionato
1. Osservazione = carattere cinese
2. Features = immagine del carattere cinese
3. Target = non c'è
25
Luca Naso
8 Maggio 2021
28. Impariamo il cinese 2: previsioni
六
七 九
28
8 Maggio 2021 Luca Naso
✧ Il nostro cervello ha "automaticamente" raggruppato i caratteri simili insieme
✧ Cosa possiamo dire dei seguenti caratteri?
29. Note sull'apprendimento Non Supervisionato
✧ Quanti gruppi avrai creato?
✧ Come li avrai chiamati?
✧ Che significato avrai dato a ciascun gruppo?
✧ Che elementi avrai usato per caratterizzarli?
La qualità dell'apprendimento dipende moltissimo dal dataset
✧ Potrebbero mancare dei numeri (classi)
✧ Si potrebbero usare feature errate (e.g. lo spessore)
29
8 Maggio 2021 Luca Naso
30. Apprendimento Rinforzato
✧ Molto diverso dai precedenti: c'è un'interazione dinamica tra il
soggetto che impara (macchina) e l'ambiente
✧ La macchina interagisce per raggiungere un certo obiettivo
✧ Ad ogni interazione si dice alla macchina se ha fatto bene o male
✧ La macchina impara quali sono le interazioni che deve fare per
raggiungere l'obiettivo
✧ e.g.
✧ Vincere una partita a scacchi
✧ Guidare una macchina rispettando il codice della strada
30
8 Maggio 2021 Luca Naso
31. Tabella Riepilogativa: Apprendimento
Apprendimento Caratteristica
Supervisionato I dati sono etichettati
Non supervisionato I dati non sono etichettati
Semi-supervisionato Alcuni dati sono etichettati
Rinforzato Ogni status ha un bonus/malus
31
8 Maggio 2021 Luca Naso
33. 3 tipi di Output
In base a ciò che desideriamo sapere dal sistema di ML
✧ 1. Regressione
✧ 2. Classificazione
✧ 3. Clustering
33
8 Maggio 2021 Luca Naso
34. Regressione
✧ Per ogni osservazione vogliamo restituire un valore continuo
✧ Solitamente affrontato in maniera supervisionata
✧ Esempi:
✧ Stipendio (in base ad età e titolo di studio)
✧ Peso (in base ad età, sesso ed altezza)
✧ Valore di mercato delle azioni (in base al rendimento precedente)
✧ Vendite in negozio (in base al prezzo, periodo dell'anno e pubblicità)
34
8 Maggio 2021 Luca Naso
35. Classificazione
✧ Per ogni osservazione vogliamo restituire una classe di
appartenenza
✧ La classe viene scelta tra un insieme di classi note a priori
✧ Solitamente affrontato in maniera supervisionata
✧ Esempi:
✧ Filtri anti-spam
✧ Acquisti fraudolenti
✧ Argomento di un testo
35
8 Maggio 2021 Luca Naso
36. Clustering
✧ Per ogni osservazione vogliamo restituire una classe di
appartenenza (come la classificazione)
✧ La classe di output viene scelta tra un insieme di classi non note a
priori (diverso dalla classificazione)
✧ Questo è un tipico problema non supervisionato
✧ Esempi:
✧ Comportamento degli utenti di un sito web, dei pazienti di un ospedale,
degli automobilisti di una città, ...
✧ Relazioni tra i geni di pazienti con o senza una certa patologia
36
8 Maggio 2021 Luca Naso
37. Tabella Riepilogativa: Output
Nome Output Esempio
Regressione Continuo Peso
Classificazione Discreto - noto a priori = si Spam
Clustering Discreto - noto a priori = no Comportamento
37
8 Maggio 2021 Luca Naso
38. Scelta algoritmo
Conoscere le tassonomie dei problemi di machine learning
rappresenta il primo passo nella scelta del giusto algoritmo
38
8 Maggio 2021 Luca Naso
41. Percorso
1. Abbiamo capito cosa è il Machine Learning (definizione)
2. Abbiamo capito quali sono i vari tipi di Machine Learning
(tassonomia)
3. Vediamo adesso di entrare ancora più a fondo su cosa sia un
modello di Machine Learning
41
Luca Naso
8 Maggio 2021
42. Costruire un modello di ML
✧ Consideriamo il caso di problemi supervisionati e di regressione
✧ Costruire un modello di ML significa trovare una funzione che
associa ad ogni osservazione un valore di output
✧ Le osservazioni sono vettori dello spazio N-dimensionale delle feature
(o predittori), di solito indicate con X
✧ L'output (o target) è uno scalare, di solito indicato con y
✧ Noi vogliamo trovare quella funzione per cui y = f(X)
✧ Vediamolo meglio...
42
8 Maggio 2021 Luca Naso
43. Costruire un modello di ML
✧ Ci sono N osservazioni e P features (per ogni osservazione)
✧ L'osservazione i-esima si scrive come
✧ L'insieme di tutto il dataset si scrive come
✧ Noi cerchiamo quella funzione f per cui
43
8 Maggio 2021 Luca Naso
44. Costruire un modello di ML: esempio
✧ Stimare il peso di una persona in base ad altezza, sesso ed età
✧ feature = altezza, sesso, età
✧ X = vettore a 3 dimensioni
✧ y = peso
✧ L'osservazione i-esima si scrive come
✧ Ed il modello è:
44
8 Maggio 2021 Luca Naso
45. Costruire un modello di ML: esempio
Alcune osservazioni del dataset:
✧ X1 = (181 cm, uomo, 28) -----> y1 = 82 kg
✧ X2 = (164 cm, donna, 25) -----> y2 = 61 kg
✧ X3 = (172 cm, donna, 27) -----> y3 = 63 kg
45
8 Maggio 2021 Luca Naso
46. Componenti aleatorie ed errori
✧ E' accettabile avere osservazioni uguali con target diversi?
✧ X4 = (171 cm, uomo, 31) -----> y4 = 71 kg
✧ X5 = (171 cm, uomo, 31) -----> y5 = 83 kg
✧ Sì, Machine Learning ≠ Interpolazione, per questo in realtà cerchiamo:
✧ Il termine aggiunto non dipende da X ed è scomposto in:
✧ 1. Variabilità intrinseca del fenomeno
✧ 2. Errore del modello di machine learning
46
8 Maggio 2021 Luca Naso
48. Passiamo a Python
Simuliamo un dataset di osservazioni
- con 1 feature
- ed etichettate
Feature: numeri casuali
Etichette: relazione lineare con fluttuazioni
48
Luca Naso
8 Maggio 2021
49. Codice Python
import numpy as np
import matplotlib.pyplot as plt
obs_number = 200
# features
X = 1 + 2 * np.random.random(obs_number)
# targets
a = 3.5
b = 8
fluctuations = 0.2
y = b + a * X + fluctuations * np.random.randn(obs_number)
# plot
plt.plot(X, y, '+')
plt.show()
49
Luca Naso
8 Maggio 2021
51. Simple Linear Regression
✧ La Simple Linear Regression è un algoritmo di machine learning
che si usa quando si verificano 4 condizioni:
✧ 1. La grandezza da prevedere y è quantitativa (regressione)
✧ 2. Il valore di y è noto per tutte le osservazioni (supervisionato)
✧ 3. y dipende principalmente da un solo predittore X (simple)
✧ 4. La dipendenza tra y ed X è di tipo lineare (linear)
✧ In notazione matematica si scrive (equazione retta)
✧ Dove i 2 coefficienti sono delle costanti da determinare
51
15 Maggio 2021 Luca Naso
52. Nuvola di punti --> retta
✧ Interpretazione grafica: la SLR approssima una nuvola di punti
(osservazioni, coppie X, y) in una retta (modello)
✧ Quale retta scegliere?
✧ Quella che rende minimo l'errore
✧ Come misuriamo l'errore?
✧ Con il residuo (Residual Sum of Squares)
✧ Come rendiamo minimo l'RSS?
✧ Con la procedura dei minimi quadrati (vedi Lab 1)
52
15 Maggio 2021 Luca Naso
58. RSS - Residual Sum of Squares
1. Differenza tra valore target osservato e valore target previsto dal
modello per quell'osservazione
2. Elevato al quadrato
3. Sommato su tutte le osservazioni
• MSE (Mean Squared Error) = RSS / N
58
15 Maggio 2021 Luca Naso
59. Minimi Quadrati -> Modello -> Previsioni
✧ Minimi quadrati
✧ Imponendo RSS = minimo si ottengono (analiticamente) i valori dei
coefficienti della combinazione lineare
✧ Modello
✧ Il modello diventa dunque qualcosa tipo:
✧ Previsioni
✧ Per stimare il target y di una nuova osservazione, ci basta sapere il
valore del suo predittore (o feature) X.
59
15 Maggio 2021 Luca Naso
60. Attenzione
Applicare le dovute cautele
1. se X della nuova osservazione è molto diversa dai valori utilizzati
durante l'addestramento (estrapolazione)
2. se le ipotesi iniziali potrebbero non valere, e.g. relazione lineare,
assenza di altri predittori
60
15 Maggio 2021 Luca Naso
62. Passiamo a Python
Creiamo un modello di SLR
- Usiamo LinearRegression da sklearn
- .fit per fare il train
- .predict per le previsioni
- .coef_ e .intercept_ per il modello
62
Luca Naso
15 Maggio 2021
64. Multiple Linear Regression
✧ La Simple Linear Regression è la generalizzazione della SLR a più
predittori:
✧ 1. La grandezza da prevedire y è quantitativa (regressione)
✧ 2. Il valore di y è noto per tutte le osservazioni (supervisionato)
✧ 3. y dipende da 2 o più predittori X_i (multiple)
✧ 4. La dipendenza tra y e gli X_i è di tipo lineare (linear)
✧ In notazione matematica si scrive (iperpiano)
64
15 Maggio 2021 Luca Naso
65. Calcolo del Modello di MLR
Il calcolo del modello segue la stessa logica della SLR:
✧ Si cerca l'iperpiano che rappresenta meglio la nuvola di punti
✧ Si definisce l'errore come RSS
✧ Si minimizza l'RSS
✧ Si determinano i coefficienti del modello (c'è sempre una soluzione
fintanto che N > P, normalmente N >> P)
65
15 Maggio 2021 Luca Naso
66. Modello e previsioni
✧ Esempio di modello finale
✧ Possiamo fare una previsione sul valore del target y nel momento
in cui abbiamo i valori delle feature X_1 e X_2.
✧ Il coefficiente di un predittore misura l'effetto di quel predittore sul
target a parità di tutti gli altri (tenendo gli altri costanti).
66
15 Maggio 2021 Luca Naso
67. Passiamo a Python
Creiamo un modello di MLR
- Aggiorniamo il dataset
- Usiamo ancora LinearRegression da
sklearn
67
Luca Naso
15 Maggio 2021
68. Generalizzazione a modelli non lineari
E’ possibile estendere i modelli di regressione multipla anche a
combinazioni non lineari. Si parla di:
✧ Combinazioni non lineari dallo stesso predittore, e.g. X_4^2
✧ Interazione di più predittori insieme o Sinergia, e.g. X_2 * X_3
68
15 Maggio 2021 Luca Naso
69. Riepilogo
✧ Cosa è il Machine Learning
✧ Come si suddividono i problemi di Machine Learning
✧ Problemi di Regressione
✧ Simple Linear Regression
✧ Multiple Linear Regression
69
15 Maggio 2021 Luca Naso
71. Valutare un modello
Come facciamo a quantificare la bontà di un modello? Ad esempio per
confrontare due modelli tra loro?
✧ Normalmente non sappiamo i "veri" valori dei coefficienti (a dire il
vero non sappiamo neanche la vera forma della funzione f!)
✧ Abbiamo già incontrato il tema dell’errore durante la fase di
training del modello à Least Squares e RSS
✧ Non va bene per diversi motivi, in particolare perché noi siamo
interessati all’errore che commettiamo sulle previsioni (futuro), non
sui dati che già abbiamo (passato).
71
15 Maggio 2021 Luca Naso
72. Errore sulle previsioni
Voi come fareste
a calcolare l’errore che si può fare su nuovi dati
mai usati nell’addestramento dell’algoritmo
?
72
Luca Naso
15 Maggio 2021
73. Test-set error
✧ Si evita di usare tutti i dati quando si fa l’addestramento
✧ è si mettono da parte alcuni dati
✧ è si crea un test-set
✧ Si misura l’errore usando i dati nel test-set
1. Validation
2. LOO Cross Validation
3. K-fold CV
73
15 Maggio 2021 Luca Naso
74. Validation Set
✧ Dividi il dataset in 2 parti uguali: una per il train, una per il test
✧ Pro: Riesce a misurare il test error
✧ Contro:
1. L’errore viene sovrastimato (modello fatto con pochi dati)
2. Stima dell’errore molto variabile (in base a come dividiamo i dati)
74
15 Maggio 2021 Luca Naso
75. Leave-One-Out Cross-Validation
Nasce per risolvere i problemi del Validation set
1. Sovrastima dell’errore
✧ Dividi ancora in 2 parti ma non uguali:
✧ la prima parte contiene tutti i dati tranne 1 e si usa per il train,
✧ la seconda parte contiene 1 solo dato e si usa come per il test
75
15 Maggio 2021 Luca Naso
76. Leave-One-Out Cross-Validation
2. Variabilità dell’errore
✧ Ripeti la procedura N volte (ciascuna osservazione è usata come
test una volta) e fai la media dei risultati
76
15 Maggio 2021 Luca Naso
79. Leave-One-Out Cross-Validation
✧ Pro:
✧ Buona stima dell’errore
✧ Nessuna variabilità
✧ Contro:
✧ computazionalmente costoso (soluzione analitica per minimi quadrati
con modelli lineari o polinomiali)
79
15 Maggio 2021 Luca Naso
80. K-fold Cross-Validation
Come la LOOCV, ma invece di mettere da parte 1 sola osservazione se
ne mettono di più
1. Il dataset si divide in k parti
2. k-1 vengono usate per il train
3. quella da parte per il test.
4. Ripeti k volte, in modo che tutte le parti sono usate per il test, e fai
la media dell’errore.
Questo è lo stato dell’arte per la valutazione di un modello.
80
15 Maggio 2021 Luca Naso
83. Classificazione
Simile alla regressione, ma il target è una categoria, non un numero, e.g.
✧ Etichettare un e-mail come spam o no
✧ Trovare il genere di una persona
✧ Capire un l'argomento di un testo
✧ Segnalare se una transazione e' fraudolenta o no
✧ Associare un segno scritto a mano ad un numero
✧ Identificare la famiglia di una pianta
✧ Si assume che le osservazioni appartengano a due o più classi e si
cerca di identificare a quale classe in base ai valori delle feature
✧ A volte si trasforma il problema in uno di regressione cercando la
probabilità che un'osservazione appartenga alla classe
83
15 Maggio 2021 Luca Naso
84. Classificazione: esempio in Python
✧ Iris dataset
✧ 150 osservazioni
✧ 4 feature
✧ 3 possibili classi: setosa, versicolor, virginica
✧ Algoritmo di classificazione: SVC, C-Support Vector Classification,
un tipo di SVM (Support Vector Machine)
84
15 Maggio 2021 Luca Naso
85. Clustering
Simile alla Classificazione, ma il target non è noto a priori
✧ Non si conoscono le classi, né le appartenenze delle osservazioni
✧ Problemi di "segmentazione"
✧ Capire quanti gruppi di clienti ci sono tra i miei clienti attuali
✧ Si cercano clienti "simili" tra di loro, ma "diversi" dagli altri
✧ La segmentazione può essere applicata a diverse entità:
✧ Clienti di un negozio
✧ Utenti di un sito web
✧ Pagine di un'applicazione
✧ DNA dei grani antichi
85
15 Maggio 2021 Luca Naso
86. Clsutering: esempio in Python
✧ Dataset sintetico (realizzato con make_blobs)
✧ Scegliamo noi quanti gruppi creare
✧ e quante osservazioni usare
✧ Algoritmo: K-Means
✧ Usiamo K-Means sui dati
✧ Riportiamo i risultati in un plot
✧ Confrontiamo con la distribuzione iniziale
✧ Per andare oltre:
✧ Usare K-Means con un diverso numero di gruppi
✧ Modificare la variabilità dei gruppi iniziali
✧ Come scegliere il numero di gruppi (per K-Means)?
86
15 Maggio 2021 Luca Naso
88. Riepilogo
1. Cosa è il Machine Learning
2. Come si suddividono i problemi di Machine Learning
3. Problemi di Regressione
✧ Simple Linear Regression
✧ Multiple Linear Regression
4. Model Selection
✧ Validation Set
✧ LOOCV
✧ K-fold Cross Validation
5. Problemi di Classificazione (cenni)
6. Problemi di Clustering (cenni)
88
15 Maggio 2021 Luca Naso
89. Risorse
89
Luca Naso
8 Maggio 2021
Queste slides: slideshare
www.slideshare.net/LucaNaso/
Il codice: github github.com/lucanaso/mlworkshop-
eps
Luca Naso: Linkedin www.linkedin.com/in/lucanaso/