Skip to main content
All articles
Deep LearningMachine LearningStatistical Learning Theory10 min read

Selezione delle Features : Dal Concetto alla Pratica

Scopri il segreto per trasformare dati grezzi in previsioni precise: la Selezione delle features. È la fase nascosta dietro i modelli di intelligenza artificiale che li rende davvero brillanti.…

Written in Italian

On this page6
  1. Selezione delle features
  2. 1. Analisi di covarianza
  3. 2. Analisi di correlazione
  4. 3. Recursive Feature Elimination
  5. 4. PCA
  6. Resta sempre aggiornato

Scopri il segreto per trasformare dati grezzi in previsioni precise: la Selezione delle features. È la fase nascosta dietro i modelli di intelligenza artificiale che li rende davvero brillanti. Immagina di poter dare forma ai tuoi dati in modo tale che il tuo modello possa cogliere sfumature sottili e fare previsioni più accurate. Questo è esattamente ciò che la Selezione delle features fa. È come dare un tocco magico ai tuoi dati per far emergere il loro pieno potenziale predittivo.

Letture Consigliate

Selezione delle features

Nella fase di preparazione dei dati, ci si imbatte spesso in dataset corposi, ricchi di features che non apportano valore predittivo al modello. Queste variabili possono essere ridondanti, contenere informazioni sovrapponibili ad altre o addirittura non influenzare affatto la variabile target. Di conseguenza, l’utilizzo di tali caratteristiche durante l’addestramento del modello può compromettere le sue capacità predittive (overfitting), oltre ad aumentare inutilmente la complessità computazionale del processo di apprendimento.
Per questo motivo, solitamente, si sottopone il dataset a un processo di selezione delle features. Tale procedura mira a identificare e mantenere solo quelle variabili che realmente contribuiscono alla predizione della variabile target, eliminando quelle superflue o ridondanti.

1. Analisi di covarianza

L’analisi di covarianza è il primo passo importante nella selezione delle features, soprattutto perché fornisce una panoramica chiara delle relazioni tra le variabili presenti nei dati. In sostanza, la covarianza ci dice se le variazioni in una variabile corrispondono alle variazioni in un’altra variabile e in che direzione avvengono. Questo è importante perché ci aiuta a capire quali variabili potrebbero essere correlate e quindi potenzialmente influenzare la nostra variabile di interesse.

Matrice di covarianza

Questa mostra la covarianza tra tutte le coppie di variabili nel dataset, con anche la varianza sulla diagonale principale. Adesso cerchiamo di capirla meglio con un esempio relativo al famoso ‘iris dataset’.
Analizzando la matrice, emerge una tendenza di covarianza generalmente positiva tra le variabili: quando una variabile cresce tendenzialmente anche le altre aumentano. Tuttavia, la larghezza del sepalo (sepal width) mostra una covarianza negativa con tutte le altre features: al suo aumentare, le altre variabili tendono a diminuire e viceversa. Inoltre, la covarianza tra la larghezza e la lunghezza del sepalo è quasi nulla, suggerendo la possibilità che non ci sia una relazione tra le due variabili.

Pair plot

