Scelta delle Variabili
Scorri per mostrare il menu
Quando si lavora con molte caratteristiche, spesso non si sa quali siano rilevanti. È possibile addestrare un modello con tutte, verificare quali caratteristiche 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 feature sono buone o cattive?
OLS fornisce test statistici durante l'addestramento. Ogni feature riceve un risultato del t-test, mostrato nella tabella summary(), che indica se influisce in modo significativo sul target.
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
Quello che ci interessa è il p-value per ciascuna feature.
In breve, più basso è il valore p, maggiore è la fiducia che la caratteristica sia significativa
In statistica, si stabilisce un livello di significatività, solitamente pari a 0,05. Se il p-value di una caratteristica supera questa soglia, viene considerata non influente.
Nella pratica, p-value leggermente superiori a 0,05 possono comunque contribuire al modello. È consigliabile testare il modello sia con che senza tale caratteristica. Tuttavia, se il p-value è molto alto (>0,4), si può rimuovere con sicurezza.
Il p-value varia da 0 a 1, quindi quando si parla di p-value basso si intende inferiore a 0,05, mentre 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 caratteristiche con un p-value > 0,05, otterremo il risultato qui sotto (a sinistra).
Anche visivamente, possiamo notare che il modello con la costante (a destra) è migliore, quindi è preferibile non rimuoverla dal modello.
I piccoli dataset spesso producono p-value più alti (0,05–0,2) anche per caratteristiche significative. I p-value riflettono il livello di confidenza: con più dati, diventa più facile distinguere le caratteristiche realmente influenti da quelle rumorose.
Come rimuovere le caratteristiche non valide?
È sufficiente rimuovere 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)
E poi crea un nuovo oggetto OLS utilizzando il nuovo X_tilde:
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