Negli scorsi articoli di questa mini-serie (perlopiù basata sulle difficoltà che gli studenti di DataMasters hanno dimostrato di avere) sugli indici statistici abbiamo già visto cosa sono varianza, deviazione standard, covarianza e correlazione. Con questo articolo approfondiamo una struttura dati introdotta nello scorso articolo e che quando ho iniziato a studiare Machine Learning mi ha letteralmente fatto esplodere il cervello, e non perchè fosse un concetto difficile, ma perchè mi ha realmente aperto la porta delle potenzialità della Data Science e del Machine Learning.
Dove eravamo rimasti? La correlazione
La struttura dati di cui sto parlando è la matrice di correlazione. È anch’esso, come molti altri, un concetto molto semplice da capire e ancora più semplice da utilizzare. Ovviamente si parte dal concetto di correlazione: la correlazione è una misura che indica la relazione lineare fra due variabili casuali. È compresa sempre fra -1 e 1, dove:
-1 significa che le due variabili hanno una relazione lineare inversa, vale a dire che all’aumentare di una, l’altra diminuisce
1 significa che le due variabili hanno una relazione lineare diretta, vale a dire che all’aumentare di una aumenta anche l’altra
0 significa che non è possibile stabilire fra le due variabili un andamento lineare
Occhio, correlazione non significa causalità. Ad esempio, quando la correlazione fra due variabili è vicina ad 1, non significa che un cambio in una variabile generi automaticamente un cambio anche nella seconda. Ad esempio, prendiamo due variabili come “Numero di gelati venduti giornalmente nell’arco di un anno” e “Numero di scottature giornaliere rilevate nell’arco di un anno”. Verosimilmente le due variabili avranno un’alta correlazione (all’aumentare di una aumenterà verosimilmente anche l’altra), ma un cambio in una delle due variabili sicuramente non si rifletterà nell’altra. Alta correlazione, bassa causalità.
Fissato questo concetto, torniamo alla matrice di correlazione.
Matrice di correlazione
La matrice di correlazione è una matrice quadrata (il che significa che il numero di righe è uguale al numero di colonne) simmetrica (il che significa che la matrice di correlazione è uguale alla sua trasposta) con gli elementi della diagonale principale tutti uguali ad 1 e semidefinita positiva (significa che i suoi autovalori sono tutti non negativi). Mentre le prime due proprietà sono di semplice intuizione e visualizzazione, è bene spendere un paio di parole sull’ultima proprietà, perchè non tutte le matrici quadrate, simmetriche con diagonale principale pari a 1 sono semidefinite positive e quindi non tutte le matrici che soddisfano i primi 3 criteri sono delle matrici di correlazione. Ad esempio, la matrice:
ha un autovalore negativo. Potreste trovarlo a mano, ma visto che abbiamo fretta, usiamo Python e numpy per calcolare tutti i suoi autovalori:
la funzione np.linalg.eig prende in input una matrice (che nei linguaggi di programmazione sono di base delle liste di liste, o vettori di vettori, o array di array) e restituisce una tupla con 2 elementi:
il primo è costituito dagli autovalori della matrice
il secondo è costituito dagli autovettori normalizzati della matrice
Ergo per accedere ai singoli autovalori bisogna accedere all’elemento con indice [0] della tupla restituita.
Esistono delle tecniche per rendere semidefinita positiva una matrice inizialmente non semidefinita positiva, ma non approfondiremo queste tecniche in questo articolo. Qui alcuni spunti interessanti per chi vuole approfondire la questione.
Costruire una matrice di correlazione
Cerchiamo adesso di capire come è fatta una matrice di correlazione, supponendo che abbia tutte le proprietà di cui abbiamo già parlato.
Partiamo da un dataset, ovvero da un insieme di variabili casuali, o se preferite da un insieme di righe che costituiscono singole osservazioni e in cui ciascuna riga è divisa in un certo numero di colonne.
Quando ho studiato per la prima volta ML da questo libro, uno dei primi esempi di modelli predittivi (una semplicissima regressione lineare) si riferiva ad un dataset formato dalle quotazioni delle case nei diversi quartieri dello stato della California. Una volta scoperta cos’è la regressione lineare, e soprattutto una volta studiata la parte relativa alle correlazioni e alle matrici di correlazione le mie porte della percezione si sono spalancate, come scriveva qualcuno, però senza mescalina. Sì, a noi informatici basta poco per andare in trip. Comunque: ogni riga del dataset rappresenta un quartiere diverso; ogni riga ha le seguenti feature (N.B. feature è un nome cool per dire “variabile casuale”, o ancora meglio variabile su cui si possono calcolare degli indici statistici):
longitudine
latitudine
età mediana delle case
numero totale di stanze
numero totale di stanze da letto
popolazione
n. occupanti
reddito mediano degli occupanti
valore mediano delle case
vicinanza all’oceano
Il libro di testo citato è un vero e proprio must per chi vuole studiare Machine Learning, pur avendo dei prerequisiti di base non banali, soprattutto in ambito di programmazione. Tutto il codice del libro è disponibile gratuitamente a questo link, mettetelo fra i preferiti.
Possiamo dire che il dataset in questo caso ha dimensioni n x 10, dove n è il numero di righe presenti nel dataset, cioè il numero di quartieri.
Proviamo a costruire la matrice di correlazione di questo dataset. Le variabili fra cui calcoleremo la correlazione sono le 10 feature del nostro dataset. In realtà c’è una variabile in particolare per cui non ha senso calcolare la correlazione: si tratta della feature “ocean_proximity”, che non è numerica ma categorica. Significa che il suo dominio non è un insieme numerico continuo ma un insieme discreto di valori. In particolare, per questa feature gli unici valori ammessi sono:
Non ha senso calcolare la correlazione (un indice che serve a calcolare la relazione lineare fra due variabili casuali continue) di una variabile con questa feature. Ergo possiamo escluderla anche dalla matrice di correlazione. Iniziamo dalle basi, quindi. Il nostro dataset è inizialmente costituito da 10 feature ma abbiamo deciso di escluderne una, quindi la nostra matrice di correlazione sarà quadrata, di dimensioni 9×9, inizialmente vuota:
Una matrice quadrata vuota.
Iniziamo adesso a riempire la nostra matrice di correlazione con i valori di correlazione. Ricordiamo che ogni elemento di una matrice è indicato da un indice di riga e un indice di colonna. Partiamo da 0 a contare le righe e le colonne, in maniera che (per esempio) l’elemento più in basso a sinistra abbia posizione 8, 0(riga 8, colonna 0). Di contro l’elemento più a destra della quarta riga avrà posizione 3, 8(riga 3, colonna 8). Il fatto che la matrice sia simmetrica impone un vincolo sulla costruzione della tabella, visto che l’elemento con posizione i, j deve avere pari valore dell’elemento in posizione j, i (l’elemento in posizione 3, 8 deve essere uguale all’elemento in posizione 8, 3). Ottenere questa condizione è in realtà molto semplice: partiamo per esempio dalla feature “Longitudine”. Assegniamo la longitudine alla riga con indice 0. La condizione di simmetria rispetto alla diagonale principale (cioè la diagonale che va dall’elemento con indice 0, 0 all’elemento con indice 8, 8)si ottiene assegnando una variabile già assegnata ad una certa riga alla colonna con lo stesso indice: 0. Dopodichè facciamo la stessa cosa con “Latitudine”. Assegniamo la latitudine alla riga con indice 1 e alla colonna con lo stesso indice. Così via fino ad ottenere questa assegnazione di righe e colonne:
Nel mondo high tech, alcune professioni spiccano per il loro impatto rivoluzionario e per l’alto livello di competenze richieste. Il machine learning engineer è una di queste: un programmatore esperto […]
Nel panorama tecnologico contemporaneo, il ruolo del Data Engineer è diventato sempre più cruciale per le aziende che desiderano sfruttare il potenziale dei loro dati. Ma cosa significa esattamente essere […]
Nel vasto ecosistema di Python, poche librerie hanno rivoluzionato l’analisi dei dati quanto Pandas. Questa potente libreria è diventata uno strumento indispensabile per data scientist, analisti e sviluppatori in tutto […]
In un’era in cui la quantità di informazioni generate quotidianamente cresce in modo esponenziale, la capacità di estrarre valore da questi dati grezzi è diventata una competenza cruciale per le […]
Il premio Nobel per la fisica del 2024 è stato assegnato a John Hopfield e Geoffrey Hinton “per scoperte e invenzioni fondazionali che abilitano l’apprendimento automatico nelle reti neurali artificiali”, […]
Un nuovo traguardo da festeggiare per la nostra tech academy: abbiamo appena concluso un round di finanziamento seed. Questo risultato appartiene a tutta la nostra community: ai nostri studenti, ai […]
Non c’è ombra di dubbio che nel vasto panorama dell’intelligenza artificiale e del machine learning, l’apprendimento per rinforzo (o Reinforcement Learning in inglese) emerge come una tecnica molto affascinante, ma […]
La computer vision è una delle tecnologie più affascinanti e rivoluzionarie nel campo dell’Intelligenza Artificiale. Questa disciplina, in breve, ha il compito di permettere ai computer di interpretare e comprendere […]
Siamo entusiasti di condividere con voi un traguardo significativo nel nostro viaggio: il lancio della nuova identità di Data Masters! Questo rebranding rappresenta la nostra continua evoluzione e il nostro […]
Nel settore energetico, l’utilizzo di Data Science e Intelligenza Artificiale sta emergendo come una delle innovazioni più promettenti per affrontare le sfide legate alla produzione, distribuzione e consumo di energia. […]
Nell’era digitale che stiamo vivendo, l’Intelligenza Artificiale (AI) e il Machine Learning (ML) sono diventati concetti sempre più diffusi e influenti. Queste tecnologie hanno rivoluzionato numerosi settori, dall’assistenza sanitaria al […]
Siamo entusiasti di annunciare che anche quest’anno il team Data Masters sarà presente al PyCon Italia 2024, con tanti workshop per ogni livello di competenza. Cos’è il PyCon Italia? Il […]
Accedi ora a risorse di apprendimento gratuite di alta qualità e trasforma le tue ambizioni
in competenze concrete. Il tuo viaggio verso il successo inizia oggi!