Data mining (teoria)
Apprendimento supervisionato
L'apprendimento supervisionato ha una variabile risposta che può essere quantitativa (regressione) oppure qualitativa, binaria, multiclasse (classificazione) e una serie di regressori X. Per la previsione è necessario effettuare una divisione del dataset per poter effettuare lo studio su un dataset di training per poi effettuare un confronto su un dataset di test, che mostrerà l'affidabilità della mia previsione. Imparo dal training set (x1), (x2) → yn, ..., yfn. La previsione è data da y1, ..., yn con i ..., mi.
Apprendimento non supervisionato
Questo tipo di apprendimento non verrà trattato in questo corso, ma consiste nel non avere una variabile di risposta. I problemi di questo apprendimento sono: riduzione della dimensione, clustering, ecc.
Data science e data scientist
I dati crescono, questo si sa, ma sapere che a oggi il 90% di essi, come hanno riscontrato alcune ricerche, è stato creato nei soli ultimi due anni probabilmente è meno noto. Lo tsunami dei dati ci travolge. I dati arrivano ormai da ogni dove sommergendoci anche individualmente. Non ci credete? Provate a chiedervi: quanto è grande il mio archivio fotografico digitale? Quante foto che non mi sono mai deciso a stampare giacciono nei miei hard disk? Quanto è grande lo stesso hard disk che uso ora rispetto a quello di soli tre anni fa?
Se consideriamo i dati prodotti dalla nostra società, nel suo complesso, comprendiamo quando grande sia effettivamente questo fenomeno e quanto sempre più digitali e quanto Big siamo i dati che ci circondano: sensori che acquisiscono dati meteorologici, l'esplosione dei contenuti che condividiamo sui social media, enorme quantità di registrazioni di dati relativi agli acquisti o dati bancari che ogni giorno si accumulano, archivi di immagini e video, dati telefonici, i segnali Gps che ci scambiamo, questi sono solo pochissimi esempi, ma danno certamente l'idea della dimensione del fenomeno.
Inoltre, questi esempi sono relativi ad archivi di dati grezzi, non trattati, tipicamente conservati così come prodotti dalle rispettive sorgenti. L'esigenza di trattare i dati, non solo per acquisirli, conservarli e assolvere modesti compiti operativi, ma principalmente per analizzarli e interpretarli opportunamente, diventa sempre più una necessità condivisa, che prevede l'intervento di un professionista specifico, che in molti chiamano Data Scientist, e che racchiude tra le sue competenze molte esperienze e specializzazioni.
In realtà saper analizzare ed interpretare dati è un vecchio mestiere. L'analisi dei dati sperimentali, economici, di business, provenienti da indagini sociali o censuari è una disciplina che ha una storia di più di due secoli e che ha un nome: statistica. Negli ultimi 40 anni, e con un'accelerazione nell'ultimo decennio, è però avvenuta una mutazione del contesto, che costringe a ridefinire ruoli e professioni.
Fino ai primi anni '90, gli analisti di dati dovevano anzitutto porsi il problema di quali dati raccogliere e quindi registrare; quali interviste commissionare, come codificarle e renderle disponibili per un software che le analizzasse. Ognuna di queste operazioni aveva un costo. Lo scopo era quello di trarre conoscenza/previsioni utilizzando il minor numero di dati possibili.
Dagli anni '90 in poi, con la prima ondata di Internet e del commercio elettronico in particolare, la situazione si è profondamente modificata: molte delle informazioni, per esempio riguardanti la relazione col cliente, sono nativamente disponibili in formati digitali. Talvolta è dato strutturato, talvolta ancora da strutturare (immagini, suoni, voce, testo libero). Di fronte a questa abbondanza di dati, la statistica tradizionale ha faticato a ribaltare il suo paradigma di analisi.
La Computer Science, molto più vicina al reale svolgimento dei fatti, ha pragmaticamente cercato di reagire, proponendo metodi e algoritmi adatti a indagare dati in quantità assolutamente inusuale per gli statistici, da qui la nascita di nuove discipline come il Data Mining, Statistical Machine Learning e altre.
Negli ultimi anni un'ulteriore accelerazione del processo di digitalizzazione che ha investito tutti i settori di industria ha ampliato ulteriormente queste necessità. Il data scientist, con le sue capacità di analizzare e interpretare dati, diviene così sempre più una figura professionale centrale e quindi richiesta nel mondo aziendale. Su una cosa tutti gli analisti concordano: uno dei problemi dei prossimi decenni sarà il gap tra la scarsa offerta e l'abbondante domanda di data scientist.
Sempre di più le aziende sono consapevoli di potere acquisire vantaggi competitivi dai dati che per il momento sono solo memorizzati (per esigenze di processo), ma non realmente analizzati. Per esempio, tutti i dati prodotti dalla sensoristica delle nostre automobili, sono in massima parte analizzati solo dopo il guasto dalla apparecchiatura di diagnostica del meccanico. Una loro analisi base di routine, per tutte le auto dello stesso modello, potrebbe portare enormi benefici nell'aumentare la sicurezza e l'affidabilità dei mezzi. Diverse case produttrici cominciano a muoversi in questa direzione con l'obiettivo ideale di individuare la difettosità prima ancora che l'auto esca dalla stessa fabbrica.
Il data scientist
Il data scientist è un professionista – quindi non uno scienziato o un ricercatore – ed è il portatore di una serie di competenze che permettono alle aziende non solo di sfruttare i dati disponibili per generare vantaggio competitivo, ma anche di creare nuovi modelli di business. Ecco alcuni esempi:
- Capacità di comprendere l'origine, e le possibili distorsioni insite in essa, dei dati che analizza;
- Capacità di analizzare il flusso informatico di provenienza dei dati: conoscere le tecnologie, i loro limiti prestazionali e i vantaggi dell'una sull'altra;
- Capacità di identificare problemi di business che possono essere meglio indirizzati grazie all'analisi dei dati;
- Capacità di analizzare i dati con metodi scientificamente provati: Statistica, Data Mining, Ricerca Operativa;
- Capacità di comunicare con chiarezza al top management i risultati e le raccomandazioni di business conseguenti;
- Capacità di ideare applicazioni automatizzate, che analizzano e suggeriscono le decisioni in ambienti complessi.
Certamente ogni data scientist avrà maggiori abilità in alcuni di questi campi e minori in altri, ma deve evidentemente avere la consapevolezza che tutti questi aspetti sono parte della sua professione, combinati con un'attitudine di fondo fatta di curiosità e creatività nel problem solving basato sull'analisi dei fatti.
Fino a un recente passato, i data scientist si sono formati sostanzialmente in modo autonomo, empiricamente, risolvendo problemi sempre più complessi. Sono il frutto della combinazione, talvolta casuale, tra le attitudini, gli studi individuali e le opportunità aziendali, senza un percorso di formazione e di crescita ben preciso. Negli ultimi anni però, sono si sono sviluppate iniziative anche in sinergia tra il mondo accademico e le aziende, per costruire dei curricula che avviino alla professione del data scientist, offrendo le competenze di base in modo più strutturato.
Ciò che vuole fare un data scientist consiste nel estrarre informazione dai dati, dopo aver effettuato una manipolazione, al fine di renderli più chiari, aver trasformato variabili che possono essere poco flessibili e aver modellato attraverso tecniche corrette.
Paradosso di Simpson
Percentuale di soggetti che sono stati accettati all'università. Data la differenza significativa tra il numero di maschi e il numero delle femmine accettate in questa università, si pensava ci fosse un problema di discriminazione. Effettuando un'analisi su questo fenomeno, si è scoperto che i maschi hanno effettuato test d'ingresso per facoltà più semplici rispetto alle femmine, questo ha portato a un numero di test passati maggiore per i maschi che per le femmine.
P-Hacking
Fare P-Hacking significa abbassare sempre di più il p-value associato a una statistica al fine di rendere significativi i test anche se in realtà risultano essere non significativi. Questo fenomeno è rischioso perché può portare a risultati inesatti, così come l'overfitting (ad esempio quando vado a stimare una variabile ed ho a disposizione un numero di osservazioni pari al numero di regressori).
Prediction error
Ricordo che la funzione di perdita quadratica corrisponde a: loss(y, g) = (y - g)2 per una scommessa pari a g e la realizzazione y. Allora l'expected prediction error corrisponde a: E[(Y-g)2] con g che appartiene al suo supporto che ovviamente varia da caso a caso.
Normale con media ignota (training e test set)
Considerando una normale con media ignota e varianza nota, volendo minimizzare il problema effettuiamo: f = arg min E[(Y-g)2]. La previsione ottimale sarà quindi E(Y) = μ con errore di previsione atteso pari a Var(Y) = σ2. Dato che è ignoto, solo un oracolo può prevedere in modo ottimale.
Supponendo di avere osservazioni che rappresentano il mio training set, da questo posso prevedere y1, ..., yn con f = (y1, ..., yn). Quale stimatore voglio considerare? Un buon stimatore è la media campionaria Ȳ = ΣY/n. Per vedere se è un buon stimatore per Y, farò l'MSE: E[(Y - Ȳ)2] = σ2 + Var(Ȳ).
Somma del lancio di 2 dadi
Ho ora Y = X + ε dove X e ε sono indipendenti tra loro. Noi osserviamo solo X quindi consideriamo una scommessa g(x) che è una funzione delle osservate. L'errore di previsione atteso per g(X) è quindi E[(Y-g(X))2]. Il quale dovrà essere minimizzato come già visto.
Regression function
Vogliamo prevedere Y da X minimizzando la funzione f=arg min E{[Y-g(X)]2} che ha come soluzione f(x) = E(Y|X=x). f(x) è chiamata funzione di regressione associata con (X, Y) che hanno distribuzione congiunta non nota. Non conoscendo la distribuzione congiunta, non sappiamo calcolare il valore atteso.
Considerando una normale bivariata, la funzione di regressione è la media della distribuzione condizionata. Per prevedere Y da X, dico che y = media condizionata.
Un modello di regressione Y = f(X) + ε con ε ~ N(0, σ2), se non ho f(X) devo andare a stimarla. Genero quindi un training set ed un test set per il confronto (nel quale conosco X ma non Y). Una volta trovato f(X), posso ricavare Ŷ.
Bias-Variance trade-off
E{[Y - f(X)]2} da cui otteniamo, condizionatamente a X=x:
E{[Y - f(X)]2} = E{[Y - f(x)]2|X=x} dove l'errore di previsione atteso può essere computato su tutti i valori di x.
E{[Y - f(x)]2|X=x} = Var(ε) + E{[f(x) - f̅(x)]2} con la prima parte che è irriducibile e la seconda è riducibile.
La parte riducibile si può scrivere come:
E{[f(x) - f̅(x)]2} + E{[f(x) - f̅(x)]}2.
Il tutto insieme ci dà quindi:
E{[Y - f(X)]2|X=x} = Var(ε) + Bias(f(x))2 + Var(f̅(x)).
Ciò che voglio è trovare il punto di equilibrio tra distorsione e varianza per prevedere bene. Vorrò quindi un equilibrio: low bias e high variance oppure high bias e low variance.
k-nearest neighbours regression
Con questo metodo, faccio la media dei 2, 3, 4 punti più vicini. Per fare questo scelgo il parametro k che più preferisco. Faccio la media di tutte le y nell'intorno di x. L'intorno è definito da quanti valori considerare k (numero naturale). In base al numero scelto, con k piccolo fit flessibile, alto fit meno flessibile. Con k = 30 in un dataset da 30 osservazioni, ho semplicemente la media del campione. Funzione molto rigida ovviamente. Con k = 1 ho esattamente gli stessi punti.
Al variare del numero dei vicini possiamo osservare un intervallo di flessibilità nella stima di f con k:
- Piccolo k corrisponde a una maggior flessibilità della previsione.
- Grande k corrisponde a una minor flessibilità della previsione.
Expected Optimism
Più aumenta la complessità del training error e più la funzione scende. Non cerco suggerimenti per trovare il grado del polinomio. Questo perché sto usando il modello 2 volte. Io sto già guardando i dati. Decido il grado del polinomio in base a ciò che minimizza la mia quantità E(MSEtest), non uso quella del training. Più il grado è alto e più raggiungo l'overfitting. Meglio usare il test error, il quale raggiunto un minimo, poi cresce. Quindi guardo l'errore sui dati di test e sul minimo. 5 è il minimo, quindi in teoria è il migliore.
Per stimare E(MSET), non usare l'errore sui dati di training perché è uno stimatore distorto verso il basso: E(MSEr) < E(MSET).
Ottimismo atteso: Optimism = E(MSEr) - E(MSET). Expected Optimism: E(MSEr) - E(MSET).
L'ottimismo atteso corrisponde a: 2pσ2.
Richiede σ2, ma non essendo noto dobbiamo stimarlo. Il metodo più popolare è:
- AIC: 2p - 2·log(likelihood(β̂, σ̂2))
- BIC: log(n)p - 2·log(likelihood(β̂, σ̂2))
Dove per i modelli lineari 2·log(likelihood(β̂, σ̂2)) = n·log(MSET).
Test: hold out single point
Utilizza 1 punti di training (x1), ..., (xi-1), (xi+1), ..., (xn) e y1, ..., yi-1, yi+1, ..., yn per ottenere la stima di f - (i) tralascio l'i-esimo punto di training (xi, yi) in modo tale da ottenere il punto di test per fare una stima dell'atteso.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.