SlideShare une entreprise Scribd logo
1  sur  67
saturday 2018
MACHINE LEARNING IN ML.NET Marco Zamana
#vssatpn
COSA VUOLE DIRE MACHINE LEARNING
COSA VUOLE DIRE MACHINE LEARNING
Machine learning è un tecnica di data science
che permette di utilizzare dei dati per per prevedere
comportamenti, risultati e tendenze futuri.
COSA VUOLE DIRE MACHINE LEARNING
COSA VUOLE DIRE MACHINE LEARNING
COSA VUOLE DIRE MACHINE LEARNING
Quindi il Machine Learning è un insieme di azioni
Ma per preparare i dati occorre sapere come analizzarli:
Quindi ci serve una rapida introduzione all'analisi scientifica dei dati.
Costruisci e istruisci EseguiPrepara i tuoi dati
LE 5 DOMANDE A CUI
RISPONDE L'ANALISI
SCIENTIFICA DEI DATI
LE 5 DOMANDE A CUI RISPONDE
L'ANALISI SCIENTIFICA DEI DATI
Esistono solo cinque domande a cui l'analisi scientifica dei dati risponde:
È A o B?
È strano?
In che quantità o in che numero?
In che modo sono organizzati i dati?
Qual è il prossimo passo da fare?
LE 5 DOMANDE A CUI RISPONDE
L'ANALISI SCIENTIFICA DEI DATI
È A o B?
Questa è una domanda che ci permette di definire una classificazione a due classi o binaria.
È utile per qualsiasi domanda che può avere solo due risposte possibili.
Ad esempio:
Sarà possibile percorrere le prossime 1.000 miglia con questi pneumatici: Sì o No?
Cosa porta più clienti: un coupon da $ 5 o uno sconto del 25%?
Questa domanda può anche essere riformulata per includere più di due opzioni: È A o B o C o
D e così via? Si tratta in questo caso della classificazione multiclasse ed è utile quando sono
possibili più risposte o diverse migliaia di risposte. La classificazione multiclasse sceglie la più
probabile.
LE 5 DOMANDE A CUI RISPONDE
L'ANALISI SCIENTIFICA DEI DATI
È strano?
Questa è una domanda che ci permette di rilevare delle anomalie.
Il rilevamento delle anomalie segnala eventi o comportamenti imprevisti o
insoliti. Fornisce degli indizi su dove cercare per individuare i problemi.
LE 5 DOMANDE A CUI RISPONDE
L'ANALISI SCIENTIFICA DEI DATI
In che quantità o in che numero?
Questa è una domanda che ci permette di definire delle regressioni.
Possiamo effettuare delle previsioni numeriche e quindi rispondere a qualsiasi
domanda che richiede informazioni numeriche
LE 5 DOMANDE A CUI RISPONDE
L'ANALISI SCIENTIFICA DEI DATI
In che modo sono organizzati i dati?
Questa è una domanda che ci permette di definire il Clustering.
Cioè possiamo separare i dati in "gruppi" naturali per un'interpretazione più semplice.
Esempi comuni di domande di clustering sono:
A quali spettatori piacciono gli stessi tipi di film?
Quali modelli di stampanti condividono lo stesso malfunzionamento?
Riuscendo a capire come sono organizzati i dati, è possibile comprendere meglio, e
prevedere, comportamenti ed eventi.
LE 5 DOMANDE A CUI RISPONDE
L'ANALISI SCIENTIFICA DEI DATI
Qual è il prossimo passo da fare?
Questa è una domanda che ci permette di definire l’apprendimento per rinforzo.
L'apprendimento per rinforzo è stato ispirato dal modo in cui il cervello di topi ed esseri
umani risponde alle punizioni e alle ricompense.
Questi algoritmi apprendono dai risultati e stabiliscono l'azione successiva.
In genere, l'apprendimento per rinforzo è una buona scelta per i sistemi automatizzati che
devono prendere tante piccole decisioni senza la guida umana.
Gli algoritmi di apprendimento per rinforzo raccolgono i dati durante i processi, imparando
dai tentativi e dagli errori.
QUALI SONO I CRITERI DEI
DATI
SONO PRONTI I TUOI DATI PER
L’ANALISI?
Criteri per i dati
Per ottenere le risposte desiderate dall'analisi scientifica dei dati, è necessario fornire
materiale non elaborato di alta qualità.
In data science esistono alcuni componenti di cui deve essere eseguito il pull
contemporaneamente. Tra questi:
• Rilevanti
• Connesso
• Accurati
• In quantità sufficiente
SONO PRONTI I TUOI DATI PER
L’ANALISI?
Rilevanza dei dati: la differenza
SONO PRONTI I TUOI DATI PER
L’ANALISI?
I dati a disposizione sono connessi?
SONO PRONTI I TUOI DATI PER
L’ANALISI?
Il successivo check per il controllo dei dati è l’accuratezza degli stessi
Per quanto possa sembrare strano i
dati in basso a dx sono accurati
nonostante non siano precisi.
Sono distribuiti uniformemente sul
bersaglio, quindi i nostri dati sono
accurati.
Al contrario nei casi a dx, questi sono
comunque fuori o non abbastanza
uniformi al nostro bersaglio.
SONO PRONTI I TUOI DATI PER
L’ANALISI?
I dati sono sufficienti?
Dati rilevanti, connessi, accurati e in quantità sufficiente rappresentano tutti gli ingredienti necessari per analisi
di data science di alta qualità.
SE FAI UNA DOMANDA, DEVI POTER
RISPONDERE CON I DATI CORRETTI
Porre una domanda ben strutturata
A una domanda vaga non è necessario rispondere con un nome o un numero.
A una domanda strutturate è obbligatorio rispondere con un nome o un numero.
SE FAI UNA DOMANDA, DEVI POTER
RISPONDERE CON I DATI CORRETTI
Si immagini di incontrare per strada un amico che non si vede per tanto tempo.
«Come va?»
Nonostante siete amici da 20 anni vi risponde in maniera vaga e confusa.
Noi siamo maledettamente curiosi e vogliamo costringerlo a essere più preciso.
Cosa facciamo?
Gli poniamo una domanda così precisa da impedirgli di rispondere genericamente.
Es.
«Come va con il tuo lavoro da direttore?»
«Tuo figlio gioca ancora a calcio?»
SE FAI UNA DOMANDA, DEVI POTER
RISPONDERE CON I DATI CORRETTI
Una destinazione è fondamentale per valutare l’esempio di risposta
SE FAI UNA DOMANDA, DEVI POTER
RISPONDERE CON I DATI CORRETTI
Riformulare la domanda:
Come si pone una domanda è l’indicazione per individuare l'algoritmo che può
fornire una risposta.
PREVEDERE LA RISPOSTA
RICORDA:
Per creare un modello è essenziale la raccolta di dati rilevanti, accurati, connessi, in
quantità sufficiente.
Un modello non è altro che una storia semplificata dei dati.
«BUT MAYBE»
DEMO STRANA
PREVEDERE LA RISPOSTA
Possiedo un anello che apparteneva a mia nonna con un'incastonatura da
1,35 carati e vorrei farmi un'idea sul suo prezzo.
Prendo un blocco note e una penna nella gioielleria e scrivo il prezzo di
tutti i diamanti e il relativo peso in carati.
Iniziando dal primo diamante, pesa 1,01 carati e costa $ 7.366.
Adesso faccio la stessa cosa con tutti gli altri diamanti presenti in negozio.
PREVEDERE LA RISPOSTA
In base alla tabella di prima:
Porre una domanda ben strutturata
La domanda verrà adesso posta in modo ben strutturato: "Quale sarà il costo di
acquisto di un diamante da 1,35 carati?"
Nell'elenco non c'è un diamante da 1,35 carati, quindi sarà necessario usare gli altri
dati per ottenere una risposta a questa domanda.
PREVEDERE LA RISPOSTA
Per prima cosa verrà disegnata una linea numerica
orizzontale, detta asse, su cui saranno indicati i
pesi. L'intervallo dei pesi va da 0 a 2, quindi
verranno disegnati una linea che copre questo
intervallo e dei trattini per ciascun mezzo carato.
Adesso, per registrare il prezzo verrà tracciato un
asse verticale che sarà connesso all'asse orizzontale
del peso. L'asse verticale sarà suddiviso in unità di
dollari. A questo punto viene fuori un set di assi
coordinati.
Grafico dei dati esistenti
PREVEDERE LA RISPOSTA
Questo è un grafico di dispersione, un'ottima
soluzione per visualizzare i set di dati numerici.
Bisognerà fare la stessa cosa per ogni diamante
presente nell'elenco.
Una volta terminato, questo è quello che si
ottiene: un mucchio di punti, uno per ogni
diamante.
PREVEDERE LA RISPOSTA
Il modello ci siamo!
Il fatto che non tutti i punti si trovino esattamente sulla linea
va bene.
Esiste infatti il modello, ovvero la linea, anche se a ogni
punto vengono associati alcuni disturbi o varianze.
Vi è quindi la perfetta relazione sottostante e vi è il mondo
reale dinamico che aggiunge disturbo e incertezza.
Dal momento che si cerca di rispondere alla
domanda Quanto costa?, è possibile parlare
di regressione. E visto che viene usata una linea dritta, si
tratta di una regressione lineare.
PREVEDERE LA RISPOSTA
Usi il modello e trovi la risposta
Il modello è pronto dobbiamo solo porgli la domanda:
Quando costerà un diamante da 1,35 carati?
Per rispondere a questa domanda, occorre partire da
1,35 carati e disegnare una linea verticale. Esattamente
nel punto in cui incrocia la linea del modello, verrà
tracciata una linea orizzontale verso l'asse dei dollari.
Va a colpire proprio i 10.000 dollari.
Boom Shakkalakka!
Quella è la risposta: un diamante da 1,35 carati costa
circa $ 10.000.
PREVEDERE LA RISPOSTA
Creare un intervallo di confidenza
E’ precisa questa previsione?
Per arrivare a capirlo bisogna disegnare un
inviluppo attorno alla linea di regressione che
include la maggior parte dei punti.
Questo inviluppo viene detto intervallo di
confidenza: si è abbastanza sicuri che i prezzi
rientrino in questo inviluppo, poiché è stato così
per la maggior parte degli stessi prezzi in
precedenza.
RECAP
Cosa abbiamo fatto?
• Abbiamo posto una domanda a cui è stato possibile rispondere con i dati
• È stato creato un modello usando una regressione lineare.
• È stata realizzata una previsione, completa di intervallo di confidenza
E SE AVESSIMO VOLUTO PIÙ
INFORMAZIONI?
Se fossero state necessarie ulteriori informazioni, come:
• il taglio del diamante
• le variazioni di colore (quanto si avvicina al bianco il diamante)
• il numero di inclusioni nel diamante
In quel caso, la matematica diventa utile.
Se le colonne sono più di due, è difficile disegnare punti su carta.
La matematica consente di adattare una determinata linea o un determinato piano ai
dati in modo molto preciso.
IL FRAMEWORK
IL FRAMEWORK
IL FRAMEWORK
Cosa è?
ML.NET, un framework di apprendimento automatico multipiattaforma e open
source.
ML.NET permette allo sviluppatore .NET di sviluppare i propri modelli dati e includere
le ML personalizzate nelle proprie applicazioni.
Questo senza una precedente esperienza nello sviluppo o nell'ottimizzazione dei
modelli di apprendimento automatico.
(But Maybe…(cit.))
IL FRAMEWORK
Nuovo progetto?
ML.NET è stato originariamente sviluppato in Microsoft Research e si è evoluto
significativamente nell'ultimo decennio.
Viene utilizzato in molti gruppi di prodotti in Microsoft come Windows, Bing, Azure e
altri
IL FRAMEWORK
IL FRAMEWORK
ML.NET è stato lanciato come parte di .NET Foundation e il repository contiene le API
.NET C # per il training e l’uso dei modelli, oltre a una grande varietà di
trasformazioni e di apprendimenti necessari per molte attività di ML come la
regressione e classificazione.
ML.NET ha lo scopo di fornire il flusso di lavoro end to end per fondere assieme ML e
applicazioni .NET per la pre-elaborazione, ingegneria delle funzioni, la modellazione,
la valutazione e l’operatività.
ML.NET include tutti i tipi e il runtime. Assieme sono necessari per tutti gli aspetti
dell'apprendimento automatico, compresi i tipi di dati principali, condotte estensibili,
matematica ad alte prestazioni, strutture dati per dati eterogenei, supporto di
strumenti e altro ancora.
IL FRAMEWORK
IL FRAMEWORK
RoadMap
Nel tempo, ML.NET svilupperà altri scenari ML come i sistemi di raccomandazione, il
rilevamento di anomalie e altri approcci, come l'apprendimento approfondito,
sfruttando librerie di deep learning come TensorFlow, Caffe2 e CNTK e librerie
generali di apprendimento automatico come Accord.Net
DEMO 1
ANALISI DEI SENTIMENTI
ANALISI DEI SENTIMENTI
PROBLEMA
Il problema consiste nel predire se la recensione di un cliente è positiva o negativa.
Questo tipo di predizione è detta Classificazione Binaria
Questi commenti sono stati processati, cioè gestiti da delle persone, e ad ogni
commento è stata assegnata una label:
0 - negativo
1 – positivo
Costruiremo un modello che analizza una stringa e predice un valore di sentimento
uguale a 1 o 0.
ANALISI DEI SENTIMENTI
Step by step
DEMO2 - MULTICLASSIFICAZIONE IRIS
MULTI CLASSIFICAZIONE IRIS
PROBLEMA
Questo problema è incentrato sulla previsione del tipo di un fiore dell’iris (setosa,
versicolor o virginica) in base ai parametri del fiore come la lunghezza del petalo, la
larghezza del petalo, ecc.
Per risolvere questo problema dovremmo costruire un modello che prende in input 4
parametri:
• petal length
• petal width
• sepal length
• sepal width
MULTI CLASSIFICAZIONE IRIS
PROBLEMA
E predire a che tipo iris appartiene il fiore:
• setosa
• versicolor
• Virginica
Per essere precisi, il modello restituirà le probabilità che il fiore appartenga a ciascun
tipo.
MULTI CLASSIFICAZIONE IRIS
Step by step
DEMO 3 - CLUSTERING DI IRIS
CLUSTERING DI IRIS
PROBLEMA
Per dimostrare l'API di clustering in azione, utilizzeremo tre tipi di fiori di iris:
• setosa
• versicolor
• virginica
Tutti loro sono memorizzati nello stesso set di dati.
Anche se il tipo di questi fiori è noto, non lo useremo ed eseguiremo l'algoritmo di
clustering solo sui parametri dei fiori come la lunghezza del petalo, la larghezza del
petalo, ecc. Il compito è raggruppare tutti i fiori in tre diversi cluster. Ci
aspetteremmo che i fiori di diversi tipi appartengano a cluster diversi.
CLUSTERING DI IRIS
PROBLEMA
Tutti i fiori sono memorizzati nello stesso set di dati.
Anche se il tipo di questi fiori è noto, non lo useremo ed eseguiremo l'algoritmo di clustering
solo sui parametri dei fiori come la lunghezza del petalo, la larghezza del petalo, ecc.
Il compito è raggruppare tutti i fiori in tre diversi cluster.
Ci aspetteremmo che i fiori di diversi tipi appartengano a cluster diversi.
Gli input del modello sono i seguenti parametri
• petal length
• petal width
• sepal length
• sepal width
CLUSTERING DI IRIS
Step by step
DEMO 3 - PRONOSTICO TARIFFA DI TAXI IN NY
PRONOSTICO TARIFFA TAXI
PROBLEMA
Questo problema è incentrato sulla previsione della tariffa di un viaggio in taxi a New
York City.
A prima vista, può sembrare che dipenda semplicemente dalla distanza percorsa.
Tuttavia, i venditori di taxi a New York addebiteranno importi variabili per altri fattori
come passeggeri aggiuntivi, pagando con carta di credito anziché contanti e così via.
Questa previsione può essere utilizzata in applicazioni per i fornitori di taxi per
fornire agli utenti e ai conducenti una stima delle tariffe di corsa.
PRONOSTICO TARIFFA TAXI
Per risolvere questo problema costruiremo un modello che prende in input i seguenti
valori:
• vendor ID
• rate code
• passenger count
• trip time
• trip distance
• payment type
E cercheremo di predire il costo della corsa
PRONOSTICO TARIFFA TAXI
Step by step
DEMO 4 – GITHUB LABELER
GITHUB LABELER
PROBLEMA
GitHubLabeler è un'applicazione console .NET Core che:
Partendo da una base di dati contente l’elenco delle label all’interno delle issue di un
repository github (core-fx), crea un modello di ML per insegnare al sistema quale
label deve essere assegnata per un nuovo problema.
L'applicazione leggerà tutte le issue aperte e prive di label dallo specifico repository
GitHub e li etichetterà utilizzando il modello ML addestrato nel passaggio
precedente.
Questo modello ML utilizza algoritmo di classificazione multi-classe e funzionalità
testuali (TextFeaturizer) di ML.NET.
GITHUB LABELER
PROBLEMA
Per risolvere questo problema costruiremo un modello che prende in input i seguenti valori:
• ID - issue's ID
• Area - issue's label (named this way to avoid confusion with the Label concept in ML.NET)
• Title - issue's title
• Description - issue's description
Questo problema può essere svolto in due maniere:
1. utilizzando il file di dati già impostato
2. creando il file .tsv direttamente da github con le colonne di cui sopra.
OTHERS DEMO
OTHERS DEMO
Bike Sharing Demand
Credit Card Fraud Detection
Customer Segmentation
«BUT MAYBE»
ML.NET
Problemi di cuore
Quale Algoritmo è quello giusto?
Dipende da quello che si deve fare.
Per ognuno la documentazione è
abbastanza esaustiva.
Per i task invece vi rimando qui:
https://github.com/dotnet/docs/blob/a848fb04b815
b5337458a17668b3481e9f27370e/docs/machine-
learning/resources/tasks.md
RIFERIMENTI IMPORTANTI
Repository ML.Net
https://github.com/dotnet/machinelearning
Get started with ML.NET in 10 minutes
https://www.microsoft.com/net/learn/machinelearning-ai/ml-dotnet-get-
started-tutorial
Tutorial
https://docs.microsoft.com/it-it/dotnet/machine-learning/tutorials/
ML.NET - Machine learning Samples
https://github.com/dotnet/machinelearning-samples
GRAZIE PER L’ATTENZIONE
Twitter: @marco_zamana
Github: /MarcoZama
Linkedin /zama-marco-zamana
Marco Zamana
Email: marco.zamana1@gmail.com

