Valg af Funktioner
Stryg for at vise menuen
Når du arbejder med mange features, ved du ofte ikke, hvilke der er vigtige. Du kan træne en model med dem alle, undersøge hvilke features der ikke er nyttige, og derefter genoptræne ved kun at bruge de betydningsfulde.
Hvorfor fjerne features fra modellen?
Hvis du tilføjer en feature, der ikke er relateret til målet, tilføres der støj, hvilket forværrer forudsigelserne. Mange unyttige features ophober støj og reducerer modellens kvalitet yderligere.
Hvordan ved man, om funktionerne er gode eller dårlige?
OLS giver statistiske tests under træningen. Hver funktion får et t-test resultat, vist i summary()-tabellen, som indikerer, om den har en signifikant effekt på målet.
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
Det, vi er interesserede i, er p-værdien for hver funktion.
Kort sagt, jo lavere p-værdi, desto større tillid til at egenskaben har betydning
Inden for statistik fastsættes et signifikansniveau, typisk 0,05. Hvis en egenskabs p-værdi overstiger denne grænse, anses den for ikke at have væsentlig indflydelse.
I praksis kan lidt højere p-værdier (lige over 0,05) stadig bidrage til modellen. Det er sikrere at teste modellen både med og uden en sådan egenskab. Men hvis p-værdien er meget høj (>0,4), kan den fjernes med sikkerhed.
p-værdi varierer fra 0 til 1, så når vi taler om lav p-værdi, mener vi mindre end 0,05, og høj p-værdi betyder normalt større end 0,3-0,5.
I vores eksempel fik vi p-værdier for Mother's height og konstant på henholdsvis 0,087 og 0,051. Hvis vi fjerner funktioner med en p-værdi > 0,05, får vi resultatet nedenfor (til venstre).
Selv visuelt kan vi se, at modellen med konstant (til højre) er bedre, så det er bedre ikke at fjerne den fra modellen.
Små datasæt giver ofte højere p-værdier (0,05–0,2) selv for meningsfulde features. P-værdier afspejler sikkerhed: med flere data bliver det lettere at skelne mellem virkelig betydningsfulde features og støjende.
Hvordan fjerner man dårlige features?
Du skal blot fjerne kolonnen, der er relateret til featuret, fra X_tilde. Dette kan gøres med følgende kode:
X_tilde = X_tilde.drop(___, axis=1)
For eksempel, for at fjerne kolonnerne 'const' og 'Mother', kan du bruge:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Og derefter opret en ny OLS-objekt ved at bruge det opdaterede X_tilde:
regression_model=sm.OLS(y, X_tilde)
1. Hvilke af funktionerne bør du BEHOLDE?
2. Vælg den FORKERTE påstand.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat