Alla scoperta del framework ML.NET e dei suoi concetti importanti. Scopriamo la sua malleabilità e Il come è integrabile all'interno di una applicazione .NET già esistente.
Introduzione alla programmazione android - Android@tulug lezione 2Ivan Gualandri
Seconda lezione del corso android tenuto presso il TuLug (Tuscia Lug) A Viterbo. Le slides sono completamente in italiano (Slides are in italian! Sorry!)
Introduzione alla programmazione android - Android@tulug lezione 2Ivan Gualandri
Seconda lezione del corso android tenuto presso il TuLug (Tuscia Lug) A Viterbo. Le slides sono completamente in italiano (Slides are in italian! Sorry!)
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-serviceMarco Pozzan
Power BI Dataflow è il componente di trasformazione dei dati in Power BI. È un processo di Power Query che viene eseguito nel cloud. Bene, questa potrebbe non sembrare una funzionalità molto nuova, giusto? Quindi cosa c'è di nuovo con Dataflow? Le risposte alle vostre domande saranno nella mia sessione :-)
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
Common software architectures are full of well-established assumptions. But some of them are flawed, no longer valid or relevant. Changing the rules of the game using DDD, CQRS and Event Sourcing can lead to systems which are more scalable, maintainable and performing. And which are fun to code as well.
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
Scrivere Object Oriented è ora possibile anche in Javascript con Typescript. E in generale bisogna concentrarsi nello scrivere codice di valore e non "autogenerato" dallo scaffolding. Capiamo come si fa riscrivendo un vecchio gioco della Licasfilm!
Come funzionano i Retrieval-Augmented Generators (RAG) e quanto i database vettoriali sono fondamentali per poter memorizzare e utilizzare le sorgenti dati aziendali e personali?
CQRS, ovvero: 2 stack, uno per "leggere" e l'altro per "scrivere". Se per "scrivere" abbiamo l'imbarazzo della scelta (Domain Model, Command, Event Sourcing, ...) per leggere, invece, apparentemente c'è poco da dire. "Apparentemente", appunto. Parliamone :-)
This talk is a brief introduction to Elasticsearch. What is it ? How can I use it ? How can it be useful for my company or for my business ? (the slides are in ITALIAN)
Introduzione ai Big Data e alla scienza dei dati - Big DataVincenzo Manzoni
Lezione 5 del corso di analisi dati tenuto al Palazzolo Digital Hub (Palazzolo sull'Oglio, Brescia) nel 2014. In questa quinta e ultima lezione si introducono le tecnologie dei Big Data.
This set of design patterns are related to Enterprise Patterns. In it you can find, J2EE, Presentation, Business & Integration Patterns (such as: ApplicaCon Controller, Data Transfer Object (DTO), Business Object (BO) & Data Access Object (DAO) among others ...)
ML.NET Model Lifecycle with Azure DevOps - Devops heroes 2019 Marco Zamana
Are you a developer? Are you a Architect? You must have the focus about on the application lifecycle! Building, maintaining, and continuously updating the end-user business application. No news here, but if we add also ML, for example a ML.NET model what we must to do? We need a update and extend a new type of lifecycle: Machine Learning Model Lifecycle.
More Related Content
Similar to Digital 1nn0vation saturday pn 2019 - ML.NET
Power BI: Introduzione ai dataflow e alla preparazione dei dati self-serviceMarco Pozzan
Power BI Dataflow è il componente di trasformazione dei dati in Power BI. È un processo di Power Query che viene eseguito nel cloud. Bene, questa potrebbe non sembrare una funzionalità molto nuova, giusto? Quindi cosa c'è di nuovo con Dataflow? Le risposte alle vostre domande saranno nella mia sessione :-)
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
Common software architectures are full of well-established assumptions. But some of them are flawed, no longer valid or relevant. Changing the rules of the game using DDD, CQRS and Event Sourcing can lead to systems which are more scalable, maintainable and performing. And which are fun to code as well.
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
Scrivere Object Oriented è ora possibile anche in Javascript con Typescript. E in generale bisogna concentrarsi nello scrivere codice di valore e non "autogenerato" dallo scaffolding. Capiamo come si fa riscrivendo un vecchio gioco della Licasfilm!
Come funzionano i Retrieval-Augmented Generators (RAG) e quanto i database vettoriali sono fondamentali per poter memorizzare e utilizzare le sorgenti dati aziendali e personali?
CQRS, ovvero: 2 stack, uno per "leggere" e l'altro per "scrivere". Se per "scrivere" abbiamo l'imbarazzo della scelta (Domain Model, Command, Event Sourcing, ...) per leggere, invece, apparentemente c'è poco da dire. "Apparentemente", appunto. Parliamone :-)
This talk is a brief introduction to Elasticsearch. What is it ? How can I use it ? How can it be useful for my company or for my business ? (the slides are in ITALIAN)
Introduzione ai Big Data e alla scienza dei dati - Big DataVincenzo Manzoni
Lezione 5 del corso di analisi dati tenuto al Palazzolo Digital Hub (Palazzolo sull'Oglio, Brescia) nel 2014. In questa quinta e ultima lezione si introducono le tecnologie dei Big Data.
This set of design patterns are related to Enterprise Patterns. In it you can find, J2EE, Presentation, Business & Integration Patterns (such as: ApplicaCon Controller, Data Transfer Object (DTO), Business Object (BO) & Data Access Object (DAO) among others ...)
Similar to Digital 1nn0vation saturday pn 2019 - ML.NET (20)
ML.NET Model Lifecycle with Azure DevOps - Devops heroes 2019 Marco Zamana
Are you a developer? Are you a Architect? You must have the focus about on the application lifecycle! Building, maintaining, and continuously updating the end-user business application. No news here, but if we add also ML, for example a ML.NET model what we must to do? We need a update and extend a new type of lifecycle: Machine Learning Model Lifecycle.
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.
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
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.
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.
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
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.
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
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.