Contenu connexe

Similaire à ML.NET al Visual Studio Saturday 2018

Disturbo calcolo retescuole [sola lettura]
Disturbo calcolo retescuole [sola lettura]Disturbo calcolo retescuole [sola lettura]
Disturbo calcolo retescuole [sola lettura]
imartini
 
Disturbo calcolo retescuole [sola lettura] x
Disturbo calcolo retescuole [sola lettura] xDisturbo calcolo retescuole [sola lettura] x
Disturbo calcolo retescuole [sola lettura] x
imartini
 
Lo sviluppo del sistema dei numeri
Lo sviluppo del sistema dei numeriLo sviluppo del sistema dei numeri
Lo sviluppo del sistema dei numeri
luciuzza
 
Questionari, tabelle grafici, diagrammi
Questionari, tabelle grafici, diagrammiQuestionari, tabelle grafici, diagrammi
Questionari, tabelle grafici, diagrammi
Dario
 

Similaire à ML.NET al Visual Studio Saturday 2018 (18)

2.6 Comprendere i dati: Analizzare
2.6 Comprendere i dati: Analizzare2.6 Comprendere i dati: Analizzare
2.6 Comprendere i dati: Analizzare
 
2. moda media mediana
2. moda media mediana2. moda media mediana
2. moda media mediana
 
