Trasformazione delle Variabili: Standardizzazione Z-Score

Parte (1/3)

Potrebbe interessarti:

Il progetto Python, che comprende gli script mostrati in questo post, e quelli relativi alla creazione dei grafici Matplotlib, è disponibile assieme al corso Fondamenti di Statistica per il ML.

Dimmi di Più

Perché Trasformare i Dati

I dati che osserviamo nel mondo reale possono avere caratteristiche molto diverse. Alcune variabili possono essere espresse su scale molto grandi, altre su scale più piccole; alcune possono presentare distribuzioni fortemente asimmetriche, valori estremi o una variabilità molto elevata.

In molti casi è quindi utile trasformare i dati, cioè applicare una funzione ai valori originali di una variabile per ottenere una nuova rappresentazione più adatta all’analisi.

Una trasformazione non modifica necessariamente l’informazione rappresentata dalla variabile, ma cambia il modo in cui i suoi valori vengono espressi. Ad esempio, possiamo trasformare una temperatura da gradi Celsius a Fahrenheit senza cambiare il fenomeno osservato.

In statistica e nel Machine Learning le trasformazioni vengono utilizzate per diversi scopi. Possiamo, ad esempio, portare variabili con scale diverse su scale confrontabili, ridurre l’effetto di distribuzioni fortemente asimmetriche o rendere più semplice l’analisi delle relazioni tra le variabili.

Tra le trasformazioni più comuni troviamo la standardizzazione (Z-Score) e la normalizzazione Min-Max, che modificano principalmente la scala dei dati, e trasformazioni come quella logaritmica, radice quadrata e reciproca, che possono modificare anche la forma della distribuzione.

È importante ricordare che una trasformazione deve essere scelta in funzione dello scopo dell’analisi: non esiste una trasformazione migliore in assoluto e non sempre è necessario trasformare i dati.

La Standardizzazione

La standardizzazione (Z-Score) è un procedimento usato per rendere confrontabili valori appartenenti a distribuzioni con scale o dispersioni differenti, esprimendo ogni osservazione mediante una scala comune: il numero di deviazioni standard che la separano dalla propria media.

Quando analizziamo un’osservazione, possiamo inizialmente confrontarla con la media della distribuzione calcolando il suo scostamento dalla media:

$$x - \mu$$

Questo valore indica di quante unità l’osservazione si trova sopra o sotto la media.

Tuttavia, lo scostamento assoluto non tiene conto della variabilità dei dati. La stessa distanza dalla media può infatti essere molto rilevante in una distribuzione poco dispersa, e del tutto ordinaria in una distribuzione caratterizzata da una forte dispersione.

Per valutare correttamente la posizione relativa di un’osservazione, è quindi necessario confrontare il suo scostamento dalla media con la deviazione standard della distribuzione. Questo procedimento prende il nome di standardizzazione.

La standardizzazione trasforma un valore originale $x$ nel corrispondente punteggio standardizzato, detto anche Z-Score:

$$ z = \frac{x - \mu}{\sigma} $$

dove:

  • $x$ è il valore osservato;
  • $\mu$ è la media della distribuzione;
  • $\sigma$ è la deviazione standard;
  • $z$ è la distanza dell’osservazione dalla media, espressa in unità di deviazione standard.

Il numeratore $(x - \mu)$ misura la distanza assoluta dalla media, mentre la divisione per $\sigma$ rapporta tale distanza alla variabilità tipica della distribuzione, ovvero indica quanto siamo lontani dalla media rispetto a quanto è normalmente dispersa quella distribuzione.

Il valore risultante $z$ è un numero puro che indica la direzione e l’entità dello scostamento:

Valore $z$Informazione
$z = 0$il valore è perfettamente identico alla media..
$z > 0$il valore è superiore alla media (es. $1.5$ indica una deviazione standard e mezza sopra la media).
$z < 0$il valore è inferiore alla media.

Una volta applicata la trasformazione all’intero dataset, la nuova distribuzione dei valori, $z$, godrà sempre di due proprietà fisse:

  1. Media uguale a 0:
    la distribuzione viene “centrata” sull’origine.

  2. Deviazione standard uguale a 1:
    la dispersione viene uniformata.

Distribuzione Normale Standard

In Python, possiamo standardizzare un campione di dati estratto da una distribuzione normale non standard nel seguente modo:

