90477 - MACHINE LEARNING SYSTEMS FOR DATA SCIENCE

Anno Accademico 2023/2024

  • Docente: Stefano Lodi
  • Crediti formativi: 10
  • SSD: ING-INF/05
  • Lingua di insegnamento: Inglese

Conoscenze e abilità da conseguire

By the end of the course, the should - understand the fundamentals of supervised and unsupervised machine learning algorithms, focusing on deep learning algorithms - understand the fundamental programming principles of the Python language and be able to apply them primarily to data management and analysis, under the umbrella of data science - understand the role, purpose and features of Python libraries for numerical computation, data representation, and machine learning, and their interconnectivity with frameworks, such as Jupyter Notebook - be able to apply data science practices and methods to construct models and solve problems for various data-science applications.

Contenuti

Modulo 1

Il linguaggio Python
═══════════════════

Espressioni, tuple, liste, comprehension, set, dizionari. Istruzioni di ripetizione e scelta. Package NumPy e Panda.


Machine learning e analitica avanzata
════════════════════

Scoperta di regole associative
──────────────────────
Algoritmo Apriori


Analisi dei gruppi
──────────────────────
Algoritmi: leader-follower, BIRCH, k-means, EM


Classificazione supervisionata
──────────────────────────────────
Alberi di classificazione C4.5, CART
Modelli a vettori di supporto (SVM)
AdaBoost

 

Reti neurali deep
──────────────────────────────────
Reti dense, reti neurali convoluzionali, LSTM, autoencoder.


Esercitazioni di laboratorio
══════════════════════════════

Integrated development environment per Python
Analitica avanzata

Modulo 2

Il corso si focalizza sul paradigma e sulle caratteristiche fondamentali di Python, come linguaggio di programmazione adatto alla manipolazione dei dati nell'ambito della data science. L'enfasi è posta sull'esplorazione delle sue librerie, che aiutano nella lettura/scrittura dei dati, nel raggruppamento, nell'aggregazione, nella fusione e nel join di data frame, e quindi consentono la visualizzazione dei dati e la loro analisi. La parte pratica del corso prevede l'utilizzo di strumenti e piattaforme di sviluppo, come Jupyter Notebook e Gitlab, per la condivisione e il supporto dell'analisi dei dati. Il corso include anche l'accesso a diversi set di dati al fine di illustrare l'applicabilità del materiale in esempi reali.

Parte 1 - Gestione e rappresentazione dei dati in Python

Tecniche e metodi di strutturazione e visualizzazione dei dati.

Utilizzo di Dataframe e Series, ed esecuzione di analisi statistiche di base.

Applicabilità e funzionalità di librerie come matplotlib, seaborn e plotly.

Preparazione dei dati per l'analisi statistica.

Parte 2 - Tecniche di Machine Learning (ML) in Python

Dimostrazione di approcci ML supervisionati e non supervisionati.

Introduzione alle librerie, come scikit-learn, Tensorflow e nltk.

Testi/Bibliografia

Modulo 1

Le presentazioni del corso e gli esercizi sono disponibili su Virtuale.

Per argomento:

Python

Testo consigliato:

Parker, J. R. (2016). Python: An Introduction to Programming. Mercury Learning & Information. E-book liberamente scaricabile con le credenziali istituzionali studentesche, e ricercabile in

http://sba.unibo.it | Risorse online| E-book | Ricerca un e-book nel Catalogo A-Link

Scoperta di regole associative, analisi dei gruppi, classificazione supervisionata

Testo opzionale:

Tan, P.-N., Steinbach, M., & Kumar, V. (2006). Introduction to Data Mining. Boston: Pearson.

Machine learning e reti neurali

Testo consigliato:

Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. MIT press. Liberamente consultabile a https://www.deeplearningbook.org/

Modulo 2

Durante il corso saranno indicati materiali online e altre letture consigliate.


Metodi didattici

NOTA: In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, in modalità e-learning.

Modulo 1

Le lezioni del corso sono suddivise in
• lezioni frontali tenute in aula
• lezioni tenute in laboratorio, ciascuna comprendente sia esposizioni frontali che esercitazioni sulle tecniche di soluzione dei problemi di analisi dei dati presentate.

Gli argomenti del corso sono suddivisi per tipo di lezione:
• durante le lezioni frontali si espongono le nozioni teoriche e
pratiche per l'analisi avanzata in basi di dati e il machine learning
• in laboratorio, lo studente realizza script di analisi avanzata e machine learning utilizzando il linguaggio di programmazione Python.

Modulo 2

• Lezioni teoriche in aula didattica
• Esercitazioni in laboratorio
Durante le lezioni gli studenti saranno guidati nella realizzazione e nella pratica dei concetti presentati.