Comprendere i dati: Analizzare
Comprendere i dati: AnalizzareComprendere i dati: Analizzare
Comprendere i dati: Analizzare
 
3.5 Osserva i tuoi dati - Analizza
3.5 Osserva i tuoi dati - Analizza3.5 Osserva i tuoi dati - Analizza
3.5 Osserva i tuoi dati - Analizza
 
3.4 Osserva i tuoi dati - raffina
3.4 Osserva i tuoi dati - raffina3.4 Osserva i tuoi dati - raffina
3.4 Osserva i tuoi dati - raffina
 
Medie2223_Comprendere i dati_analizzare
Medie2223_Comprendere i dati_analizzareMedie2223_Comprendere i dati_analizzare
Medie2223_Comprendere i dati_analizzare
 
3.6 analizzare dati_slide
3.6 analizzare dati_slide3.6 analizzare dati_slide
3.6 analizzare dati_slide
 
Set Based Thinking
Set Based ThinkingSet Based Thinking
Set Based Thinking
 
Disturbo calcolo retescuole [sola lettura]
Disturbo calcolo retescuole [sola lettura]Disturbo calcolo retescuole [sola lettura]
Disturbo calcolo retescuole [sola lettura]
 
Disturbo calcolo retescuole [sola lettura] x
Disturbo calcolo retescuole [sola lettura] xDisturbo calcolo retescuole [sola lettura] x
Disturbo calcolo retescuole [sola lettura] x
 