Il pairplot è uno strumento visivo che offre un’ampia panoramica della distribuzione dei campioni rispetto alle features di un dataset. Organizzato come una matrice di covarianza, presenta le features come righe e colonne, ma anziché mostrare la covarianza, ogni cella contiene un grafico che proietta i campioni nello spazio definito dalle due variabili (riga e colonna).
Per comprendere appieno l’interpretazione del pairplot, è consigliabile analizzarlo direttamente. Di seguito è presentato un esempio di pairplot. È possibile notare la presenza di tre tipi di grafici, ciascuno dei quali fornisce informazioni differenti:

  • Diagonale principale:
    Nella diagonale principale del pairplot, viene rappresentata la distribuzione dei dati per ciascuna variabile (riga e colonna). Questo ci permette di esaminare il numero di campioni che assumono ogni possibile valore della variabile.
    Attraverso questa visualizzazione, è possibile individuare le variabili che presentano una correlazione con la variabile target (le 3 classi in questo caso) e quindi individuare le features potenzialmente più utili al modello. Se per una specifica feature, le classi non sono sovrapposte, significa che in ciascuna di esse i valori assunti dalla feature sono diversi. Di conseguenza il modello, guardando al valore che la variabile assume in un singolo campione ha un’indicazione molto chiara su quella che è la sua classe di appartenenza.
    Un esempio di questo è rappresentato dalle variabili petal length e petal width, per ciascuna delle quali le aree di colore diverso sono ben distinte. Viceversa se in una variabile le classi sono sovrapposte, significa che i valori assunti sono simili indipendentemente dalla classe di appartenenza. Per il modello sarà quindi difficile capire come classificare un campione guardando ai valori tale feature. Nel nostro caso l’esempio è rappresentato dalle variabili sepal length e sepal width.
  • Triangolo superiore:
    Nel triangolo superiore del pairplot, vengono visualizzati i campioni in funzione delle variabili definite dalla riga e dalla colonna corrispondenti. Questo permette di analizzare la relazione tra le due features considerate. Ad esempio, concentrandoci sul grafico relativo a petal width e length (nell’ultima colonna e penultima riga), si osserva una forte relazione lineare positiva tra le due variabili. Questo suggerisce che quando una variabile aumenta, l’altra tende ad aumentare nello stesso modo. Di conseguenza, è possibile ipotizzare che una delle due variabili potrebbe essere scartata, poiché fornisce essenzialmente le stesse informazioni dell’altra.
    D’altra parte, considerando le variabili sepal width e length, si osserva una correlazione più debole tra di loro, suggerendo che contengono informazioni differenti.
    È importante notare che, nell’interpretare la relazione tra due variabili, è fondamentale considerare il comportamento complessivo di tutte le classi presenti nel dataset. Ad esempio, nel grafico relativo a sepal length e petal length (nella prima riga e nella terza colonna), mentre la classe blu suggerisce una mancanza di correlazione, le classi gialla e verde indicano una forte correlazione positiva. Pertanto, nel complesso, ci aspetteremmo una correlazione abbastanza elevata e positiva tra queste due variabili.
  • Triangolo inferiore:
    Analogamente alla matrice di covarianza, anche il pairplot è simmetrico rispetto alla diagonale principale. Pertanto, le informazioni presentate in questa sezione sono essenzialmente le stesse del triangolo superiore. Tuttavia, anziché utilizzare uno scatterplot, si adotta un Kernel Density Estimate plot (grafico di stima della densità del kernel).
    Questo tipo di grafico rappresenta la densità dei campioni nello spazio definito dalle due variabili della riga e della colonna. Le aree più dense di campioni sono rappresentate con colori più scuri, mentre quelle meno dense sono più chiare. Nei grafici di densità, è possibile condurre le stesse analisi effettuate nel triangolo superiore.

2. Analisi di correlazione

L’indice di correlazione è un valore che varia da -1 a 1 e misura la relazione tra due variabili. Un valore di -1 indica una relazione perfetta e negativa, mentre un valore di 1 indica una relazione perfetta e positiva. Quando il coefficiente è 0, significa che non c’è alcuna relazione tra le variabili e si dice che sono incorrelate. Questa analisi è di fondamentale importanza poiché durante la selezione delle features vogliamo includere nel modello variabili che contengono informazioni uniche e incorrelate.
Esaminando i coefficienti di correlazione tra tutte le coppie di features, siamo in grado di determinare se queste portano un valore aggiunto al modello o se le informazioni sono già presenti nelle altre variabili. Questa valutazione ci aiuta a identificare le features più pertinenti per l’analisi predittiva e a ridurre la complessità del modello.

In questa sezione, procederemo con dei test delle ipotesi, dando per scontati i concetti di test delle ipotesi e significatività dei risultati (p-value). Se non hai ancora familiarità con questi concetti, ti consigliamo di leggere questo articolo per una migliore comprensione prima di continuare.

In questo articolo, ci concentreremo sull’applicazione del coefficiente di correlazione più adatto a questo specifico dataset, poiché gli altri metodi possono essere utilizzati in modo analogo. Tuttavia, se desideri approfondire ulteriormente il tema e conoscere i test di correlazione più comuni e le loro differenze, ti invitiamo a leggere il seguente articolo.

Test normalità

Esistono diversi tipi di coefficienti di correlazione, ciascuno con requisiti specifici. Uno dei criteri più comuni riguarda la normalità delle features, dato che molti indici richiedono questo presupposto. Pertanto, prima di procedere con l’analisi della correlazione, è fondamentale valutare se le variabili sono distribuite in modo normale o meno. Questa verifica è necessaria per selezionare il coefficiente di correlazione più appropriato.

Nell’esempio sopra riportato, è stato condotto il test D’Agostino-Pearson per valutare la normalità delle variabili. Dalla tabella dei risultati, si osserva che solo sepal length e width seguono una distribuzione normale, anche se la significatività di sepal length è piuttosto bassa (con un p-value vicino a 0.05). Di conseguenza, poiché non tutte le variabili sono distribuite normalmente, verrà utilizzato il coefficiente di correlazione di Spearman, il quale non richiede l’assunzione di normalità delle variabili e si basa sull’ordine dei valori anziché sui loro valori esatti.

Test Spearman