import numpy as np
import matplotlib.pyplot as plt

# per la riproducibilità
rng = np.random.default_rng(42)

# estraiamo dei campioni casuali da una distribuzione normale (gaussiana)
# com media 10 e deviazione standard 3.5
mu = 10
sigma = 3.5
x = rng.normal(loc=mu, scale=sigma, size=10_000)
np.set_printoptions(precision=2)
print("primi 5 valori x: ", x[:5])
# primi 5 valori x:  [11.07  6.36 12.63 13.29  3.17]

# Standardizzazione (Z-Score)
z = (x - mu) / sigma
print("primi 5 valori z: ", z[:5])
# primi 5 valori z:  [ 0.3  -1.04  0.75  0.94 -1.95]

Rappresentando tramite istogramma i valori originali e quelli standardizzati, possiamo osservare che la forma della distribuzione non cambia: rimane la caratteristica forma a campana della distribuzione normale. Dopo la standardizzazione:

  • la media campionaria dei valori standardizzati, $\bar{z}$, è circa $0$;
  • la deviazione standard campionaria dei valori standardizzati, $s$, è circa $1$;
  • i valori non sono più espressi nell’unità di misura originale, ma indicano la loro distanza dalla media in unità di deviazione standard:
Esempio di una Distribuzione Normale e una Normale Standard

Sebbene versatile, lo Z-Score ha dei punti deboli:

  • Sensibilità agli Outlier:
    poiché la media e la deviazione standard sono influenzate dai valori estremi, la presenza di outlier molto marcati può “distorcere” lo Z-Score di tutti gli altri dati.

  • Assunzione di Normalità:
    sebbene sia calcolabile su qualsiasi distribuzione, l’interpretazione classica (es. “uno Z-Score di 2 è un evento raro”) è strettamente legata alla Distribuzione Normale Standard. Se i dati sono fortemente distorti, lo Z-Score potrebbe fornire un’immagine fuorviante della rarità di un dato.

È importante notare che la standardizzazione è una trasformazione lineare che non distorce le distanze relative tra i punti. Ciò significa che, pur cambiando i valori numerici, la forma della distribuzione (asimmetria, curtosi) rimane invariata. Se i dati originali erano “a campana”, lo rimarranno; se erano asimmetrici, la standardizzazione non li renderà simmetrici.

Un Esempio: La Stessa Distanza Assoluta in due Distribuzioni Diverse

Consideriamo due distribuzioni aventi la stessa media, ma deviazioni standard differenti. Per entrambe osserviamo il valore:

$$x = 120$$

Le distribuzioni sono definite dai seguenti parametri:

$$ \begin{align*} \mu_a=100, \quad \sigma_a=10\\ \mu_b=100, \quad \sigma_b=40 \end{align*} $$

In entrambi i casi, la distanza assoluta dell’osservazione dalla media è uguale:

$$ x - \mu = 120 - 100 = 20 $$

Osservando soltanto questo scostamento, potremmo pensare che il valore $120$ occupi la stessa posizione relativa nelle due distribuzioni. La standardizzazione mostra invece che non è così:

Esempio di standardizzazione di alcuni valori

Per la distribuzione A otteniamo:

$$ z_a =\frac{x-\mu_a}{\sigma_a} =\frac{120-100}{10} =\frac{20}{10} =2 $$

Il valore $120$ si trova quindi a due deviazioni standard sopra la media. Poiché la distribuzione A presenta una dispersione ridotta, uno scostamento di $\bf{20}$ unità è relativamente grande. Il valore osservato è pertanto piuttosto lontano dal comportamento tipico della distribuzione.

Per la distribuzione B otteniamo:

$$ z_b=\frac{x-\mu_b}{\sigma_b} =\frac{120-100}{40} =\frac{20}{40} =0.5 $$

Il valore $120$ si trova quindi a mezza deviazione standard sopra la media. In questa distribuzione i dati sono molto più dispersi. Di conseguenza, uno scostamento di $20$ unità è relativamente piccolo, e il valore osservato risulta ancora abbastanza vicino alla media.

Nei due casi la distanza assoluta dalla media è identica $(120 - 100 = 20)$, ma la distanza espressa in unità di deviazione standard è diversa:

$$ \begin{align*} z_a &= 2\\ z_b &= 0.5 \end{align*} $$