Machine learning: a cosa servono
Machine learning:   a cosa servonoMachine learning:   a cosa servono
Machine learning: a cosa servono
 
3.4 Comprendere i dati: raffinare
3.4 Comprendere i dati: raffinare3.4 Comprendere i dati: raffinare
3.4 Comprendere i dati: raffinare
 
Lo sviluppo del sistema dei numeri
Lo sviluppo del sistema dei numeriLo sviluppo del sistema dei numeri
Lo sviluppo del sistema dei numeri
 
Introduzione ai Big Data e alla scienza dei dati - Machine Learning
Introduzione ai Big Data e alla scienza dei dati - Machine LearningIntroduzione ai Big Data e alla scienza dei dati - Machine Learning
Introduzione ai Big Data e alla scienza dei dati - Machine Learning
 
Big data-simonetta
Big data-simonettaBig data-simonetta
Big data-simonetta
 
Come sfruttare il potere dei dati: alla scoperta dell’Analisi Predittiva
Come sfruttare il potere dei dati: alla scoperta dell’Analisi PredittivaCome sfruttare il potere dei dati: alla scoperta dell’Analisi Predittiva
Come sfruttare il potere dei dati: alla scoperta dell’Analisi Predittiva
 
Modello er (2)
Modello er (2)Modello er (2)
Modello er (2)
 
Questionari, tabelle grafici, diagrammi
Questionari, tabelle grafici, diagrammiQuestionari, tabelle grafici, diagrammi
Questionari, tabelle grafici, diagrammi
 

Plus de Marco Zamana

