INTRODUZIONE ALL'INTELLIGENZA ARTIFICIALE

Docenti: 
LOMBARDO GIANFRANCO
Crediti: 
6
Sede: 
PARMA
Anno accademico di offerta: 
2021/2022
Responsabile della didattica: 
LOMBARDO GIANFRANCO
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Semestre dell'insegnamento: 
Primo Semestre
Anno di corso: 
3

Obiettivi formativi

Il corso intende fornire una conoscenza generale sulle principali metodologie e tecniche di Data Science e Data Engineering per lo sviluppo di applicativi atti all’elaborazione, storage ed analisi dei Big Data. In particolare, il corso ha l’obiettivo di fornire agli studenti abilità di problem-solving nell’ambito dell’analisi descrittiva e predittiva dei dati mediante lo sviluppo di sistemi intelligenti, la progettazione di modelli base di Machine Learning e di sistemi per l’elaborazione e storage di grandi quantità di dati.

Prerequisiti

Nessuna propedeucità.
Tuttavia, si consiglia l’apprendimento pregresso delle conoscenze base della programmazione procedurale e ad oggetti (in particolare Python) e matematiche per la comprensione del funzionamento delle tecniche tipiche dell’analisi inferenziale e descrittiva.

Contenuti dell'insegnamento

-Data Science e Business Intelligence
-Intelligenza artificiale
-Machine Learning
-Data Engineering
-Network Science

Programma esteso

Introduzione ai Big Data e ripasso di Python (3 ore)
1.1 Definizione di Big Data
1.2 Le ragioni di questo fenomeno
1.3 Datewarehouse vs ERP
1.4 Dati strutturati/Non strutturati
1.5 Cos’è la Data Science?
1.6 Programmazione procedurale e ad oggetti in Python
Business intelligence e data science (7 ore)
2.1 Definizioni
2.2 Il valore della conoscenza
2.3 Le sfide della Business Intelligence
2.4 I dati: la materia prima della BI
2.5 Business Intelligence vs Data Science
2.6 Data visualization
2.7 Analisi descrittiva e relative metriche
2.8 Analisi inferenziale
2.9 Python per la data analysis (Pandas, Numpy, Matplotlib, Scipy)
2.10 Esercitazione pratica sulla data analysis

Introduzione all’Intelligenza artificiale (6 ore)
3.1 AI debole vs AI forte : Test di Turing
3.2 Storia dell' AI
3.3 Tecniche di Intelligenza Artificiale: AI simbolica vs AI sub-simbolica
3.4 Costruzione di un IA: conoscenza e logica
3.5 Tecnologie semantiche
3.6 Ragionamento (induttivo) e apprendimento
3.7 Inferenza in IA: Dai sistemi esperti al machine learning simbolico
3.8 XAI: Black Box AI & Explainable A

Machine Learning e analisi inferenziale dei dati (18 ore)
4.1 Definizioni, dataset e tipologie di ML
4.2 Overfitting e underfitting
4.3 Regressione: metriche e regressione lineare
4.4 Esercitazione con Scikit-learn sulla regressione
4.5 Classificazione: metriche, regressione logistica e alberi decisionali
4.6 Esercitazione con Scikit-learn sui problemi di classificazione
4.7 Ensemble learning: Bagging e boosting (Adaboost, Gradient Boosting)
4.8 Gestione di un progetto di Machine Learning: tuning dei parametri. model comparison, tecniche di regularization
4.9 Esercitazione con Scikit-learn sull’ ensemble learning
4.10 Introduzione al Natural Language Processing: Bag of words, tokenization e tf-idf
4.11 Introduzione alle reti neurali: Multilayer Perceptron, Backpropagation e relativi iper-parametri
4.12 Esercitazione con Keras sulle reti neurali ed NLP

Data Engineering (6 ore)
5.1 Gestione dei Big Data
5.2 Database relazionali
5.3 Introduzione ai database NoSQL
5.4 Introduzione ad Hadoop e PySpark

Network Science per l’analisi dei dati (8 ore)
6.1 Definizioni
6.2 Modellare i dati con i grafi
6.3 Misure di centralità e di community detection
6.4 Feature per l’analisi dei grafi
6.5 NetworkX e Gephi per l’analisi dei grafi
6.6 Esercitazione pratica in laboratorio

Bibliografia

- A. Rezzani (2017). Big Data Analytics. Il manuale del data scientist. Maggioli Editore (Aopogeo Education).
- A. Geron. Hands-On Machine Learning With Scikit-Learn and Tensorflow: Concepts, Tools, and Techniques to Build Intelligent Systems
- A.Barabasi. Network Science

Metodi didattici

Lezioni frontali ed esercitazioni in laboratorio.
Le lezioni frontali copriranno gli aspetti teorici delle materie del corso.
Le esercitazioni pratiche legate a problemi reali saranno svolte in laboratorio

Modalità verifica apprendimento

Non ci sono prove intermedie.
L'esame si compone di due parti:
i) una prova scritta sugli argomenti teorici del corso trattati in classe con l'obiettivo di valutare la conoscenza acquisita su questi argomenti.
ii) una relazione scritta (e la sua presentazione orale) su un lavoro di progetto in modo da valutare la capacità di applicare le conoscenze acquisite durante il corso. In ogni caso, il valore della sua valutazione dipenderà anche dalla qualità dello sviluppo
sistema e la documentazione allegata.
L'esame è superato se, in ciascuna delle due parti, lo studente raggiunge almeno la sufficienza.
Il voto finale è una media ponderata delle due parti: prova scritta (60%) e progetto (40%).
La lode viene data in caso di raggiungimento del punteggio più alto su ambo due le parti.