--- title: Richiami di tecniche classiche di Analisi dei Dati tags: DataScience description: Blocco slide parte 2 --- # Analisi Statistica L’analisi statistica utilizza metodi statistici basati su formule matematiche come mezzo per analizzare i dati. Spesso è quantitativa, ma può essere anche qualitativa. Questo tipo di analisi viene comunemente usata per descrivere dataset tramite riepiloghi, ad esempio per fornire la media, la mediana o la moda associate ad un dataset. Essa può anche essere usata per inferire dei pattern o delle relazioni più complesse all’interno di un dataset. Tipologie importanti di analisi statistiche sono: - **L’A/B Testing** - **La Correlazione** - **La Regressione** ## A/B Testing L’A/B testing, spesso usato nel marketing, noto anche come split o bucket testing, confronta due versioni di un elemento (che può rappresentare un insieme di cose differenti) per determinare quale delle due è superiore sulla base di una metrica predefinita. La versione corrente dell’elemento viene chiamata versione di controllo, mentre la versione modificata è chiamata il trattamento. Entrambe le versioni sono simultaneamente soggette ad un esperimento, e vengono registrate delle osservazioni per determinare quale delle due versioni ha maggiore successo. È spesso usato in ambiti quali marketing. ## Correlazione La correlazione è una tecnica di analisi usata per determinare se due variabili sono correlate o meno una all’altra. Se si trova che esse sono correlate, il prossimo passo è determinare quale relazione esiste tra essi. L’uso della correlazione aiuta a sviluppare una comprensione di un dataset e a trovare relazioni che possono assistere nella spiegazione di un fenomeno, e viene pertanto spesso usata con il data mining. Quando due variabili vengono considerate correlate esse sono allineate sulla base di una relazione lineare. Questo vuol dire che se una variabile cambia, anche l’altra cambierà in modo proporzionale e costante. La correlazione viene espressa come un numero decimale tra -1 e +1, noto come coefficiente di correlazione. ## Regressione La tecnica di analisi della regressione esplora come una variabile dipendente è correlata ad una variabile indipendente all’interno di un dataset. Applicare questa tecnica aiuta a determinare come il valore della variabile dipendente cambia in relazione ai cambiamenti nel valore della variabile indipendente. La regressione può aiutare ad avere una migliore comprensione di che cos’è un fenomeno e di perché esso accade, e può anche essere utilizzata per effettuare delle predizioni sui valori della variabile dipendente, come vedremo in seguito quando parleremo del data mining. ### Regressione vs Correlazione La regressione e la correlazione hanno alcune importanti differenze. La correlazione, infatti, non implica un principio di causalità: il cambiamento nel valore di una variabile può non essere responsabile del cambiamento nel valore di una seconda variabile, sebbene entrambe possano cambiare alla stessa velocità. Questo, infatti, può accadere a causa di una terza variabile sconosciuta, nota come confusing factor. La correlazione assume che entrambe le variabili siano indipendenti. La regressione, d’altro canto, è applicabile a variabili che sono state identificate in precedenza come variabili dipendenti e variabili indipendenti e implica che ci sia un grado di causalità tra le variabili, che può essere diretta o indiretta. Nell’ambito dei Big Data, si può dapprima applicare la correlazione per scoprire se esiste una relazione, e successivamente si può applicare la regressione per analizzare ulteriormente la relazione e per predire i valori della variabile dipendente, basandosi sui valori conosciuti della variabile indipendente. # Machine Learning Se la conoscenza umana potesse essere combinata con la velocità di elaborazione delle macchine, queste ultime sarebbero capaci di processare grandi quantità di dati senza richiedere un grosso intervento da parte dell’uomo. Questo è il concetto alla base del machine learning. # Data Mining Lo scopo dei tool di Data Mining è la ricerca di eventuali correlazioni nascoste nei dati, che vengono raccolte a velocità sempre maggiori, al fine di supportare le decisioni. Il gap tra i dati e le informazioni richiede uno sviluppo sistematico di tool di Data Mining che trasformano le tombe di dati (dati raccolti) in pepite d’oro di conoscenza. I task di Data Mining possono essere classificati in due categorie: i task di mining descrittivo e i task di mining predittivo, e possono riguardare diversi tipi di pattern, a cui sono solitamente associate misure di certezza. Di seguito verranno descritti alcuni dei relativi task. ## Regole associative Ha lo scopo di individuare associazioni, o relazioni di correlazione, interessanti in un grosso insieme di dati. Un esempio di Mining di Regole Associative è la Market Basket Analysis. ### Definizioni Sia $I = \{i_1, i_2, …, i_m\}$ un insieme di prodotti e $D$ un insieme di transazioni del database. Ciascuna transazione $T$ è un insieme di prodotti tali che $T \subseteq I$. Una regola associativa è della forma $A \Rightarrow B$, dove $A \subset I$, $B \subset I$ e $A \cap B = \varnothing$. La regola $A \Rightarrow B$ vale in $D$ con supporto $s$, dove $s$ è la percentuale di transazioni in $D$ che contiene $A \Rightarrow B$. La regola $A \Rightarrow B$ ha confidenza $c$ in $D$ se $c$ è la percentuale di transazioni in $D$ che, contenendo $A$, contengono anche $B$. Per cui: $$ \text{Supporto}(A \Rightarrow B) = P(A \cup B) \\ \text{Confidenza}(A \Rightarrow B) = P(B | A) $$ Le regole che soddisfano sia una soglia minima di supporto $min\_sup$ che una soglia minima di confidenza $min\_conf$ sono dette forti. Se un itemset soddisfa il supporto minimo, allora è detto itemset frequente, e l’insieme di k-itemset (itemset con $k$ elementi) frequenti è comunemente denotato con $L_k$. Il Mining di Regole Associative consiste nella ricerca di tutti gli itemset frequenti e nella generazione di regole associative forti a partire dagli itemset frequenti. Un algoritmo comunemente usato per questo scopo è l'algoritmo apriori. ### Algoritmo apriori Apriori è un algoritmo molto famoso pensato per estrarre itemset frequenti per regole associative booleane, in cui i k-itemset vengono utilizzati per esplorare i (k+1)-itemset (level-wise search), ed è basata sulla seguente proprietà: *tutti i sottoinsiemi non vuoti di un itemset frequente devono anche essere frequenti*. Grazie a tale proprietà è possibile ridurre facilmente e notevolmente lo spazio di ricerca. Per comprendere come viene utilizzata la proprietà Apriori dobbiamo esaminare come viene utilizzato $L_{k-1}$ per costruire $L_k$. Il processo è composto da due passi: - **Passo di join:** Per costruire $L_k$ viene generato un insieme di k-itemset candidati, effettuando il join di $L_{k-1}$ con se stesso. In questa attività i membri di $L_{k-1}$ vengono posti in join se hanno $(k-2)$ prodotti in comune. L’insieme di k-itemset candidati così ottenuto viene indicato con $C_k$ - **Passo di prune:** I membri di $C_k$ possono essere o non essere frequenti ma, sicuramente, tutti i k-itemset frequenti sono inclusi in $C_k$. Al fine di ridurre la dimensione di $C_k$ viene opportunamente utilizzata la proprietà Apriori: ciascun (k-1)-itemset che non risulta essere frequente non può essere un sottoinsieme di un k-itemset frequente. ## Classificazione e predizione La classificazione è una tecnica di learning supervisionato tramite la quale i dati vengono classificati in categorie rilevanti, già conosciute a priori. Consiste in due passi: - Al sistema vengono forniti dei dati di training già categorizzati o etichettati, in modo tale che esso possa sviluppare una comprensione delle diverse categorie - Al sistema vengono forniti dati sconosciuti, ma simili; il sistema, basandosi sulla comprensione che esso ha precedentemente sviluppato a partire dai dati di training, classificherà i nuovi dati La classificazione e la predizione consentono di estrarre modelli che descrivono importanti classi di dati o di predire futuri andamenti dei dati. La classificazione predice etichette categoriche mentre la predizione modella funzioni a valori continui. I dati di input, prima di andare al classificatore o regressore, solitamente subiscono i seguenti passi di preprocessing: - Data cleaning - Analisi della rilevanza - Trasformazione dei dati La Predizione di valori continui può essere modellata tramite tecniche statistiche di **regressione**. ### Regressione lineare e polinomiale Nella regressione lineare i dati vengono modellati utilizzando una linea retta. La regressione lineare bivariata modella una variabile casuale $y$ come una funzione lineare di un’altra variabile casuale $x$: $$ y = \alpha + \beta x $$ Tali coefficienti possono essere individuati mediante il metodo dei minimi quadrati. Dati $s$ campioni, della forma $(x_1, y_1), (x_2, y_2), …, (x_s,y_s)$, il metodo dei minimi quadrati stima i coefficienti di regressione mediante la seguente formula: $$ \beta = \frac{\sum_{i=1}^s(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^s(x_i-\bar{x})^2} \\ \alpha = \bar{y} - \beta \bar{x} $$ dove $\bar{x}$ è la media di $x_1, x_2, …, x_s$ e $\bar{y}$ è la media di $y_1, y_2, …, y_s$ Questo metodo può anche essere applicato per la regressione multipla, che è multivariabile. La regressione polinomiale può essere modellata aggiungendo termini polinomiali al modello lineare di base. Applicando opportune trasformazioni alle variabili è possibile convertire un modello non lineare in uno lineare che può essere risolto mediante il metodo dei minimi quadrati. ### Accuratezza della classificazione Il criterio di gran lunga più utilizzato per la valutazione di un classificatore è l’accuratezza. In questo contesto, utilizzare i dati di training per derivare un classificatore e per stimare la sua accuratezza può comportare delle stime sbagliate iperottimistiche, per cui è opportuno misurare l’accuratezza su un test set. L’holdout e la cross-validation sono due tecniche comuni per individuare l’accuratezza di un classificatore. Nel modello dell’holdout i dati vengono partizionati randomaticamente in due insiemi indipendenti, denominati training set e test set (stima pessimistica), mentre nella k-fold cross validation i dati iniziali vengono randomaticamente partizionati in $k$ sottoinsiemi o “fold” mutuamente esclusivi $S_1, S_2, …, S_k$, effettuando il training e il testing $k$ volte (all’iterazione i il sottoinsieme $S_i$ viene utilizzato come test set). In generale viene raccomandata la 10-fold cross-validation stratificata per stimare l’accuratezza di classe. Altre misure spesso utilizzate per la valutazione sono: - **Sensitività – true positive rate:** proporzione di campioni positivi che vengono correttamente identificati ($\frac{t_{pos}}{pos}$) - **Specificità – true negative rate:** proporzione di campioni negativi che vengono identificati correttamente ($\frac{t_{neg}}{neg}$) - **Precisione:** percentuale di campioni etichettati come positivi che sono in realtà campioni positivi ($\frac{t_{pos}}{t_{pos} + f_{pos}}$) L’accuratezza è una funzione della sensitività e della specificità: ![](https://i.imgur.com/GJdY7L8.png) I veri positivi, i veri negativi, i falsi positivi e i falsi negativi sono anche utili per stabilire i costi e i benefici associati ad un modello di classificazione, assegnando costi diversi ad errori diversi. ## Clustering Clustering: raggruppamento di oggetti di cui non si conosce l’etichetta di classe. Un cluster è un insieme di oggetti che sono simili l’un l’altro e sono dissimili dagli oggetti di altri cluster. La classificazione richiede una costruzione e un’etichettatura del training set che risultano spesso costose. Il clustering invece è adattabile ai cambiamenti e consente di scegliere quali sono le caratteristiche di interesse per distinguere i vari gruppi. Consideriamo un insieme di $n$ oggetti da clusterizzare con $p$ variabili ciascuno. Gli algoritmi di clustering tipicamente operano su una delle seguenti strutture dati: - Una matrice dei dati, una matrice $n\times p$, le righe corrispondono agli oggetti e le colonne alle variabili: $$ \begin{bmatrix} x_{11} & ... & x_{1f} & ... & x_{1p} \\ ... & ... & ... & ... & ... \\ x_{i1} & ... & x_{if} & ... & x_{ip} \\ ... & ... & ... & ... & ... \\ x_{n1} & ... & x_{nf} & ... & x_{np} \end{bmatrix} $$ - Una matrice di dissimilarità, una matrice $n \times n$, le righe e le colonne sono associate agli oggetti: $$ \begin{bmatrix} 0 & 0 & 0 & 0 & 0 \\ d(2,1) & 0 & 0 & 0 & 0 \\ d(3,1) & d(3,2) & 0 & 0 & 0 \\ ... & ... & ... & ... & ... \\ d(n,1) & d(n,2) & ... & ... & 0 \end{bmatrix} $$ dove $d(i,j)$ è la differenza o dissimilarità misurata tra gli oggetti $i$ e $j$. Si noti che $d(i,j)=d(j,i)$ e $d(i,i)=0$. Degli esempi di distanza possono essere la maximum distance, la minimum distance, la mean distance e l'average distance. Esiste un gran numero di algoritmi di clustering. I principali metodi di clustering possono essere classificati in: - Metodi di partizionamento - Metodi gerarchici - Metodi basati sulla densità - Metodi basati sulla griglia - Metodi basati sul modello ### Metodi di partizionamento Dato un database di $n$ oggetti e dato $k \leq n$ il numero di cluster da costruire, un algoritmo di partizionamento organizza gli oggetti in $k$ partizioni. I cluster sono costruiti con il fine di ottimizzare un criterio di partizionamento oggettivo, spesso denominato funzione di similarità. Gli oggetti all’interno di un cluster devono essere simili mentre gli oggetti di cluster differenti devono essere dissimili. Metodi di partizionamento molto famosi sono k-means, k-medoids, k-mode. ### I metodi gerarchici Un metodo di clustering gerarchico lavora raggruppando gli oggetti in alberi di cluster. I metodi di clustering gerarchici possono essere suddivisi in: - Metodi di clustering gerarchici agglomerativi - Metodi di clustering gerarchici divisivi L’utente può specificare il numero di cluster come condizione di terminazione. Una struttura ad albero, denominata dendogramma, viene comunemente utilizzata per rappresentare il clustering gerarchico. Il metodo di clustering gerarchico incontra spesso difficoltà nella selezione dei punti di merge o di split, e non consente di annullare decisioni prese in precedenza. Ciò rende il metodo non molto scalabile. Si tenta di migliorare la qualità del clustering dei metodi gerarchici integrando il clustering gerarchico con altre tecniche. Esempi di metodi gerarchici con queste caratteristiche: BIRCH, ROCK, Chameleon. ### I metodi basati sulla densità Questi metodi consentono di individuare cluster di forma arbitraria, considerando i cluster come regioni dense di oggetti nello spazio dei dati separate da regioni a bassa densità. Questo si paga con la complessità che in genere è $O(n^2)$ oppure $O(n \text{log(n)})$. L’algoritmo di clustering basato sulla densità più famoso è DBSCAN ### I metodi basati sulla griglia Questi metodi utilizzano una struttura dati multi-risoluzione, ed hanno il vantaggio di un tempo di elaborazione ridotto. Alcuni esempi di clustering basato sulla griglia sono STING, WaveCluster e CLIQUE. ### Metodi basati sul modello Tentano di ottimizzare la corrispondenza tra i dati e un qualche modello matematico predefinito dall’utente. Sono basati sull’assunzione che i dati sono generati da una composizione di distribuzioni di probabilità. Seguono due principali approcci: l’approccio statistico e l’approccio con reti neurali Gli algoritmi più famosi di questa categoria sono Expectation Maximization (EM), CobWeb e Autoclass. ### Il clustering basato sui vincoli Quando il numero di dimensioni in gioco è elevato gli input dell’utente relativi alle dimensioni importanti o ai risultati desiderati servono come suggerimenti cruciali o come vincoli fondamentali. Il clustering basato sui vincoli ha lo scopo di costruire cluster che soddisfano preferenze o vincoli specificati dall’utente. ## Analisi degli outlier Gli outlier sono dati che non sono in linea con le credenze o il modello generale dei dati. Gli outlier possono essere causati da errori di misura o di esecuzione, ma potrebbero essere anche il risultato di una variabilità intrinseca dei dati. Molti algoritmi di Data Mining tentano di minimizzare l’influenza degli outlier, con la conseguenza che si potrebbero perdere informazioni importanti. A questo fine si fa uso dell'**Outlier Mining**: dato un insieme di $n$ oggetti e un numero atteso $k$ di outlier, trovare i $k$ oggetti che sono considerevolmente dissimili rispetto al resto dei dati. Il problema può essere decomposto in due sotto-problemi: - Definire quali dati possono essere considerati inconsistenti in un dato insieme - Trovare un metodo efficiente per estrarre gli outlier così definiti I metodi basati sul computer possono essere suddivisi in quattro approcci: approccio statistico, approccio basato sulla distanza, approccio agli outlier locali basato sulla densità, approccio basato sulla deviazione. Mentre gli algoritmi di cluster scartano gli outlier come rumore, essi potrebbero essere modificati per includere la ricerca degli outlier come un sotto-prodotto della loro esecuzione. ## Il web mining Il Web Mining vuole utilizzare tecniche di Data Mining per estrarre conoscenza nascosta sul Web, essendo questo un mezzo vivente che memorizza grandi quantità di informazioni, basandosi su contributi indipendenti. Questa eterogeneità e questa mancanza di organizzazione, inerenti al Web, pongono delle sfide severe quando si vogliono ricercare informazioni di alta qualità: - La dimensione del Web sta crescendo rapidamente - Il Web è un hypermedium popolare il cui contenuto viene costruito da diversi individui, spesso con scopi diversi e contrastanti - Solo una piccola porzione del Web è tipicamente rilevante per una determinata richiesta di informazioni Le tecniche di Web Mining possono essere classificate in tre principali categorie: - Web Structure Mining: vengono inferite informazioni esaminando la topologia della struttura dei link tra pagine Web (utile ad esempio per categorizzare siti web) - Web Content Mining: estrarre informazioni utili dal contenuto delle risorse Web - Web Usage Mining: scoprire dei pattern di utilizzo dai dati Web per capire e meglio soddisfare le necessità degli utenti Nella pratica, le varie attività di Web Mining si influenzano l’un l’altra. ## Il filtering Il filtering è il processo automatico di ricerca di item rilevanti da un pool di item. Gli item possono essere filtrati sulla base del comportamento di un utente o considerando il comportamento di più utenti. Un mezzo comune attraverso il quale viene implementato il filtering consiste nell’adozione di un recommender system. Un recommender system predice le preferenze dell’utente e genera, in accordo, suggerimenti per lui. Il filtering viene generalmente applicato attraverso i seguenti due approcci: - **Collaborative filtering:** è basato soltanto sulla similarità del comportamento tra utenti. Esso richiede una grande quantità di dati sui comportamenti degli utenti per filtrare accuratamente gli item, e rappresenta un esempio di applicazione della legge dei grandi numeri - **Content-based filtering:** tecnica di filtering focalizzata sulla similarità tra utenti e item. Le similarità identificate tra il profilo di un utente e gli attributi dei vari item consente di filtrare gli item più giusti per l’utente. Contrariamente al collaborative filtering, il content-based filtering è dedicato soltanto alle preferenze del singolo utente e non richiede i dati riguardo agli altri utenti. ## Analisi semantica L’analisi semantica rappresenta le pratiche per estrarre informazioni significative da dati testuali o di discorso. Nel seguito descriveremo i seguenti tipi di analisi semantica: - Natural Language Processing - Text Analytics - Sentiment Analysis ### Natural Language Processing Il Natural Language Processing consiste nella capacità di un computer di comprendere i discorsi e i testi così come vengono compresi in modo naturale dagli uomini. Questo consente ai computer di effettuare una varietà di task utili, ad esempio le ricerche sui testi. Invece di codificare in modo formale le regole di apprendimento richieste, vengono applicati sia il supervised learning che l’unsupervised learning per sviluppare la comprensione del linguaggio naturale da parte del computer. Il Natural Language Processing include sia il riconoscimento testuale che quello vocale. ### Analisi dei testi L’analitica dei testi denota l’analisi specializzata del testo attraverso l’applicazione delle tecniche di data mining, machine learning e natural language processing per estrarre valori da dati non strutturati. L’analitica dei testi fornisce essenzialmente la capacità di estrarre dei testi invece di cercarli semplicemente. Il principio di base dell’analitica dei testi è quello di trasformare il testo non strutturato in dati che possono essere ricercati e analizzati. L’analitica dei testi generalmente coinvolge due passi: - Il parsing dei testi all’interno dei documenti per estrarre entità, proprietà, concetti, fatti - Categorizzazione dei documenti utilizzando le entità e i fatti estratti al passo precedente L’informazione estratta può essere usata per effettuare una ricerca sulle entità che tenga conto del contesto, basandosi sul tipo di relazione esistente tra le entità stesse. ### Sentiment Analysis La Sentiment Analysis è una forma specializzata di text analysis che si focalizza nel determinare i pregiudizi e le emozioni degli individui. La Sentiment Analysis non solo fornisce informazioni su cosa pensano gli individui, ma anche sull’intensità delle loro emozioni. è una tecnologia diventata particolarmente importante con l'avvento del web 2.0. La sentiment analysis, che prima era un settore quasi sconosciuto, diventa una delle tecnologie di punta della big data analytics e, più in generale, del marketing e di tantissimi altri contesti industriali. La sentiment analysis può essere condotta su tre classi di dati testuali fondamentali: - Dati che abbiamo consapevolmente reso pubblici (Amazon, TripAdvisor, blog, etc.) - Dati che abbiamo più o meno inconsapevolmente reso pubblici (Facebook, Twitter, Gmail, etc.) - Dati che ci sono stati sottratti clandestinamente (ECHELON, PRISM, Xkeyscore, Tempora, etc.) ## Analisi visuale L’analisi visuale è una forma di analisi dei dati che coinvolge la rappresentazione grafica degli stessi per consentire o potenziare la sua percezione visuale. Basata sulla premessa che gli uomini possono capire e trarre conclusioni più velocemente dai grafici che dal testo, l’analisi visuale agisce come un tool di discovery nel campo dei Big Data. L’obiettivo è quello di usare le rappresentazioni grafiche per sviluppare una comprensione più profonda dei dati che vengono analizzati. Nel seguito considereremo quattro tipologie di analisi visuale, ovvero le mappe di calore, i grafici delle serie temporali, le reti e il mapping di dati spaziali. ### Mappe di calore Le mappe di calore sono una tecnica efficace di analisi visuale per esprimere pattern, composizione di dati tramite relazioni parti-tutto e distribuzioni geografiche dei dati. Esse facilitano anche l’identificazione di aree di interesse e la scoperta di valori estremi (alti/bassi) all’interno di un dataset. ### Serie temporali I plot delle serie temporali consentono l’analisi dei dati registrati ad intervalli periodici di tempo. Questo tipo di analisi fa uso delle serie temporali che rappresentano una collezione ordinata di valori registrati ad intervalli di tempo regolari. L’analisi delle serie temporali aiuta a scoprire pattern all’interno di dati di tipo temporale, e vengono generalmente utilizzati per l’identificazione di trend a lungo termine, di pattern periodici stagionali e per variazioni a breve termine. ### Reti All’interno del contesto della visual analysis, una rete rappresenta una collezione di entità connesse in modo diretto o indiretto, come una persona, un gruppo o qualunque altro oggetto del dominio di business, ad esempio un prodotto. L’analisi delle reti è una tecnica che si focalizza sull’analisi delle relazioni tra entità all’interno di una rete. Essa comporta la rappresentazione delle entità come nodi e delle loro connessioni come archi. Esistono delle varianti specializzate dell’analisi delle reti, che comprendono: - L’ottimizzazione dei percorsi - La Social Network Analysis - La predizione della diffusione, ad esempio la diffusione di una malattia contagiosa ### Dati spaziali e geospaziali I dati spaziali o geospaziali vengono comunemente usati per identificare la locazione geografica di singole entità che possono successivamente essere mappate. L’analisi dei dati spaziali si focalizza nell’analisi dei dati basandosi sulla locazione per trovare differenti relazioni geografiche e pattern tra entità. I dati spaziali vengono manipolati attraverso un Geographic Information System (GIS) che disegna i dati spaziali su una mappa usando generalmente le sue coordinate di latitudine e di longitudine. Con la disponibilità sempre crescente di dati basati sulla località, quali sensori e dati sui social media, è possibile analizzare dati spaziali per ottenere dei pattern sulle locazioni. I dati usati in input per l’analisi spaziale possono contenere delle locazioni esatte (ad esempio, la latitudine e la longitudine), oppure delle informazioni richieste per calcolare le locazioni, ad esempio i codici di avviamento postale o gli indirizzi IP. Inoltre, l’analisi dei dati spaziali può essere utilizzata per determinare il numero di entità che ricadono all’interno di un certo raggio di un’altra entità.