Plus de Marco Zamana (7)

Ml.net model lifecycle with azure dev ops
Ml.net model lifecycle with azure dev opsMl.net model lifecycle with azure dev ops
Ml.net model lifecycle with azure dev ops
 
ML.NET Model Lifecycle with Azure DevOps - Devops heroes 2019
ML.NET Model Lifecycle with Azure DevOps - Devops heroes 2019 ML.NET Model Lifecycle with Azure DevOps - Devops heroes 2019
ML.NET Model Lifecycle with Azure DevOps - Devops heroes 2019
 
Azure saturday Pordenone 2019 - ML.NET model lifecycle with azure devops
Azure saturday Pordenone 2019 - ML.NET model lifecycle with azure devopsAzure saturday Pordenone 2019 - ML.NET model lifecycle with azure devops
Azure saturday Pordenone 2019 - ML.NET model lifecycle with azure devops
 
Automated machine learning - Global AI night 2019
Automated machine learning - Global AI night 2019Automated machine learning - Global AI night 2019
Automated machine learning - Global AI night 2019
 
Digital 1nn0vation saturday pn 2019 - Azure Machine Learning Service
Digital 1nn0vation saturday pn 2019 - Azure Machine Learning ServiceDigital 1nn0vation saturday pn 2019 - Azure Machine Learning Service
Digital 1nn0vation saturday pn 2019 - Azure Machine Learning Service
 
Digital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NETDigital 1nn0vation saturday pn 2019 - ML.NET
Digital 1nn0vation saturday pn 2019 - ML.NET
 
Azure saturday pn 2018 ml
Azure saturday pn 2018 mlAzure saturday pn 2018 ml
Azure saturday pn 2018 ml
 

