Blog.

Standardization python | Towards Machine Learning


Autore
Andrea Provino
Data
Tempo di lettura
5 minuti
Categoria
Data Science, machine-learning

standardization_standardize_standardizzazione_python_machine_learning_guida_italiano

Buongiorno!

Tenuto presente che sono le 19:47…

Buonasera!

Dopo 1512 ore di assenza, precise come l’ora di un pendolo su una barca, siamo finalmente tornati!

In questo lungo lasso temporale è successo di tutto. Viaggi tra Milano e Torino. Multe. Piogge. Grigliate. Corsi sul machine learning avanzati. Uccisioni di zanzare, mosche e pappataci. Insomma la routine.

Oggi, volendo partire in modo soft, parliamo di una tecnica propria della statistica, che quindi torna particolarmente utile anche per noi AADS (Ambiziosi Aspiranti Data Scientist) o A2DS.

Standardization: a standardize normal distribution

Potrei fornire fin da subuto una definizione di standardizzazione.

Ma dal momento che siamo anticonformisti, procediamo col capirne il signfiicato in via intuitiva e solo in un secondo momento assimilare, facendo nostre, quelle due righe che ci rendono fighi ai nostri amici.

Be like a pro!

Perché la standardizzazione ci piace

Ogni qual volta è necessario comparare features i cui valori hanno unità o scale differenti, ecco che abbiamo un problema. Sempre che tu non riesca a processare dati della serie supercoputer spostati proprio.

Facciamo un esempio.

Andrea, e la sua ragazza Chiara, superano entrambi il test di ammissione per entrare nelle facoltà universitarie dei loro sogni.

Andrea totalizza 552 punti, in un test la cui media punti aritmetica è di 502, mentre Chiara 82, in un test con media aritmetica di 75.

Entrambi sostengono di aver avuto una performance migliore, ma chi ha realmente ragione?

Per rispondere alla domanda, noi AADS chiediamo alle Università qualche dato in più sui test: lo scarto tipo (12 e 127) e il numero di test effettuati (15678).

Configuriamo quindi il nostro problema come segue:

Test_1 : (media) μ=75,  (scarto tipo) σ=12, n=15678
Test_2 : (media) μ=502, (scarto tipo) σ=127, n= 15678

E tracciamo due semplici istrogrammi:

Perfetto. Non si capisce una cipolla.

Noi però abbiamo un’arma segreta: la standardizzazione.

Applichiamo questo processo a entrambi i test e otteniamo:

Mentre ad una prima vista potrebbe sembrare che la standardizzazione non sia servita ad un c…..eppo, un occhio più attento avrà certamente notato alcune particolarità.

Prendendo un singolo dato infatti:

siamo in grado di ottenere lo z-score (o punti zeta) di Chiara e Andrea, in pratica il loro punteggio standardizzato:

Chiara: 0.50
Andrea: 0.40

Possiamo quindi concludere che sia Chiara ad avere ragione.

La definizione di standardizzazione

Per standardizzazione (in inglese, Z-score normalization o standardization) si suole riferirsi ad un procedimento statistico di manipolazione dei dati che, nel caso di un dataset, modifica i valori di una o più features affinché abbiano le proprietà di una distribuzione Gaussiana con μ=0 e σ=1, leggasi “media zero e scarto tipo uno”.

Standardization Formula

Ora lo scarto tipo (o scarto quadratico medio), è quello che in tutto il mondo chiamano deviazione standard (standard deviation, std). Noi italiani siamo più fighi.

Riferita ad una variabile casuale, ne indica la dispersione attorno ad un indice di posizione quale ad esempio la media aritmetica.

Una distribuzione Gaussiana, o normale, è una particolare distribuzione associata alle variabili casuali.

Per il momento non entriamo troppo nel merito del discorso. Ci basta sapere che una distribuzione di questo tipo è spesso detta ‘a campana’ o bell distribution, essendo facilmente riconoscibile proprio dal suo aspetto.

Gettate le basi di questo sofisticato discorso, capiamo assieme quando una simile trasformazione torna utile.

Standardization and Machine Learning

La ricetta di un machine learning con i fiocchi è una sola:

  • algoritmi
  • potenza di calcolo (q.ba)
  • dati da analizzare+

Alcuni algoritmi sono schizzinosi e pretendono che i dati da analizzare siano stati processati secondo alcune regole.

Questi sono gli algorimti/campi di machine learning che apprezzano la standardizzazione delle features:

  • K-nearest neighbors con misura della distanza euclidea
  • Logistic Regression, SVM, perceptrons, Neural Networks
  • K-means

Al contrario, ci sono algoritmi per cui la standardizzazione ne migliora le performance, anche se non è strettamente necessaria al loro funzionamento. Di questi, vanno tenuti a mente:

  • Naive Bayes
  • Decisiom Trees
  • Random Forest (Ensemble Decision Trees)

Standardizzazione in Python

Esistono diversi modi per applicare al standardizzazione in Python. In due righe è possibile creare una semplice funzione:

Per soddisfare le dipendenze di questo codice è sufficiente fare un’import di:

import numpy as np

La prima funzione prende come parametro una feature e ne effettua la standardizzazione, applicando la formula base.

La seconda funzione è un bonus tutto per te!

Calcola lo z-score che quindi ci consente di paragonare il valore di due features standardizzate.

Per approfondimenti:

Taggeddata sciencepython


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum