FeatureSelection

class cefeste.selection.FeatureSelection(db, feat_to_check=None, target_col=None, algo_type='auto', sample_col=None, sample_train_value=None, min_unique_val=3, max_pct_missing=0.9, max_pct_mfv=0.95, max_psi=0.2, psi_nbins=20, psi_bin_min_pct=0.02, explanatory_threshold=0.05, correlation_threshold=0.95, selection_rule='random', vif_threshold=5, collinear_optimize=False, return_selection_history=True, dim_cat_threshold=10, random_state=42, verbose=True)

Classe utilizzata per implementare tecniche di selezione delle feature.

Questa classe estende la classe FeatureAnalysis per fornire una pipeline configurabile per la selezione delle feature. Applica una serie di filtri univariati e multivariati per identificare e rimuovere le feature che non rispettano vari criteri di selezione.

Filtri Applicati:
  • Constant Features:

    Identifica e rimuove le feature che presentano un unico valore costante in tutto il dataset (o nel set di training). Parametri rilevanti: Nessuno specifico, agisce sulla natura della feature.

  • Missing Features:

    Identifica e rimuove le feature che superano una soglia definita di valori mancanti. Parametri rilevanti: max_pct_missing (default 0.9).

  • Highly Concentrated Features:

    Identifica e rimuove le feature in cui un singolo valore (il più frequente) supera una certa percentuale del totale delle osservazioni. Parametri rilevanti: max_pct_mfv (default 0.95).

  • Low Values Features:

    Identifica e rimuove le feature che hanno un numero di valori unici inferiore a una soglia specificata. Utile per rimuovere feature quasi costanti o con cardinalità troppo bassa per essere informative. Parametri rilevanti: min_unique_val (default 3).

  • Unstable Features (PSI):

    Identifica e rimuove le feature la cui distribuzione cambia significativamente tra diversi campioni di dati (es. training vs. test, o periodi temporali diversi), utilizzando il Population Stability Index (PSI). Richiede la definizione di sample_col. Parametri rilevanti: max_psi (default 0.2), psi_nbins (default 20), psi_bin_min_pct (default 0.02).

  • Unexplanatory Features:

    Identifica e rimuove le feature che mostrano un basso potere esplicativo nei confronti della variabile target. La metrica di valutazione dipende da algo_type (AUC per classificazione, R-squared per regressione). Richiede la definizione di target_col. Parametri rilevanti: explanatory_threshold (default 0.05), algo_type (default “auto”), dim_cat_threshold (default 10).

  • Correlated Features:

    Identifica e rimuove le feature che sono altamente correlate con altre feature. Tra una coppia di feature correlate, una viene rimossa in base a selection_rule (es. casualmente, o quella con potere esplicativo sul target minore). Parametri rilevanti: correlation_threshold (default 0.95), selection_rule (default “random”), random_state (default 42).

  • Collinear Features (VIF):

    Identifica e rimuove le feature numeriche che sono linearmente dipendenti da altre feature numeriche, utilizzando il Variance Inflation Factor (VIF). Aiuta a mitigare problemi di multicollinearità. Parametri rilevanti: vif_threshold (default 5), collinear_optimize (default False).

La classe tiene traccia delle feature rimosse e del motivo della rimozione, fornendo report dettagliati.

Methods

__init__

Inizializza l'oggetto FeatureSelection con dati e parametri di configurazione.

eda

Genera un'analisi esplorativa dei dati (EDA) di base.

find_collinear_feature_optimized

Esegue solo il filtro per le feature collineari (basato su VIF).

find_constant_features

Esegue solo il filtro per le feature costanti.

find_correlated_features

Esegue solo il filtro per le feature altamente correlate.

find_high_topcat_features

Esegue solo il filtro per le feature altamente concentrate.

find_low_nvalues_features

Esegue solo il filtro per le feature con un basso numero di valori unici.

find_missing_features

Esegue solo il filtro per le feature con troppi valori mancanti.

find_not_explanatory

Esegue solo il filtro per le feature non esplicative rispetto al target.

find_unstable_psi_features

Esegue solo il filtro per le feature instabili (basato su PSI).

get_X_original

Restituisce il DataFrame originale contenente solo le feature inizialmente considerate.

get_X_reduced

Restituisce il DataFrame contenente solo le feature finali selezionate.

get_db_filtered

Restituisce il DataFrame originale senza le feature eliminate.

get_params

Restituisce il valore di uno o più attributi della classe.

make_funnel

Restituisce un DataFrame che riassume il funnel di selezione delle feature.

make_report

Genera un report completo che dettaglia lo stato di ogni feature.

run

Esegue la pipeline di selezione delle feature in base ai filtri e ai parametri configurati.

set_params

Imposta il valore di uno o più attributi della classe.