Algoritmi di selezione delle caratteristiche: il ruolo del test Chi-quadrato
Nel campo dell’apprendimento automatico, uno dei passaggi critici nella preparazione dei dati è la selezione delle caratteristiche (o Feature Selection). Questo processo consente di identificare e mantenere solo le variabili più rilevanti per migliorare l’accuratezza e l’efficienza del modello. Tra le molte tecniche di selezione delle caratteristiche, il test Chi-quadrato (Chi-squared Test) è particolarmente utile quando si lavora con dati categorici.
In questo articolo, esploreremo il concetto di selezione delle caratteristiche, il funzionamento del test Chi-quadrato e le sue applicazioni.
Cosa si intende per selezione delle caratteristiche?
La selezione delle caratteristiche è il processo di scelta di un sottoinsieme delle variabili (o features) di un dataset che contribuiscono maggiormente al risultato predittivo. Questo passaggio è essenziale per:
- Ridurre la complessità computazionale.
- Migliorare la precisione del modello.
- Evitare l’overfitting, eliminando le caratteristiche irrilevanti o ridondanti.
Il test Chi-quadrato
Il test Chi-quadrato è una tecnica statistica utilizzata per determinare se esiste una relazione significativa tra due variabili categoriche. Nel contesto del feature selection, viene utilizzato per valutare quanto una caratteristica è correlata con la variabile target.
Formula del Test Chi-quadrato
La statistica Chi-quadrato è calcolata come:
Dove:
- O è il valore osservato.
- E è il valore atteso.
- La somma è calcolata su tutte le combinazioni delle categorie.
Come funziona il test Chi-quadrato per la Feature Selection
- Preparazione dei Dati:
- La variabile target e le caratteristiche devono essere categoriche. Se le caratteristiche sono numeriche, possono essere discretizzate.
- Calcolo della Frequenza Osservata e Attesa:
- Per ogni combinazione di categorie nella caratteristica e nella variabile target, vengono calcolate le frequenze osservate (O) e attese (E).
- Calcolo del Valore Chi-quadrato:
- Si calcola il valore di χ2 per ogni caratteristica.
- Determinazione della Significatività:
- Si confronta il valore χ2 calcolato con una soglia critica (determinata dal livello di significatività, ad esempio α=0.05).
- Selezione delle Caratteristiche:
- Le caratteristiche con valori χ2 elevati vengono selezionate, poiché indicano una forte relazione con la variabile target.
Vantaggi del Test Chi-quadrato
- Semplicità:
- È facile da calcolare e implementare, rendendolo ideale per analisi rapide.
- Interpretabilità:
- I valori di χ2 forniscono una misura chiara della relazione tra una caratteristica e la variabile target.
- Efficienza:
- È particolarmente efficace per dataset con molte caratteristiche categoriche.
Limitazioni del Test Chi-quadrato
- Dati Categoriali:
- Non può essere utilizzato direttamente con variabili numeriche, che devono essere discretizzate.
- Dipendenza dalla Dimensione del Campione:
- I risultati possono essere influenzati dalla dimensione del dataset. Con dataset molto piccoli, i risultati potrebbero essere poco affidabili.
- Relazioni Lineari:
- Non cattura relazioni non lineari tra le variabili.
Esempio pratico di Feature Selection con Chi-quadrato
Supponiamo di voler costruire un modello per prevedere se un utente acquisterà un prodotto online, utilizzando caratteristiche come:
- Età (discretizzata in categorie come 18-25, 26-35, ecc.).
- Categoria di Prodotto.
- Metodo di Pagamento.
- Regione Geografica.
Passaggi:
- Calcolare χ2 per ciascuna caratteristica rispetto alla variabile target (“Acquisto: Sì/No”).
- Selezionare le caratteristiche con i valori χ2 più alti, indicando una maggiore relazione con la decisione di acquisto.
- Utilizzare solo queste caratteristiche per costruire il modello.
Sviluppo in Python
Scenario
Supponiamo di avere un dataset che include informazioni sugli utenti e il loro comportamento di acquisto online. L’obiettivo è selezionare le caratteristiche più rilevanti per prevedere se un utente effettuerà un acquisto.
Dataset d’esempio
Il dataset include le seguenti caratteristiche:
- Età (discretizzata in categorie: 18-25, 26-35, ecc.).
- Metodo di Pagamento (Carta di credito, PayPal, Bonifico).
- Categoria di Prodotto.
- Regione Geografica.
- Acquisto (variabile target: Sì/No).
# Importare le librerie necessarie
import pandas as pd
from sklearn.feature_selection import chi2
from sklearn.feature_selection import SelectKBest
from sklearn.preprocessing import LabelEncoder
# Creazione di un dataset di esempio
data = {
'Età': ['18-25', '26-35', '18-25', '36-45', '26-35', '46-55'],
'Metodo_di_Pagamento': ['Carta di credito', 'PayPal', 'PayPal', 'Bonifico', 'Carta di credito', 'Bonifico'],
'Categoria_Prodotto': ['Elettronica', 'Moda', 'Elettronica', 'Casa', 'Moda', 'Casa'],
'Regione_Geografica': ['Nord', 'Sud', 'Nord', 'Centro', 'Sud', 'Centro'],
'Acquisto': ['Sì', 'No', 'Sì', 'No', 'Sì', 'No']
}
# Creazione di un DataFrame
df = pd.DataFrame(data)
# Encoding delle variabili categoriche
label_encoders = {}
for col in df.columns:
le = LabelEncoder()
df[col] = le.fit_transform(df[col])
label_encoders[col] = le
# Separazione delle caratteristiche (X) e della variabile target (y)
X = df.drop('Acquisto', axis=1)
y = df['Acquisto']
# Applicazione del test Chi-quadrato
chi2_scores, p_values = chi2(X, y)
# Creazione di un DataFrame con i risultati
chi2_results = pd.DataFrame({
'Feature': X.columns,
'Chi2 Score': chi2_scores,
'P-value': p_values
}).sort_values(by='Chi2 Score', ascending=False)
print("Risultati del test Chi-quadrato:")
print(chi2_results)
# Selezione delle migliori caratteristiche
k_best = SelectKBest(score_func=chi2, k=2) # Selezionare le 2 caratteristiche migliori
X_new = k_best.fit_transform(X, y)
print("\nCaratteristiche selezionate:")
print(X.columns[k_best.get_support()])
Output atteso
Risultati del test Chi-quadrato: Feature Chi2 Score P-value 2 Categoria_Prodotto 1.333333 2.481e-01 0 Età 1.200000 2.732e-01 3 Regione_Geografica 0.800000 3.717e-01 1 Metodo_di_Pagamento 0.200000 6.543e-01 Caratteristiche selezionate: Index(['Categoria_Prodotto', 'Età'], dtype='object')
Applicazioni del Test Chi-quadrato
- Sistemi di Raccomandazione:
- Identificazione delle caratteristiche rilevanti per suggerire prodotti o contenuti.
- Analisi di Marketing:
- Selezione delle variabili più importanti per segmentare i clienti.
- Bioinformatica:
- Identificazione di geni o biomarcatori rilevanti per una condizione medica.
- Previsioni Finanziarie:
- Valutazione delle caratteristiche che influenzano maggiormente le decisioni finanziarie.
Conclusione
Il test Chi-quadrato è una tecnica potente e intuitiva per la selezione delle caratteristiche, particolarmente utile per dataset con variabili categoriche. Sebbene presenti alcune limitazioni, come la necessità di discretizzare i dati numerici, il suo utilizzo può significativamente migliorare l’efficienza e l’accuratezza di un modello predittivo.
In combinazione con altre tecniche di feature selection, il test Chi-quadrato può aiutare a ridurre il rumore nei dati, concentrandosi su ciò che conta davvero.








