145005 — Algoritmi Avanzati
145609 — Machine Learning for Data Science

Laurea Triennale in Informatica
Anno Accademico 2017-2018, primo semestre

Avvisi

  • [2018-02-07] È disponibile il testo della prova scritta del 7 febbraio.
  • [2017-12-12] Il libro ``The LION Way'' è ora scaricabile gratuitamente dalla sezione Bibliografia.

Obiettivi del corso

La figura del “Data Scientist”, sempre più richiesta dalle aziende e dai centri di ricerca, si occupa di dare un senso alla mole crescente di dati disponibili in ogni contesto, ne costruisce modelli informatici che aiutano a comprendere meglio un fenomeno noto o a scoprirne di nuovi; individua inoltre le modalità di presentazione più efficaci e guida il miglioramento dei processi che analizza.

Il corso costituisce un'introduzione teorico-pratica alle tecniche di apprendimento automatico (machine learning) che, a partire da esempi, generano modelli matematici che possono essere generalizzati a nuovi casi per operare previsioni.

Il corso può essere seguito come modulo a sé, ma può essere utilmente completato da "Intelligent Optimization for Data Science".

Programma

  • Machine Learning: costruzione di modelli a partire dai dati
  • Apprendimento supervisionato
  • Apprendimento non supervisionato
  • Selezione delle feature
  • Tecniche di visualizzazione dei dati
Le lezioni di laboratorio prevedono la verifica e la sperimentazione degli argomenti trattati a teoria tramite la scrittura di brevi programmi di prova sotto la guida del docente.

Prerequisiti

Il corso richiede nozioni di base di Programmazione, Analisi Matematica, Algebra Lineare, Statistica.

Esami

L'esame consiste in una prova scritta.

La prova scritta, con carta e penna, non richiederà la scrittura di codice. Conterrà alcuni esercizi affini agli esempi contenuti nella traccia degli argomenti del corso, e alcune domande di teoria.

I prossimi appelli d'esame avranno luogo durante la sessione invernale (gennaio-febbraio 2018). Le date provvisorie sono le seguenti:

Data Ore Aule
Primo appello Martedì 9 gennaio 9—12
Secondo appello Martedì 6 febbraio 9—12

Prove parziali