ML.NET al Visual Studio Saturday 2018

  • 1. saturday 2018 MACHINE LEARNING IN ML.NET Marco Zamana #vssatpn
  • 2. COSA VUOLE DIRE MACHINE LEARNING
  • 3. COSA VUOLE DIRE MACHINE LEARNING Machine learning è un tecnica di data science che permette di utilizzare dei dati per per prevedere comportamenti, risultati e tendenze futuri.
  • 4. COSA VUOLE DIRE MACHINE LEARNING
  • 5. COSA VUOLE DIRE MACHINE LEARNING
  • 6. COSA VUOLE DIRE MACHINE LEARNING Quindi il Machine Learning è un insieme di azioni Ma per preparare i dati occorre sapere come analizzarli: Quindi ci serve una rapida introduzione all'analisi scientifica dei dati. Costruisci e istruisci EseguiPrepara i tuoi dati
  • 7. LE 5 DOMANDE A CUI RISPONDE L'ANALISI SCIENTIFICA DEI DATI
  • 8. LE 5 DOMANDE A CUI RISPONDE L'ANALISI SCIENTIFICA DEI DATI Esistono solo cinque domande a cui l'analisi scientifica dei dati risponde: È A o B? È strano? In che quantità o in che numero? In che modo sono organizzati i dati? Qual è il prossimo passo da fare?
  • 9. LE 5 DOMANDE A CUI RISPONDE L'ANALISI SCIENTIFICA DEI DATI È A o B? Questa è una domanda che ci permette di definire una classificazione a due classi o binaria. È utile per qualsiasi domanda che può avere solo due risposte possibili. Ad esempio: Sarà possibile percorrere le prossime 1.000 miglia con questi pneumatici: Sì o No? Cosa porta più clienti: un coupon da $ 5 o uno sconto del 25%? Questa domanda può anche essere riformulata per includere più di due opzioni: È A o B o C o D e così via? Si tratta in questo caso della classificazione multiclasse ed è utile quando sono possibili più risposte o diverse migliaia di risposte. La classificazione multiclasse sceglie la più probabile.
  • 10. LE 5 DOMANDE A CUI RISPONDE L'ANALISI SCIENTIFICA DEI DATI È strano? Questa è una domanda che ci permette di rilevare delle anomalie. Il rilevamento delle anomalie segnala eventi o comportamenti imprevisti o insoliti. Fornisce degli indizi su dove cercare per individuare i problemi.
  • 11. LE 5 DOMANDE A CUI RISPONDE L'ANALISI SCIENTIFICA DEI DATI In che quantità o in che numero? Questa è una domanda che ci permette di definire delle regressioni. Possiamo effettuare delle previsioni numeriche e quindi rispondere a qualsiasi domanda che richiede informazioni numeriche
  • 12. LE 5 DOMANDE A CUI RISPONDE L'ANALISI SCIENTIFICA DEI DATI In che modo sono organizzati i dati? Questa è una domanda che ci permette di definire il Clustering. Cioè possiamo separare i dati in "gruppi" naturali per un'interpretazione più semplice. Esempi comuni di domande di clustering sono: A quali spettatori piacciono gli stessi tipi di film? Quali modelli di stampanti condividono lo stesso malfunzionamento? Riuscendo a capire come sono organizzati i dati, è possibile comprendere meglio, e prevedere, comportamenti ed eventi.
  • 13. LE 5 DOMANDE A CUI RISPONDE L'ANALISI SCIENTIFICA DEI DATI Qual è il prossimo passo da fare? Questa è una domanda che ci permette di definire l’apprendimento per rinforzo. L'apprendimento per rinforzo è stato ispirato dal modo in cui il cervello di topi ed esseri umani risponde alle punizioni e alle ricompense. Questi algoritmi apprendono dai risultati e stabiliscono l'azione successiva. In genere, l'apprendimento per rinforzo è una buona scelta per i sistemi automatizzati che devono prendere tante piccole decisioni senza la guida umana. Gli algoritmi di apprendimento per rinforzo raccolgono i dati durante i processi, imparando dai tentativi e dagli errori.
  • 14. QUALI SONO I CRITERI DEI DATI
  • 15. SONO PRONTI I TUOI DATI PER L’ANALISI? Criteri per i dati Per ottenere le risposte desiderate dall'analisi scientifica dei dati, è necessario fornire materiale non elaborato di alta qualità. In data science esistono alcuni componenti di cui deve essere eseguito il pull contemporaneamente. Tra questi: • Rilevanti • Connesso • Accurati • In quantità sufficiente
  • 16. SONO PRONTI I TUOI DATI PER L’ANALISI? Rilevanza dei dati: la differenza
  • 17. SONO PRONTI I TUOI DATI PER L’ANALISI? I dati a disposizione sono connessi?
  • 18. SONO PRONTI I TUOI DATI PER L’ANALISI? Il successivo check per il controllo dei dati è l’accuratezza degli stessi Per quanto possa sembrare strano i dati in basso a dx sono accurati nonostante non siano precisi. Sono distribuiti uniformemente sul bersaglio, quindi i nostri dati sono accurati. Al contrario nei casi a dx, questi sono comunque fuori o non abbastanza uniformi al nostro bersaglio.
  • 19. SONO PRONTI I TUOI DATI PER L’ANALISI? I dati sono sufficienti? Dati rilevanti, connessi, accurati e in quantità sufficiente rappresentano tutti gli ingredienti necessari per analisi di data science di alta qualità.
  • 20. SE FAI UNA DOMANDA, DEVI POTER RISPONDERE CON I DATI CORRETTI Porre una domanda ben strutturata A una domanda vaga non è necessario rispondere con un nome o un numero. A una domanda strutturate è obbligatorio rispondere con un nome o un numero.
  • 21. SE FAI UNA DOMANDA, DEVI POTER RISPONDERE CON I DATI CORRETTI Si immagini di incontrare per strada un amico che non si vede per tanto tempo. «Come va?» Nonostante siete amici da 20 anni vi risponde in maniera vaga e confusa. Noi siamo maledettamente curiosi e vogliamo costringerlo a essere più preciso. Cosa facciamo? Gli poniamo una domanda così precisa da impedirgli di rispondere genericamente. Es. «Come va con il tuo lavoro da direttore?» «Tuo figlio gioca ancora a calcio?»
  • 22. SE FAI UNA DOMANDA, DEVI POTER RISPONDERE CON I DATI CORRETTI Una destinazione è fondamentale per valutare l’esempio di risposta
  • 23. SE FAI UNA DOMANDA, DEVI POTER RISPONDERE CON I DATI CORRETTI Riformulare la domanda: Come si pone una domanda è l’indicazione per individuare l'algoritmo che può fornire una risposta.
  • 24. PREVEDERE LA RISPOSTA RICORDA: Per creare un modello è essenziale la raccolta di dati rilevanti, accurati, connessi, in quantità sufficiente. Un modello non è altro che una storia semplificata dei dati.
  • 27. PREVEDERE LA RISPOSTA Possiedo un anello che apparteneva a mia nonna con un'incastonatura da 1,35 carati e vorrei farmi un'idea sul suo prezzo. Prendo un blocco note e una penna nella gioielleria e scrivo il prezzo di tutti i diamanti e il relativo peso in carati. Iniziando dal primo diamante, pesa 1,01 carati e costa $ 7.366. Adesso faccio la stessa cosa con tutti gli altri diamanti presenti in negozio.
  • 28. PREVEDERE LA RISPOSTA In base alla tabella di prima: Porre una domanda ben strutturata La domanda verrà adesso posta in modo ben strutturato: "Quale sarà il costo di acquisto di un diamante da 1,35 carati?" Nell'elenco non c'è un diamante da 1,35 carati, quindi sarà necessario usare gli altri dati per ottenere una risposta a questa domanda.
  • 29. PREVEDERE LA RISPOSTA Per prima cosa verrà disegnata una linea numerica orizzontale, detta asse, su cui saranno indicati i pesi. L'intervallo dei pesi va da 0 a 2, quindi verranno disegnati una linea che copre questo intervallo e dei trattini per ciascun mezzo carato. Adesso, per registrare il prezzo verrà tracciato un asse verticale che sarà connesso all'asse orizzontale del peso. L'asse verticale sarà suddiviso in unità di dollari. A questo punto viene fuori un set di assi coordinati. Grafico dei dati esistenti
  • 30. PREVEDERE LA RISPOSTA Questo è un grafico di dispersione, un'ottima soluzione per visualizzare i set di dati numerici. Bisognerà fare la stessa cosa per ogni diamante presente nell'elenco. Una volta terminato, questo è quello che si ottiene: un mucchio di punti, uno per ogni diamante.
  • 31. PREVEDERE LA RISPOSTA Il modello ci siamo! Il fatto che non tutti i punti si trovino esattamente sulla linea va bene. Esiste infatti il modello, ovvero la linea, anche se a ogni punto vengono associati alcuni disturbi o varianze. Vi è quindi la perfetta relazione sottostante e vi è il mondo reale dinamico che aggiunge disturbo e incertezza. Dal momento che si cerca di rispondere alla domanda Quanto costa?, è possibile parlare di regressione. E visto che viene usata una linea dritta, si tratta di una regressione lineare.
  • 32. PREVEDERE LA RISPOSTA Usi il modello e trovi la risposta Il modello è pronto dobbiamo solo porgli la domanda: Quando costerà un diamante da 1,35 carati? Per rispondere a questa domanda, occorre partire da 1,35 carati e disegnare una linea verticale. Esattamente nel punto in cui incrocia la linea del modello, verrà tracciata una linea orizzontale verso l'asse dei dollari. Va a colpire proprio i 10.000 dollari. Boom Shakkalakka! Quella è la risposta: un diamante da 1,35 carati costa circa $ 10.000.
  • 33. PREVEDERE LA RISPOSTA Creare un intervallo di confidenza E’ precisa questa previsione? Per arrivare a capirlo bisogna disegnare un inviluppo attorno alla linea di regressione che include la maggior parte dei punti. Questo inviluppo viene detto intervallo di confidenza: si è abbastanza sicuri che i prezzi rientrino in questo inviluppo, poiché è stato così per la maggior parte degli stessi prezzi in precedenza.
  • 34. RECAP Cosa abbiamo fatto? • Abbiamo posto una domanda a cui è stato possibile rispondere con i dati • È stato creato un modello usando una regressione lineare. • È stata realizzata una previsione, completa di intervallo di confidenza
  • 35. E SE AVESSIMO VOLUTO PIÙ INFORMAZIONI? Se fossero state necessarie ulteriori informazioni, come: • il taglio del diamante • le variazioni di colore (quanto si avvicina al bianco il diamante) • il numero di inclusioni nel diamante In quel caso, la matematica diventa utile. Se le colonne sono più di due, è difficile disegnare punti su carta. La matematica consente di adattare una determinata linea o un determinato piano ai dati in modo molto preciso.
  • 38. IL FRAMEWORK Cosa è? ML.NET, un framework di apprendimento automatico multipiattaforma e open source. ML.NET permette allo sviluppatore .NET di sviluppare i propri modelli dati e includere le ML personalizzate nelle proprie applicazioni. Questo senza una precedente esperienza nello sviluppo o nell'ottimizzazione dei modelli di apprendimento automatico. (But Maybe…(cit.))
  • 39. IL FRAMEWORK Nuovo progetto? ML.NET è stato originariamente sviluppato in Microsoft Research e si è evoluto significativamente nell'ultimo decennio. Viene utilizzato in molti gruppi di prodotti in Microsoft come Windows, Bing, Azure e altri
  • 41. IL FRAMEWORK ML.NET è stato lanciato come parte di .NET Foundation e il repository contiene le API .NET C # per il training e l’uso dei modelli, oltre a una grande varietà di trasformazioni e di apprendimenti necessari per molte attività di ML come la regressione e classificazione. ML.NET ha lo scopo di fornire il flusso di lavoro end to end per fondere assieme ML e applicazioni .NET per la pre-elaborazione, ingegneria delle funzioni, la modellazione, la valutazione e l’operatività. ML.NET include tutti i tipi e il runtime. Assieme sono necessari per tutti gli aspetti dell'apprendimento automatico, compresi i tipi di dati principali, condotte estensibili, matematica ad alte prestazioni, strutture dati per dati eterogenei, supporto di strumenti e altro ancora.
  • 43. IL FRAMEWORK RoadMap Nel tempo, ML.NET svilupperà altri scenari ML come i sistemi di raccomandazione, il rilevamento di anomalie e altri approcci, come l'apprendimento approfondito, sfruttando librerie di deep learning come TensorFlow, Caffe2 e CNTK e librerie generali di apprendimento automatico come Accord.Net
  • 44. DEMO 1 ANALISI DEI SENTIMENTI
  • 45. ANALISI DEI SENTIMENTI PROBLEMA Il problema consiste nel predire se la recensione di un cliente è positiva o negativa. Questo tipo di predizione è detta Classificazione Binaria Questi commenti sono stati processati, cioè gestiti da delle persone, e ad ogni commento è stata assegnata una label: 0 - negativo 1 – positivo Costruiremo un modello che analizza una stringa e predice un valore di sentimento uguale a 1 o 0.
  • 48. MULTI CLASSIFICAZIONE IRIS PROBLEMA Questo problema è incentrato sulla previsione del tipo di un fiore dell’iris (setosa, versicolor o virginica) in base ai parametri del fiore come la lunghezza del petalo, la larghezza del petalo, ecc. Per risolvere questo problema dovremmo costruire un modello che prende in input 4 parametri: • petal length • petal width • sepal length • sepal width
  • 49. MULTI CLASSIFICAZIONE IRIS PROBLEMA E predire a che tipo iris appartiene il fiore: • setosa • versicolor • Virginica Per essere precisi, il modello restituirà le probabilità che il fiore appartenga a ciascun tipo.
  • 51. DEMO 3 - CLUSTERING DI IRIS
  • 52. CLUSTERING DI IRIS PROBLEMA Per dimostrare l'API di clustering in azione, utilizzeremo tre tipi di fiori di iris: • setosa • versicolor • virginica Tutti loro sono memorizzati nello stesso set di dati. Anche se il tipo di questi fiori è noto, non lo useremo ed eseguiremo l'algoritmo di clustering solo sui parametri dei fiori come la lunghezza del petalo, la larghezza del petalo, ecc. Il compito è raggruppare tutti i fiori in tre diversi cluster. Ci aspetteremmo che i fiori di diversi tipi appartengano a cluster diversi.
  • 53. CLUSTERING DI IRIS PROBLEMA Tutti i fiori sono memorizzati nello stesso set di dati. Anche se il tipo di questi fiori è noto, non lo useremo ed eseguiremo l'algoritmo di clustering solo sui parametri dei fiori come la lunghezza del petalo, la larghezza del petalo, ecc. Il compito è raggruppare tutti i fiori in tre diversi cluster. Ci aspetteremmo che i fiori di diversi tipi appartengano a cluster diversi. Gli input del modello sono i seguenti parametri • petal length • petal width • sepal length • sepal width
  • 55. DEMO 3 - PRONOSTICO TARIFFA DI TAXI IN NY
  • 56. PRONOSTICO TARIFFA TAXI PROBLEMA Questo problema è incentrato sulla previsione della tariffa di un viaggio in taxi a New York City. A prima vista, può sembrare che dipenda semplicemente dalla distanza percorsa. Tuttavia, i venditori di taxi a New York addebiteranno importi variabili per altri fattori come passeggeri aggiuntivi, pagando con carta di credito anziché contanti e così via. Questa previsione può essere utilizzata in applicazioni per i fornitori di taxi per fornire agli utenti e ai conducenti una stima delle tariffe di corsa.
  • 57. PRONOSTICO TARIFFA TAXI Per risolvere questo problema costruiremo un modello che prende in input i seguenti valori: • vendor ID • rate code • passenger count • trip time • trip distance • payment type E cercheremo di predire il costo della corsa
  • 59. DEMO 4 – GITHUB LABELER
  • 60. GITHUB LABELER PROBLEMA GitHubLabeler è un'applicazione console .NET Core che: Partendo da una base di dati contente l’elenco delle label all’interno delle issue di un repository github (core-fx), crea un modello di ML per insegnare al sistema quale label deve essere assegnata per un nuovo problema. L'applicazione leggerà tutte le issue aperte e prive di label dallo specifico repository GitHub e li etichetterà utilizzando il modello ML addestrato nel passaggio precedente. Questo modello ML utilizza algoritmo di classificazione multi-classe e funzionalità testuali (TextFeaturizer) di ML.NET.
  • 61. GITHUB LABELER PROBLEMA Per risolvere questo problema costruiremo un modello che prende in input i seguenti valori: • ID - issue's ID • Area - issue's label (named this way to avoid confusion with the Label concept in ML.NET) • Title - issue's title • Description - issue's description Questo problema può essere svolto in due maniere: 1. utilizzando il file di dati già impostato 2. creando il file .tsv direttamente da github con le colonne di cui sopra.
  • 63. OTHERS DEMO Bike Sharing Demand Credit Card Fraud Detection Customer Segmentation
  • 65. ML.NET Problemi di cuore Quale Algoritmo è quello giusto? Dipende da quello che si deve fare. Per ognuno la documentazione è abbastanza esaustiva. Per i task invece vi rimando qui: https://github.com/dotnet/docs/blob/a848fb04b815 b5337458a17668b3481e9f27370e/docs/machine- learning/resources/tasks.md
  • 66. RIFERIMENTI IMPORTANTI Repository ML.Net https://github.com/dotnet/machinelearning Get started with ML.NET in 10 minutes https://www.microsoft.com/net/learn/machinelearning-ai/ml-dotnet-get- started-tutorial Tutorial https://docs.microsoft.com/it-it/dotnet/machine-learning/tutorials/ ML.NET - Machine learning Samples https://github.com/dotnet/machinelearning-samples
  • 67. GRAZIE PER L’ATTENZIONE Twitter: @marco_zamana Github: /MarcoZama Linkedin /zama-marco-zamana Marco Zamana Email: marco.zamana1@gmail.com