Se possibile, sarà organizzato un seminario su temi specifici di interesse.

 

Modalità di verifica e valutazione dell'apprendimento

Nel loro lavoro di gruppo, che si concentra su un progetto di programmazione, gli studenti dimostreranno la loro capacità di analizzare un assegnato insieme di dati, utilizzando librerie Python, rispondere a domande da determinati compiti e condividere i risultati del gruppo di progetto su repository online pubblico, come Gitlab.La frequenza non contribuisce alla valutazione in alcun modo.

Modulo 1

L'esame si articola in tre prove.

Prova di programmazione in Python

Lo studente riceve un documento digitale su Esami OnLine, contenente la descrizione di un semplice problema di analisi, deve produrre sullo stesso sito un programma Python che risolve il problema di analisi descritto nel documento.

  • È consentita la consultazione di testi e appunti rilegati.

Prova a risposta multipla

Lo studente riceve una collezione di 15 frasi, ciascuna delle quali ha 3 possibili completamenti, dei quali solamente uno è corretto. La prova è svolta interamente su Esami OnLine

  • Non è consentita la consultazione di alcun materiale.

 

Prova orale

Il candidato deve rispondere a tre domande che possono riguardare qualunque parte del programma del corso. In particolare, lo studente deve dimostrare: padronanza delle nozioni teoriche della disciplina, della terminologia e del formalismo logico, insiemistico e matematico in essa impiegato; conoscenza delle tecniche di analisi avanzata e machine learning presentate durante le lezioni e implementate negli strumenti utilizzati durante le lezioni e capacità di utilizzare tali strumenti; conoscenza del linguaggio Python.

Modalità di calcolo del voto d'esame del modulo e validità delle prove

  • I voti di tutte le prove sono compresi nell'intervallo tra 0 e 30, estremi inclusi.
  • I voti conseguiti nella prova di programmazione e nella prova a risposta multipla sono validi fino al termine della sessione (gennaio-febbraio, giugno-luglio o settembre) nella quale la prova è stata sostenuta.
  • La valutazione dell'esito del modulo e l'assegnazione del voto finale del modulo si effettuano al termine della prova orale.
  • Il voto finale del modulo è calcolato come media del voto della piú recente prova di programmazione in Python, del voto della più recente prova a risposta multipla e del voto dell'orale.

Modulo 2

Gli studenti saranno valutati attraverso tre diverse prove.

Assegnazione 1 (lavoro di gruppo)

Nel loro lavoro di gruppo, che si concentra su un progetto di programmazione, gli studenti dimostreranno la loro capacità di analizzare un assegnato insieme di dati, utilizzando librerie Python, rispondere a domande da determinati compiti e condividere i risultati del gruppo di progetto su repository online pubblico, come Gitlab. 

Assegnazione 2 (lavoro di gruppo)

Il lavoro di gruppo dell'Assegnazione 2 è analogo al lavoro di gruppo dell'Assegnazione 1, ma è complementare ad esso: è un progetto di programmazione che copre le parti del programma del modulo 2 che non sono state trattate nell'assegnazione 1.

Assegnazione 3 (valutazione individuale come prova orale)

Nella valutazione individuale, gli studenti presenteranno i risultati del loro lavoro sull'Assegnazione 1 e sull'Assegnazione 2, sotto forma di presentazione, in cui ogni studente discuterà questioni relative ai progetti e risponderà a domande pertinenti.

Modalità di calcolo del voto d'esame del modulo e scadenze

  • Il voto del modulo 2 è compreso nell'intervallo tra 0 e 30, estremi inclusi.
  • Il progetto deve essere consegnato tassativamente 3 giorni prima della data della prova orale dell'Assegnazione 3.

Voto finale

Tutte le prove di entrambi i moduli devono essere sostenute entro una sola sessione d'esami, ma possono essere sostenute in appelli diversi.

Le prove possono essere ripetute in una stessa sessione; si noti però che solo l'ultimo esito sarà considerato valido per il voto finale.

Il voto finale è la media dei voti dei moduli.

 

Strumenti a supporto della didattica

Modulo 1

Presentazioni degli argomenti del corso con videoproiettore
Laboratorio di PC con Anaconda; PC del docente con videoproiettore per la guida alle esercitazioni
Materiale usato nelle presentazioni distribuito tramite il sito http://virtuale.unibo.it. Il materiale è accessibile solo agli studenti iscritti al corso.
Modulo 2

Note sul corso. Progetti open source utilizzati come esempi didattici.

Orario di ricevimento

Consulta il sito web di Stefano Lodi

Consulta il sito web di Elisabetta Ronchieri

SDGs

Imprese innovazione e infrastrutture

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.