Selezione delle Caratteristiche
Quando si lavora con molte caratteristiche, spesso non si sa quali siano rilevanti. È possibile addestrare un modello con tutte le caratteristiche, verificare quali non sono utili e poi riaddestrare utilizzando solo quelle più incisive.
Perché rimuovere le caratteristiche dal modello?
Aggiungere una caratteristica non correlata al target introduce rumore e peggiora le previsioni. Molte caratteristiche inutili accumulano rumore e riducono ulteriormente la qualità del modello.
Come capire se le caratteristiche sono buone o cattive?
Per valutare se le caratteristiche influenzano significativamente il target, è possibile calcolare i p-value per ciascuna caratteristica. Un p-value basso suggerisce che la caratteristica è statisticamente significativa.
1234567891011121314151617import pandas as pd from sklearn.feature_selection import f_regression file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) X, y = df[['Father', 'Mother']], df['Height'] # f_regression returns F-statistic and p-values f_stat, p_values = f_regression(X, y) # Create a DataFrame to view results nicely results = pd.DataFrame({ 'Feature': X.columns, 'p_value': p_values }) print(results)
In sintesi, più basso è il p-value, maggiore è la fiducia che la caratteristica sia influente. Tipicamente, un p-value inferiore a 0,05 è considerato statisticamente significativo.
Nell'esempio sopra:
Father: (estremamente piccolo, altamente significativo)Mother: (molto piccolo, altamente significativo)
Entrambe le caratteristiche sono buoni predittori per il target.
In statistica, si stabilisce un livello di significatività, solitamente 0,05. Se il p-value di una caratteristica supera questa soglia, viene considerata non influente.
In pratica, valori p leggermente superiori a 0,05 possono comunque essere utili al modello. È più sicuro testare il modello con e senza tale caratteristica. Tuttavia, se il valore p è molto alto (>0,4), è possibile rimuoverlo con sicurezza.
Il valore p varia da 0 a 1, quindi quando si parla di valore p basso si intende inferiore a 0,05 e valore p alto solitamente significa superiore a 0,3-0,5.
Nel nostro esempio, abbiamo ottenuto valori p per l'altezza della madre e la costante pari a 0,087 e 0,051. Se rimuoviamo le caratteristiche con valore p > 0,05, otterremo il risultato seguente (a sinistra).
Anche visivamente, possiamo notare che il modello con la costante (a destra) è migliore, quindi è preferibile non rimuoverla dal modello.
I dataset di piccole dimensioni spesso producono p-value più alti (0,05–0,2) anche per caratteristiche significative. I p-value riflettono la confidenza: con più dati, diventa più facile distinguere le caratteristiche realmente influenti da quelle rumorose.
Come rimuovere le caratteristiche non rilevanti?
È sufficiente eliminare la colonna relativa alla caratteristica da X_tilde. Questo può essere fatto utilizzando il seguente codice:
X_tilde = X_tilde.drop(___, axis=1)
Ad esempio, per eliminare le colonne 'const' e 'Mother' si utilizza:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Successivamente, creare un nuovo oggetto OLS utilizzando X_tilde aggiornato:
regression_model=sm.OLS(y, X_tilde)
1. Quali delle seguenti variabili dovresti MANTENERE?
2. Scegli l'affermazione ERRATA.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Fantastico!
Completion tasso migliorato a 3.33
Selezione delle Caratteristiche
Scorri per mostrare il menu
Quando si lavora con molte caratteristiche, spesso non si sa quali siano rilevanti. È possibile addestrare un modello con tutte le caratteristiche, verificare quali non sono utili e poi riaddestrare utilizzando solo quelle più incisive.
Perché rimuovere le caratteristiche dal modello?
Aggiungere una caratteristica non correlata al target introduce rumore e peggiora le previsioni. Molte caratteristiche inutili accumulano rumore e riducono ulteriormente la qualità del modello.
Come capire se le caratteristiche sono buone o cattive?
Per valutare se le caratteristiche influenzano significativamente il target, è possibile calcolare i p-value per ciascuna caratteristica. Un p-value basso suggerisce che la caratteristica è statisticamente significativa.
1234567891011121314151617import pandas as pd from sklearn.feature_selection import f_regression file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) X, y = df[['Father', 'Mother']], df['Height'] # f_regression returns F-statistic and p-values f_stat, p_values = f_regression(X, y) # Create a DataFrame to view results nicely results = pd.DataFrame({ 'Feature': X.columns, 'p_value': p_values }) print(results)
In sintesi, più basso è il p-value, maggiore è la fiducia che la caratteristica sia influente. Tipicamente, un p-value inferiore a 0,05 è considerato statisticamente significativo.
Nell'esempio sopra:
Father: (estremamente piccolo, altamente significativo)Mother: (molto piccolo, altamente significativo)
Entrambe le caratteristiche sono buoni predittori per il target.
In statistica, si stabilisce un livello di significatività, solitamente 0,05. Se il p-value di una caratteristica supera questa soglia, viene considerata non influente.
In pratica, valori p leggermente superiori a 0,05 possono comunque essere utili al modello. È più sicuro testare il modello con e senza tale caratteristica. Tuttavia, se il valore p è molto alto (>0,4), è possibile rimuoverlo con sicurezza.
Il valore p varia da 0 a 1, quindi quando si parla di valore p basso si intende inferiore a 0,05 e valore p alto solitamente significa superiore a 0,3-0,5.
Nel nostro esempio, abbiamo ottenuto valori p per l'altezza della madre e la costante pari a 0,087 e 0,051. Se rimuoviamo le caratteristiche con valore p > 0,05, otterremo il risultato seguente (a sinistra).
Anche visivamente, possiamo notare che il modello con la costante (a destra) è migliore, quindi è preferibile non rimuoverla dal modello.
I dataset di piccole dimensioni spesso producono p-value più alti (0,05–0,2) anche per caratteristiche significative. I p-value riflettono la confidenza: con più dati, diventa più facile distinguere le caratteristiche realmente influenti da quelle rumorose.
Come rimuovere le caratteristiche non rilevanti?
È sufficiente eliminare la colonna relativa alla caratteristica da X_tilde. Questo può essere fatto utilizzando il seguente codice:
X_tilde = X_tilde.drop(___, axis=1)
Ad esempio, per eliminare le colonne 'const' e 'Mother' si utilizza:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Successivamente, creare un nuovo oggetto OLS utilizzando X_tilde aggiornato:
regression_model=sm.OLS(y, X_tilde)
1. Quali delle seguenti variabili dovresti MANTENERE?
2. Scegli l'affermazione ERRATA.
Grazie per i tuoi commenti!