Nella distribuzione A, quindi, il valore $120$ rappresenta un’osservazione relativamente lontana dalla media. Nella distribuzione B, invece, lo stesso valore rappresenta un’osservazione soltanto moderatamente superiore alla media.

Questo esempio mostra che una differenza assoluta non può essere interpretata senza considerare la dispersione della distribuzione. Dividere per la deviazione standard consente di trasformare lo scostamento assoluto in uno scostamento relativo alla variabilità tipica dei dati.

Lo Z-Score non misura semplicemente quanto un valore è lontano dalla media, ma quanto tale distanza è grande rispetto alla variabilità tipica della sua distribuzione.

Confronto tra Grandezze Non Omogenee

Abbiamo detto che la standardizzazione trasforma un valore espresso in una determinata unità di misura in un valore adimensionale. Dobbiamo però fare attenzione: lo Z-Score non rende direttamente confrontabili grandezze diverse, come l’altezza e il peso. Permette invece di confrontare la posizione relativa dei valori nelle rispettive distribuzioni, misurando la loro distanza dalla media in unità di deviazione standard.

Supponiamo di avere una popolazione con:

  • altezza:

    • media = $175$ cm;
    • deviazione standard = $10$ cm
  • peso:

    • media = $70$ kg;
    • deviazione standard = $8$ kg.

Consideriamo una persona alta $190$ cm e che pesa $78$ kg. Calcolando lo z-score per l’altezza e per il peso, otteniamo:

$$ \begin{align*} z_{\text{altezza}} &= \frac{190 - 175}{10}=1.5\\[6pt] z_{\text{peso}} &= \frac{78 - 70}{8}=1 \end{align*} $$

Con questi risultato, non stiamo dicendo che “190 cm sono maggiori di 78 kg”. Questo sarebbe effettivamente confrontare mele e pere. Stiamo dicendo invece:

  • Rispetto alla distribuzione delle altezze:
    questa persona si trova $1.5$ deviazioni standard sopra la media.

  • Rispetto alla distribuzione dei pesi:
    questa persona si trova $1$ deviazione standard sopra la media.

Quindi possiamo concludere che l’altezza della persona è relativamente più distante dalla propria media rispetto al peso.

La Standardizzazione nel Machine Learning

Nel Machine Learning, lo Z-Score viene usato soprattutto per standardizzare le feature numeriche prima di addestrare determinati modelli (le variabili del dataset utilizzate come input di un modello). Data una feature $x$, si applica:

$$ z = \frac{x - \mu}{\sigma} $$

ottenendo una nuova feature centrata intorno a $0$, e con deviazione standard pari a $1$.

Lo Z-Score è molto frequente con gli algoritmi che sono sensibili alla scala delle feature, in particolare con la Regressione Lineare, la Regressione Logistica, le Reti Neurali, e gli algoritmi di clustering come DBScan.

Al contrario, la standardizzazione è generalmente poco utile per gli alberi decisionali e per modelli derivati come Random Forest e Gradient Boosted Trees, perché le suddivisioni dell’albero vengono effettuate considerando una feature alla volta, e dipendono dall’ordinamento dei valori, non dalla loro scala.

Come esempio, consideriamo un dataset con:

$$ \begin{align*} \text{Età} &= \{18 \ldots 80\}\\ \text{Reddito} &= \{20{,}000 \ldots 500{,}000\} \end{align*} $$

Se utilizziamo direttamente queste due feature in un algoritmo basato sulla distanza, il reddito può dominare numericamente l’età a causa della sua scala maggiore.

Un problema simile si presenta negli algoritmi di ottimizzazione basati sulla discesa del gradiente: feature con scale molto diverse possono produrre gradienti di entità molto diversa. Semplificando, quelle con scala numerica maggiore possono dominare il processo di ottimizzazione, causando aggiornamenti dei parametri più ampi rispetto alle feature con scala minore, anche quando queste ultime sono altrettanto importanti per il modello.

Dopo la standardizzazione entrambe vengono espresse in termini di distanza dalla propria media:

$$ \begin{align*} \text{Età} & \rightarrow Z_{\text{età}} \\ \text{Reddito} & \rightarrow Z_{\text{reddito}} \end{align*} $$

Questo non significa che età e reddito diventino grandezze direttamente confrontabili dal punto di vista semantico: significa che nessuna delle due domina il modello semplicemente a causa della propria scala numerica.

Caricamento
  • Rendering delle formule LaTeX...