SlideShare a Scribd company logo
#disatpn
saturday 2019
Digital 1nn0vation
ML.NET
Real examples
#disatpn
Machine Learning
Cosa vuole dire Machine Learning?
WPC2018 2
#disatpn
Cosa vuole dire Machine Learning?
Machine learning è un tecnica di data science
che permette di utilizzare dei dati per prevedere
comportamenti, risultati e tendenze futuri.
#disatpn
Cosa vuole dire Machine Learning?
#disatpn
Cosa vuole dire Machine Learning?
#disatpn
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
#disatpn
La domanda
L’importanza della domanda giusta
WPC2018 7
#disatpn
La domanda
«So perché sei qui, Neo.
So cosa stai facendo.
So perché non dormi.
So perché vivi da solo e perché,
una notte dietro l'altra, lavori al tuo computer.
Tu stai cercando lui.
Lo so perché a suo tempo ho cercato la stessa cosa.
E quando lui ha trovato me mi ha detto
che non cercavo qualcosa di preciso,
ma che cercavo una risposta.
È la domanda il nostro chiodo fisso, Neo.
È la domanda che ti ha spinto fin qui.
E tu la conosci, come la conoscevo io.»
Cit. Matrix
#disatpn
I Criteri dei dati
Una buona regola per l’analisi dei dati e porsi 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.
#disatpn
Criteri dei dati
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?»
#disatpn
ML.NET
Il framework
WPC2018 11
#disatpn
Il framework
#disatpn
Il framework
#disatpn
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.
#disatpn
ML.NET - Roadmap
La corsa verso il successo
WPC2018 15
#disatpn
ML.NET - Roadmap
0.1 => 0.9
9 MESI
#disatpn
ML.NET - I Concetti fondamentali
Il framework
WPC2018 17
#disatpn
ML.NET - Concetti fondamentali
• Data
• Transformer
• Data Reader
• Estimator
• Prediction function
• MLContext
#disatpn
ML.NET - Concetti fondamentali
DATA
L’interfaccia che rappresenta i Data è IDataView.
Se avete visto le viste di SQL troverete sicuramente delle analogie con i Data.
Parliamo infatti di un dataset schematizzato ponderato, calcolabile,
eterogeneo.
#disatpn
Data in details
Nel dettaglio i Data hanno :
• Schema
• Un’istanza dell’interfaccia ISchema, che contiene le informazioni sulla colonne della vista dei Data.
• Ogni colonna ha il suo nome, il suo tipo e i suoi metadati.
• Viene raccomandato in maniera importante l’utilizzo di vector<T, N> (T è il tipo e N il size) per rappresentare
la multidimensionalità dei dati associati a una riga (es. immaginiamo i pixel per un’immagine).
• Le colonne dei metadati contengono informazioni inerenti ai nomi degli slot della colonna di un vettore e
simili. I metadati stessi sono rappresentati come altri Data di una riga, univoci per ogni colonna.
• Cursors
• Le viste dei Data sono fonti dei Cursors. Pensiamo ai cursori SQL: un cursore è un oggetto che scorre
attraverso i dati, una riga alla volta, e presenta i dati che sono presenti.
• Essendo i dati immutabili, questi possono avere infiniti cursori su di essi se necessario.
LAZY DATA
#disatpn
ML.NET - Concetti fondamentali
TRANSFORMER
Sono dei componenti che prendono dei dati, svolgono del lavoro su di essi e poi ritornano nuovi dati modificati o trasformati.
I due metodi dell’interfaccia sono Transform che ha il compito appunto di tornare i dati modificati e il metodo GetOutputSchema che accetta un
parametro di ISchema
Questo metodo è un meccanismo di propagazione, cioè ci permette di vedere la trasformazione dei dati senza trasformarli veramente.
Molti dei transformer in ML.NET operano una colonna alla volta per produrre la colonna trasformata e solitamente la colonna di input e quella di
output hanno lo stesso nome.
Ovviamente, qualsiasi Transformer produrrà una nuova view di Data quando viene chiamato il metodo Transform.
Bisogna sempre ricordare che le DataView sono immutabili.
Lazy Data? So Lazy Transformer!
#disatpn
ML.NET - Concetti fondamentali
DATA READER
Il componente Data reader si occupa di “creare” i Data.
L’interfaccia prende in ingresso un tipo T e ritorna Data di quel tipo
Il DataReader è in grado di leggere i dati (potenzialmente più volte e da diversi “input”), ma i dati
risultanti avranno sempre lo stesso schema, indicato dal metodo GetOutputSchema.
Lazy Data? So Lazy Transformer! But DataReader? Lazy too!!
#disatpn
ML.NET - Concetti fondamentali
ESTIMATOR
L’estimator è un oggetto che apprende dai dati. Il risultato dell’apprendimento è un Transformer
E’ facile immaginare come si crea una sequenza di Estimator. Questa può essere formulata come un suo Estimator.
In ML.NET, è questa proprietà che viene utilizzata per creare delle pipeline di apprendimento che mettono insieme diversi Estimator:
Lazy Data? So Lazy Transformer! But Data reader? Lazy too!! And Estimator? Eager!
#disatpn
ML.NET - Concetti fondamentali
PREDICTION FUNCTION
La Prediction function può essere vista come una macchina che applica un Transformer a una “riga”, ad esempio al
momento della previsione.
La Prediction function non è not re-entrant / thread-safe, quindi se si desidera eseguire previsioni simultaneamente con
più thread, è necessario disporre di una funzione di previsione per thread.
#disatpn
ML.NET - Concetti fondamentali
MLCONTEXT
• MLContext.Data che contiene le operazioni relative alla creazione di IDataView (diversi dai trasformatori) :
- Caricamento / salvataggio di dati in un file
- Memorizzazione nella cache dei dati in memoria
- Filtro (rimuovendo le righe dai dati)
• MLContext.Model che contiene operazioni relative ai modelli (trasformatori): salvataggio e caricamento, creazione di
funzioni di previsione.
• MLContext.Transforms che contiene stimatori per operazioni di non previsione:
- Categorical per la gestione dei valori categoriali
- Text per l'elaborazione della lingua naturale
- Conversion per varie conversioni di tipi
- Proiezione per operazioni vettoriali (come Principal Component Analysis, Random Fourier, Vector Whitening ecc.)
- Normalizzazione / riscalamento
- Operazioni relative a colonne (come il rinomina, cancella, clona, ​​concatena, ecc.)
• MLContext.BinaryClassification, MulticlassClassification, Ranking, ecc. Sono cataloghi di algoritmi di apprendimento per
compiti specifici di apprendimento automatico.
- TrainTestSplit e CrossValidate per facilitare le rispettive operazioni
- Trainers contenenti vari formatori specifici per attività.
• MLContext.Log è un flusso di messaggi di testo sui processi a lunga esecuzione ML.NET è in esecuzione.
#disatpn
ML.NET – Analisi dei sentimenti
Demo
WPC2018 26
#disatpn
Analisi dei sentimenti
Questo problema è incentrato sulla previsione se la revisione di un
cliente ha un sentimento positivo o negativo.
Utilizzeremo piccoli set di dati wikipedia-detox (un set di dati per la
formazione e un secondo set di dati per la valutazione
dell'accuratezza del modello) che sono stati elaborati e ad ogni
commento è stata assegnata una label di valutazione:
* 0 - bello / positivo
* 1 - tossico / negativo
#disatpn
ML.NET – Github labeler
Demo
WPC2018 28
#disatpn
Github labeler
GitHubLabeler è un'applicazione della console .NET Core che:
- Crea un modello ML delle issue GitHub etichettate per
insegnare al modello quale label dovrebbe essere assegnata per
un nuovo problema.
- Assegna una label un nuovo problema. L'applicazione riceverà
tutti i problemi aperti senza label dal repository GitHub
specificato nel file `appsettings.json` e li categorizza utilizzando il
modello ML addestrato creato nel passaggio precedente.
#disatpn
ML.NET – Problemi di cuore?
Demo
WPC2018 30
#disatpn
Problemi di cuore?
Questo problema è incentrato sulla previsione della
presenza della malattia del cuore basata su 14 attributi. Per
risolvere questo problema, costruiremo un modello ML che
prende come input 14 parametri.
e prevede la presenza di malattie cardiache nel paziente con
valori interi da 0 a 4
#disatpn
ML.NET – Image Classification
TensorFlow
Demo
WPC2018 32
#disatpn
Image Classification TensorFlow
La classificazione delle immagini è un caso comune in molti scenari
aziendali.
In questi casi, puoi utilizzare modelli pre-formati o formare il tuo
modello per classificare le immagini specifiche per il tuo dominio
personalizzato.
Ci sono due Datasource: `tsv` file e i file delle immagini.
#disatpn
Grazie
marco_zamana
MarcoZama
marco-zamana
CloudGen Verona

More Related Content

Similar to Digital 1nn0vation saturday pn 2019 - ML.NET

Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Marco Pozzan
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
Francesca1980
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Marco Parenzan
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
jekil
 
Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAG
Commit University
 
Industrial Iot - IotSaturday
Industrial Iot - IotSaturday Industrial Iot - IotSaturday
Industrial Iot - IotSaturday
Riccardo Zamana
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
Manuel Scapolan
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
Andrea Saltarello
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Commit University
 
Power bi Clean and Modelling (SQL Saturday #675)
Power bi Clean and Modelling  (SQL Saturday #675)Power bi Clean and Modelling  (SQL Saturday #675)
Power bi Clean and Modelling (SQL Saturday #675)
Marco Pozzan
 
Azure saturday pn 2018 ml
Azure saturday pn 2018 mlAzure saturday pn 2018 ml
Azure saturday pn 2018 ml
Marco Zamana
 
Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introduction
Federico Panini
 
Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Michael Denny
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
Vincenzo Manzoni
 
Introduzione al Machine Learning
Introduzione al Machine LearningIntroduzione al Machine Learning
Introduzione al Machine Learning
steccami
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
Manuel Scapolan
 
Terza lezioneandroid
Terza lezioneandroidTerza lezioneandroid
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti
Riccardo Zamana
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
Fabio Armani
 

Similar to Digital 1nn0vation saturday pn 2019 - ML.NET (20)

Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-servicePower BI: Introduzione ai dataflow e alla preparazione dei dati self-service
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-service
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAG
 
Industrial Iot - IotSaturday
Industrial Iot - IotSaturday Industrial Iot - IotSaturday
Industrial Iot - IotSaturday
 
Lezione js pdatabasecrudterzaparte
Lezione js pdatabasecrudterzaparteLezione js pdatabasecrudterzaparte
Lezione js pdatabasecrudterzaparte
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
Power bi Clean and Modelling (SQL Saturday #675)
Power bi Clean and Modelling  (SQL Saturday #675)Power bi Clean and Modelling  (SQL Saturday #675)
Power bi Clean and Modelling (SQL Saturday #675)
 
Azure saturday pn 2018 ml
Azure saturday pn 2018 mlAzure saturday pn 2018 ml
Azure saturday pn 2018 ml
 
Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introduction
 
Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!Entity Framework 7, Back To The Future!
Entity Framework 7, Back To The Future!
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 
Introduzione al Machine Learning
Introduzione al Machine LearningIntroduzione al Machine Learning
Introduzione al Machine Learning
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
 
Terza lezioneandroid
Terza lezioneandroidTerza lezioneandroid
Terza lezioneandroid
 
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 

More from Marco Zamana

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
Marco Zamana
 
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
Marco Zamana
 
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
Marco Zamana
 
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
Marco Zamana
 
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
Marco Zamana
 
ML.NET al Visual Studio Saturday 2018
ML.NET al Visual Studio Saturday 2018ML.NET al Visual Studio Saturday 2018
ML.NET al Visual Studio Saturday 2018
Marco Zamana
 
ML.Net - Machine Learning Framework for .NET
ML.Net - Machine Learning Framework for .NETML.Net - Machine Learning Framework for .NET
ML.Net - Machine Learning Framework for .NET
Marco Zamana
 

More from 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
 
ML.NET al Visual Studio Saturday 2018
ML.NET al Visual Studio Saturday 2018ML.NET al Visual Studio Saturday 2018
ML.NET al Visual Studio Saturday 2018
 
ML.Net - Machine Learning Framework for .NET
ML.Net - Machine Learning Framework for .NETML.Net - Machine Learning Framework for .NET
ML.Net - Machine Learning Framework for .NET
 

Digital 1nn0vation saturday pn 2019 - ML.NET

  • 2. #disatpn Machine Learning Cosa vuole dire Machine Learning? WPC2018 2
  • 3. #disatpn Cosa vuole dire Machine Learning? Machine learning è un tecnica di data science che permette di utilizzare dei dati per prevedere comportamenti, risultati e tendenze futuri.
  • 4. #disatpn Cosa vuole dire Machine Learning?
  • 5. #disatpn Cosa vuole dire Machine Learning?
  • 6. #disatpn 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. #disatpn La domanda L’importanza della domanda giusta WPC2018 7
  • 8. #disatpn La domanda «So perché sei qui, Neo. So cosa stai facendo. So perché non dormi. So perché vivi da solo e perché, una notte dietro l'altra, lavori al tuo computer. Tu stai cercando lui. Lo so perché a suo tempo ho cercato la stessa cosa. E quando lui ha trovato me mi ha detto che non cercavo qualcosa di preciso, ma che cercavo una risposta. È la domanda il nostro chiodo fisso, Neo. È la domanda che ti ha spinto fin qui. E tu la conosci, come la conoscevo io.» Cit. Matrix
  • 9. #disatpn I Criteri dei dati Una buona regola per l’analisi dei dati e porsi 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.
  • 10. #disatpn Criteri dei dati 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?»
  • 14. #disatpn 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.
  • 15. #disatpn ML.NET - Roadmap La corsa verso il successo WPC2018 15
  • 17. #disatpn ML.NET - I Concetti fondamentali Il framework WPC2018 17
  • 18. #disatpn ML.NET - Concetti fondamentali • Data • Transformer • Data Reader • Estimator • Prediction function • MLContext
  • 19. #disatpn ML.NET - Concetti fondamentali DATA L’interfaccia che rappresenta i Data è IDataView. Se avete visto le viste di SQL troverete sicuramente delle analogie con i Data. Parliamo infatti di un dataset schematizzato ponderato, calcolabile, eterogeneo.
  • 20. #disatpn Data in details Nel dettaglio i Data hanno : • Schema • Un’istanza dell’interfaccia ISchema, che contiene le informazioni sulla colonne della vista dei Data. • Ogni colonna ha il suo nome, il suo tipo e i suoi metadati. • Viene raccomandato in maniera importante l’utilizzo di vector<T, N> (T è il tipo e N il size) per rappresentare la multidimensionalità dei dati associati a una riga (es. immaginiamo i pixel per un’immagine). • Le colonne dei metadati contengono informazioni inerenti ai nomi degli slot della colonna di un vettore e simili. I metadati stessi sono rappresentati come altri Data di una riga, univoci per ogni colonna. • Cursors • Le viste dei Data sono fonti dei Cursors. Pensiamo ai cursori SQL: un cursore è un oggetto che scorre attraverso i dati, una riga alla volta, e presenta i dati che sono presenti. • Essendo i dati immutabili, questi possono avere infiniti cursori su di essi se necessario. LAZY DATA
  • 21. #disatpn ML.NET - Concetti fondamentali TRANSFORMER Sono dei componenti che prendono dei dati, svolgono del lavoro su di essi e poi ritornano nuovi dati modificati o trasformati. I due metodi dell’interfaccia sono Transform che ha il compito appunto di tornare i dati modificati e il metodo GetOutputSchema che accetta un parametro di ISchema Questo metodo è un meccanismo di propagazione, cioè ci permette di vedere la trasformazione dei dati senza trasformarli veramente. Molti dei transformer in ML.NET operano una colonna alla volta per produrre la colonna trasformata e solitamente la colonna di input e quella di output hanno lo stesso nome. Ovviamente, qualsiasi Transformer produrrà una nuova view di Data quando viene chiamato il metodo Transform. Bisogna sempre ricordare che le DataView sono immutabili. Lazy Data? So Lazy Transformer!
  • 22. #disatpn ML.NET - Concetti fondamentali DATA READER Il componente Data reader si occupa di “creare” i Data. L’interfaccia prende in ingresso un tipo T e ritorna Data di quel tipo Il DataReader è in grado di leggere i dati (potenzialmente più volte e da diversi “input”), ma i dati risultanti avranno sempre lo stesso schema, indicato dal metodo GetOutputSchema. Lazy Data? So Lazy Transformer! But DataReader? Lazy too!!
  • 23. #disatpn ML.NET - Concetti fondamentali ESTIMATOR L’estimator è un oggetto che apprende dai dati. Il risultato dell’apprendimento è un Transformer E’ facile immaginare come si crea una sequenza di Estimator. Questa può essere formulata come un suo Estimator. In ML.NET, è questa proprietà che viene utilizzata per creare delle pipeline di apprendimento che mettono insieme diversi Estimator: Lazy Data? So Lazy Transformer! But Data reader? Lazy too!! And Estimator? Eager!
  • 24. #disatpn ML.NET - Concetti fondamentali PREDICTION FUNCTION La Prediction function può essere vista come una macchina che applica un Transformer a una “riga”, ad esempio al momento della previsione. La Prediction function non è not re-entrant / thread-safe, quindi se si desidera eseguire previsioni simultaneamente con più thread, è necessario disporre di una funzione di previsione per thread.
  • 25. #disatpn ML.NET - Concetti fondamentali MLCONTEXT • MLContext.Data che contiene le operazioni relative alla creazione di IDataView (diversi dai trasformatori) : - Caricamento / salvataggio di dati in un file - Memorizzazione nella cache dei dati in memoria - Filtro (rimuovendo le righe dai dati) • MLContext.Model che contiene operazioni relative ai modelli (trasformatori): salvataggio e caricamento, creazione di funzioni di previsione. • MLContext.Transforms che contiene stimatori per operazioni di non previsione: - Categorical per la gestione dei valori categoriali - Text per l'elaborazione della lingua naturale - Conversion per varie conversioni di tipi - Proiezione per operazioni vettoriali (come Principal Component Analysis, Random Fourier, Vector Whitening ecc.) - Normalizzazione / riscalamento - Operazioni relative a colonne (come il rinomina, cancella, clona, ​​concatena, ecc.) • MLContext.BinaryClassification, MulticlassClassification, Ranking, ecc. Sono cataloghi di algoritmi di apprendimento per compiti specifici di apprendimento automatico. - TrainTestSplit e CrossValidate per facilitare le rispettive operazioni - Trainers contenenti vari formatori specifici per attività. • MLContext.Log è un flusso di messaggi di testo sui processi a lunga esecuzione ML.NET è in esecuzione.
  • 26. #disatpn ML.NET – Analisi dei sentimenti Demo WPC2018 26
  • 27. #disatpn Analisi dei sentimenti Questo problema è incentrato sulla previsione se la revisione di un cliente ha un sentimento positivo o negativo. Utilizzeremo piccoli set di dati wikipedia-detox (un set di dati per la formazione e un secondo set di dati per la valutazione dell'accuratezza del modello) che sono stati elaborati e ad ogni commento è stata assegnata una label di valutazione: * 0 - bello / positivo * 1 - tossico / negativo
  • 28. #disatpn ML.NET – Github labeler Demo WPC2018 28
  • 29. #disatpn Github labeler GitHubLabeler è un'applicazione della console .NET Core che: - Crea un modello ML delle issue GitHub etichettate per insegnare al modello quale label dovrebbe essere assegnata per un nuovo problema. - Assegna una label un nuovo problema. L'applicazione riceverà tutti i problemi aperti senza label dal repository GitHub specificato nel file `appsettings.json` e li categorizza utilizzando il modello ML addestrato creato nel passaggio precedente.
  • 30. #disatpn ML.NET – Problemi di cuore? Demo WPC2018 30
  • 31. #disatpn Problemi di cuore? Questo problema è incentrato sulla previsione della presenza della malattia del cuore basata su 14 attributi. Per risolvere questo problema, costruiremo un modello ML che prende come input 14 parametri. e prevede la presenza di malattie cardiache nel paziente con valori interi da 0 a 4
  • 32. #disatpn ML.NET – Image Classification TensorFlow Demo WPC2018 32
  • 33. #disatpn Image Classification TensorFlow La classificazione delle immagini è un caso comune in molti scenari aziendali. In questi casi, puoi utilizzare modelli pre-formati o formare il tuo modello per classificare le immagini specifiche per il tuo dominio personalizzato. Ci sono due Datasource: `tsv` file e i file delle immagini.