Notes de l'éditeur

  1. Tabella sx: il livello di alcol nel sangue di sette persone testato fuori da un bar di Boston, la media battuta dei Red Sox nell'ultimo match e il prezzo del latte nel negozio all'angolo.
  2. Ecco alcuni dati rilevanti sulla qualità degli hamburger: temperatura della griglia, peso della carne e classificazione nella rivista sul cibo locale. Si presti però attenzione agli spazi vuoti nella tabella a sinistra. Alcuni valori non sono presenti nella maggior parte dei set di dati. Accade spesso di avere buchi del genere ed esistono delle soluzioni per colmarli.Tuttavia, se mancano diversi valori, i dati iniziano a somigliare a un formaggio svizzero. Dalla tabella a sinistra si evince che la quantità di dati mancanti è talmente elevata da poter difficilmente ipotizzare qualsiasi tipo di relazione tra la temperatura della griglia e il peso della carne. Questo esempio mostra dati disconnessi. La tabella a destra, invece, è interamente completa e rappresenta un esempio di dati connessi.
  3. Si osservi il bersaglio in alto a destra.  Attorno al punto centrale vi è un raggruppamento stretto.  Quello è naturalmente accurato.  Stranamente, nel linguaggio di data science, anche le prestazioni poco al di sotto del centro del bersaglio sono considerate accurate. Se si tratteggiasse il centro di queste frecce, si vedrebbe che è molto vicino al centro del bersaglio.  Le frecce sono distribuite attorno al bersaglio, quindi considerate imprecise, ma sono centrate attorno al centro del bersaglio, quindi considerate accurate. Osservando adesso il bersaglio in alto a sinistra, le frecce sono molto vicine l'una all'altra, a formare un raggruppamento stretto.  Sono precise, ma non accurate perché il centro è fuori dal centro del bersaglio.  Le frecce nel bersaglio in fondo a sinistra sono sia inaccurate sia imprecise.  Questo arciere deve fare più pratica.
  4. Se la domanda è "Quale sarà il prezzo di vendita del mio titolo la prossima settimana?", è necessario assicurarsi che i dati includano la cronologia dei prezzi dei titoli azionari. Se la domanda è "Quale auto del mio parco macchine avrà per prima un guasto?", sarà necessario assicurarsi che i dati includano informazioni sui guasti precedenti Questi esempi di risposte sono detti destinazione. Una destinazione è ciò che si sta tentando di stimare in relazione ai punti dati futuri, se si tratta di una categoria o di un numero. Se non sono disponibili dati di destinazione, è necessario ottenerne alcuni. Non sarà possibile rispondere alla domanda senza questi dati.
  5. La cosa più importante, tuttavia, è porre una domanda ben strutturata, quella a cui è possibile fornire una risposta con i dati. Occorre anche assicurarsi di avere i dati corretti per rispondere.
  6. In questo modo è stata creato un piccolo set di dati, ovvero una tabella. Si noti che questa tabella soddisfa i criteri di qualità: I dati sono rilevanti : il peso è senza dubbio correlato al prezzo Sono accurati : i prezzi appuntati sono stati verificati due volte Sono connessi : nessuna delle colonne contiene spazi vuoti E, come illustrato, la quantità dei dati è sufficiente per rispondere alla domanda.