Scelta delle Variabili
In molti compiti, potresti avere numerose variabili di input di cui non conosci l'utilità. Fortunatamente, è possibile addestrare un modello utilizzando tutte queste variabili, osservare quali non hanno impatto significativo e successivamente riaddestrare il modello includendo solo quelle rilevanti.
Perché rimuovere variabili dal modello?
Se si aggiunge una variabile al modello che non ha alcuna relazione con il target, questa introdurrà rumore, peggiorando la previsione. Quando sono presenti molte variabili inutili, il rumore si accumula, causando un peggioramento progressivo delle prestazioni del modello.
Come determinare se le variabili sono utili o meno?
Come già noto, durante l'addestramento, la classe OLS calcola anche informazioni statistiche. Tra le varie analisi, viene eseguito un t-test per determinare se ciascuna variabile ha un impatto significativo sul target. I risultati di questo test sono disponibili nella tabella summary()
come mostrato di seguito:
123456789import pandas as pd import statsmodels.api as sm 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) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
Ciò che ci interessa è il valore p per ciascuna caratteristica.
In breve, più basso è il valore p, maggiore è la fiducia che la caratteristica sia influente.
In statistica, è necessario stabilire la soglia del p-value, chiamata livello di significatività. Solitamente viene fissata a 0,05 e, una volta che il p-value supera tale livello di significatività, si considera che la caratteristica non abbia impatto.
Tuttavia, nella pratica, caratteristiche con un p-value leggermente superiore a 0,05 spesso migliorano comunque il modello. Pertanto, è preferibile testare il modello con e senza quella caratteristica invece di rimuoverla immediatamente, a meno che il p-value non sia davvero elevato (>0,4). In tal caso, è possibile rimuovere la caratteristica in modo sicuro.
Il p-value varia da 0 a 1, quindi quando si parla di p-value basso si intende inferiore a 0,05, mentre un p-value alto solitamente significa superiore a 0,3-0,5.
Nel nostro esempio, abbiamo ottenuto p-value per l'altezza della madre e la costante pari a 0,087 e 0,051. Se rimuoviamo le variabili con un p-value > 0,05, otterremo il risultato mostrato di seguito (a sinistra).
Anche visivamente, possiamo notare che il modello con la costante (a destra) è migliore, quindi è preferibile non rimuoverla dal modello.
È normale ottenere p-value relativamente alti (da 0,05 a 0,2) per variabili influenti quando il dataset è piccolo. Il p-value indica la fiducia che la variabile sia influente, ed è naturale che più dati abbiamo, più è facile distinguere le variabili influenti da quelle non rilevanti.
Supponiamo che tu abbia dati che mostrano che 9/10 delle persone alte che conosci mangiano mele ogni giorno. Puoi esserne certo che sia correlato? Ma se fossero 9000/10000? Questo ti renderebbe più sicuro.
Come rimuovere le feature indesiderate?
È sufficiente eliminare la colonna relativa alla feature 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 il 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
Awesome!
Completion rate improved to 5.26
Scelta delle Variabili
Scorri per mostrare il menu
In molti compiti, potresti avere numerose variabili di input di cui non conosci l'utilità. Fortunatamente, è possibile addestrare un modello utilizzando tutte queste variabili, osservare quali non hanno impatto significativo e successivamente riaddestrare il modello includendo solo quelle rilevanti.
Perché rimuovere variabili dal modello?
Se si aggiunge una variabile al modello che non ha alcuna relazione con il target, questa introdurrà rumore, peggiorando la previsione. Quando sono presenti molte variabili inutili, il rumore si accumula, causando un peggioramento progressivo delle prestazioni del modello.
Come determinare se le variabili sono utili o meno?
Come già noto, durante l'addestramento, la classe OLS calcola anche informazioni statistiche. Tra le varie analisi, viene eseguito un t-test per determinare se ciascuna variabile ha un impatto significativo sul target. I risultati di questo test sono disponibili nella tabella summary()
come mostrato di seguito:
123456789import pandas as pd import statsmodels.api as sm 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) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
Ciò che ci interessa è il valore p per ciascuna caratteristica.
In breve, più basso è il valore p, maggiore è la fiducia che la caratteristica sia influente.
In statistica, è necessario stabilire la soglia del p-value, chiamata livello di significatività. Solitamente viene fissata a 0,05 e, una volta che il p-value supera tale livello di significatività, si considera che la caratteristica non abbia impatto.
Tuttavia, nella pratica, caratteristiche con un p-value leggermente superiore a 0,05 spesso migliorano comunque il modello. Pertanto, è preferibile testare il modello con e senza quella caratteristica invece di rimuoverla immediatamente, a meno che il p-value non sia davvero elevato (>0,4). In tal caso, è possibile rimuovere la caratteristica in modo sicuro.
Il p-value varia da 0 a 1, quindi quando si parla di p-value basso si intende inferiore a 0,05, mentre un p-value alto solitamente significa superiore a 0,3-0,5.
Nel nostro esempio, abbiamo ottenuto p-value per l'altezza della madre e la costante pari a 0,087 e 0,051. Se rimuoviamo le variabili con un p-value > 0,05, otterremo il risultato mostrato di seguito (a sinistra).
Anche visivamente, possiamo notare che il modello con la costante (a destra) è migliore, quindi è preferibile non rimuoverla dal modello.
È normale ottenere p-value relativamente alti (da 0,05 a 0,2) per variabili influenti quando il dataset è piccolo. Il p-value indica la fiducia che la variabile sia influente, ed è naturale che più dati abbiamo, più è facile distinguere le variabili influenti da quelle non rilevanti.
Supponiamo che tu abbia dati che mostrano che 9/10 delle persone alte che conosci mangiano mele ogni giorno. Puoi esserne certo che sia correlato? Ma se fossero 9000/10000? Questo ti renderebbe più sicuro.
Come rimuovere le feature indesiderate?
È sufficiente eliminare la colonna relativa alla feature 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 il 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!