L’analisi di correlazione conferma le osservazioni fatte durante l’analisi di covarianza: tutte le features presentano una correlazione positiva, caratterizzata da coefficienti abbastanza elevati. Tuttavia, si evidenzia un’eccezione per la sepal width, che risulta poco correlata alle altre variabili e presenta una correlazione negativa. Questo tipo di forte correlazione non è sempre auspicabile, poiché suggerisce che le variabili forniscono informazioni molto simili, il che può portare a una ridondanza di informazioni nel modello.
Osservando i valori di p-value nella matrice sottostante, si può constatare che i coefficienti di correlazione sono altamente significativi, poiché tutti i valori di p-value sono notevolmente inferiori a 0,05.
Di conseguenza, si può mantendere petal length o width dato che sono considerate con un’elevata capacità predittiva (dato il coefficiente di correlazione con la specie è pari a 0,94), tuttavia, poiché queste due variabili sono altamente correlate, una delle due va scartata.
D’altra parte, le variabili sepal length e width si mantengono, in quanto risultano essere incorrelate tra di loro e presentano una correlazione inferiore con le altre variabili.

3. Recursive Feature Elimination

Il Recursive Feature Elimination (RFE) è una tecnica di selezione delle features che opera ricorsivamente, eliminando progressivamente le features meno rilevanti dal dataset fino a quando viene raggiunto un criterio di stop specificato, ad esempio un numero prefissato di features da mantenere.
Il processo inizia addestrando un modello su tutte le features disponibili e quindi valutando l’importanza di ciascuna feature. Le features meno importanti vengono eliminate e il modello viene nuovamente addestrato sul subset residuo di features. Questo procedimento viene ripetuto iterativamente fino a quando viene raggiunto il numero desiderato di features o fino a quando non si verifica alcun miglioramento nelle prestazioni del modello.
Il codice riportato mostra, a titolo esemplificativo, l’esecuzione dell’algoritmo in diverse occasioni, con un differente numero di features da mantenere.
Come si può osservare dal grafico, si giunge agli stessi risultati dell’analisi precedente: vengono conservate tutte le features ad eccezione di petal length o width. Queste due variabili risultano altamente correlate e includerle entrambe o anche una sola non contribuisce a migliorare le prestazioni del modello, poiché forniscono informazioni sostanzialmente simili.

4. PCA

La PCA (Principal Component Analysis) è una tecnica di riduzione della dimensionalità dei dati che si basa sul principio che l’informazione contenuta nelle variabili di un dataset è proporzionale alla loro varianza. In altre parole, la PCA cerca di massimizzare la varianza dei dati proiettandoli su nuovi assi ortogonali tra loro, chiamati componenti principali. Questo perché le direzioni dei massimi cambiamenti nei dati sono considerate le direzioni che contengono maggiori informazioni. Vuoi capire meglio il motivo? Abbiamo un articolo apposta. Durante il processo di riduzione della dimensionalità, le features con maggiore varianza saranno considerate più informative e avranno un maggiore impatto nella definizione delle componenti principali.
Così facendo, i primi componenti ottenuti dalla PCA avranno una varianza elevata e conterranno una quantità significativa di informazioni, mentre gli ultimi componenti avranno una varianza limitata e potrebbero essere influenzati da rumore o variazioni non significative nei dati. Pertanto, eliminare questi ultimi componenti non comporterebbe una significativa perdita di informazioni utili.
Dal grafico presentato, è evidente che la maggior parte della varianza è concentrata nei primi 3 componenti, mentre l’ultimo componente contiene solo lo 0,05% della varianza totale. Di conseguenza, eliminare l’ultimo componente non comprometterebbe in modo significativo la capacità del modello di catturare le caratteristiche più rilevanti del dataset.

È importante notare che la Principal Component Analysis (PCA) è data-dependent, il che significa che dipende esclusivamente dai dati utilizzati durante il processo di analisi. Ciò implica che le componenti principali estratte e la loro varianza associata sono specifiche al dataset su cui viene applicata la PCA. In altre parole, la PCA non fa ipotesi riguardo alla struttura dei dati o alla distribuzione delle variabili prima dell’analisi; si adatta e si basa unicamente sui dati forniti.
Questa caratteristica rende la PCA una tecnica flessibile e adatta a una vasta gamma di dataset, senza richiedere ipotesi rigide sulla loro natura. Tuttavia, è importante sottolineare che, in questo processo, le componenti principali perdono il significato fisico originario delle features. Inoltre, non è possibile confrontare direttamente le componenti principali ottenute da diversi dataset, poiché rappresentano concetti diversi. Ad esempio, sarebbe simile a confrontare litri e metri cubi: entrambi misurano il volume, ma in unità di misura differenti.
Se non sei soddisfatto di questa spiegazione e desideri approfondire la PCA, abbiamo l’articolo perfetto per te!

Scarica il Notebook Completo

📎 feature_selection


Resta sempre aggiornato