La prima prova parziale è accessibile a tutti gli studenti del corso. Consiste in alcune domande teoriche ed alcuni esercizi sugli argomenti svolti fino alla lezione precedente.
È necessario iscriversi in Esse3 (se impossibile, comunicare l'intenzione di partecipare a mauro.brunato+ProvetteAA@unitn.it la settimana precedente la prova).
L'esito della prova è in trentesimi.

La seconda prova è accessibile ai soli studenti che hanno ottenuto almento 18/30 nella prima prova. Ha una struttura simile alla prima prova e riguarda gli argomenti svolti nei mesi di novembre e dicembre.

Il voto finale è la media aritmetica dei due esiti.

Docenti

Orario

Le lezioni sono terminate.

Bibliografia

Per approfondimenti si consigliano le seguenti risorse.

Libri

  • Roberto Battiti and Mauro Brunato
    The LION Way — Machine Learning plus Intelligent Optimization, version 3.0
    LIONlab, 2017.
    Il libro è scaricabile gratuitamente dal link sopra.

Pagine e siti web

Materiale del corso

Dispense del corso ed esercizi

  • Annotazioni sugli argomenti svolti a teoria, sulle esercitazioni di laboratorio, domande di autovalutazione ed esercizi
    [versione 2017-12-18]

Esercitazioni di laboratorio

Prove d'esame


Programma svolto

Teoria

  • Presentazione del corso (mercoledì 13 settembre)
    • Descrizione dei contenuti del corso.
    • Modalità d'esame.
  • Introduzione alla Data Science (mercoledì 13 settembre)
    • Discipline che ne fanno parte
    • Frequenti cause di errori metodologici nella statistica classica.
  • Introduzione al Machine Learning (lunedì 18 settembre)
    • Esempi di problemi
    • Classificazione e formalizzazione dei problemi di machine learning: apprendimento supervisionato, classificazione e regressione, apprendimento non supervisionato, clustering.
  • Regressione lineare (lunedì 25 settembre, lunedì 2 ottobre)
    • Valutazione di un modello di regressione: il root mean square error (RMSE)
    • Minimizzazione del RMSE per un modello lineare: il metodo dei minimi quadrati a una e ad n dimensioni.
    • Generalizzazione della regressione lineare per funzioni di base arbitrarie.
    • Utilizzo delle potenze come funzioni di base: la regressione polinomiale (a una dimensione).
  • Validazione di un modello (lunedì 2 ottobre, lunedì 9 ottobre)
    • Valutazione di un modello di classificazione: l'accuratezza.
    • Matrice di confusione per due o più classi.
    • Definizione di “caso positivo”; gli indici di precisione e sensibilità; la F1 score.
    • La cross-validation, K-fold cross-validation, leave-one-out: cross-validation stratificata.
  • Regressione logistica (lunedì 9 ottobre, lunedì 16 ottobre)
    • Utilizzo di un modello lineare con una funzione di soglia per problemi di classificazione.
    • La funzione sigmoide.
    • Ottimizzazione iterativa: la discesa lungo il gradiente
  • Preprocessing dei dati (lunedì 16 ottobre)
    • Normalizzazione e standardizzazione dei dati numerici
    • Trasformazione di attributi categorici in numerici tramite rappresentazione unaria
  • Alberi di decisione (lunedì 6 novembre, lunedì 13 novembre)
    • Criteri di purezza di una distribuzione: entropia, indice di impurità di Gini
    • Alberi di decisione: algoritmo ID3 (standard) nel caso di attributi categorici o numerici discreti e finiti
    • Estensione al caso di feature continue con utilizzo di soglie.
  • Selezione degli attributi (lunedì 27 novembre)
    • Coefficieente di correlazione di Pearson e informazione mutua
    • Metodi wrapper, filter ed embedded
    • Strategie bottom-up, top-down e basate su ricerca locale
  • Clustering (lunedì 4 dicembre, lunedì 11 dicembre)
    • Definizione di clustering. Definizioni di similitudine e distanza. Coefficiente di Jaccard.
    • Clustering agglomerativo gerarchico (bottom-up).
    • Algoritmo K-means.
 

Laboratorio

  • Caricamento e analisi di un file (mercoledì 20 settembre)
    • Utilizzo dell'interprete Python
    • Caricamento di un file CSV con il modulo pandas
    • Utilizzo “a scatola chiusa” di un algoritmo di machine learning
    • Rappresentazione grafica dei dati
    • Realizzazione di un semplice algoritmo di machine learning
    Riferimento: dispensa, prima esercitazione.
  • Implementazione di algoritmi di machine learning (mercoledì 27 settembre)
    • Algoritmo K-Nearest Neighbors (KNN)
    • Minimi quadrati a una dimensione.
    Riferimento: dispensa, seconda esercitazione.
  • Regressione polinomiale e validazione di modelli (mercoledì 4 ottobre)
    • Minimi quadrati a più dimensioni: calcolo della pseudo-inversa di una matrice rettangolare
    • Calcolo della regressione polinomiale a una dimensione utilizzando le potenze come funzioni di base
    • Analisi dell'errore di validazione al crescere del grado del polinomio
    Riferimento: dispensa, terza esercitazione.
  • Regressione logistica e discesa lungo il gradiente (mercoledì 18 ottobre, mercoledì 25 ottobre)
    • Implementazione della funzione sigmoide, calcolo del gradiente del modello logit
    • Discesa lungo il gradiente: learning rate adattiva
    Riferimento: dispensa, quarta esercitazione.
  • Alberi di decisione (mercoledì 8 novembre, mercoledì 15 novembre, mercoledì 22 novembre)
    • Addestramento di un albero di decisione Scikit-learn con diversi valori di profondità massima
    • Realizzazione di un albero di decisione in Python
    Riferimento: dispensa, quinta esercitazione.
  • Determinazione della soglia in un regressore logistico (mercoledì 29 novembre)
    • Determinazione della matrice di confusione e degli indici di prestazione al variare della soglia in un regressore logistico.
    • Curva ROC.
    Riferimento: dispensa, sesta esercitazione.
  • Clustering agglomerativo (mercoledì 6 dicembre)
    • Implementazione di una procedura di clustering gerarchico in Python.
    • Confronto con una funzione di libreria.
    • Utilizzo del dendrogramma per riordinare a blocchi la matrice delle distanze.
    Riferimento: dispensa, settima esercitazione.

Pagina mantenuta da Mauro Brunato