Välja Funktionerna
Svep för att visa menyn
När du arbetar med många funktioner vet du ofta inte vilka som är viktiga. Du kan träna en modell med alla, kontrollera vilka funktioner som är oanvändbara och sedan träna om modellen med endast de betydelsefulla.
Varför ta bort funktioner från modellen?
Att lägga till en funktion som inte är relaterad till målet introducerar brus och försämrar förutsägelserna. Många värdelösa funktioner staplar brus och minskar modellens kvalitet ytterligare.
Hur vet man om funktionerna är bra eller dåliga?
OLS tillhandahåller statistiska tester under träningen. Varje funktion får ett t-testresultat, som visas i tabellen summary(), vilket indikerar om den har en signifikant påverkan 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 är intresserade av är p-värdet för varje funktion.
Kort sagt, ju lägre p-värde desto högre tillförlitlighet att variabeln har betydelse
Inom statistiken sätter vi en signifikansnivå, vanligtvis 0,05. Om ett attributs p-värde överstiger denna tröskel anses det inte vara betydelsefullt.
I praktiken kan något högre p-värden (strax över 0,05) fortfarande bidra till modellen. Det är säkrare att testa modellen både med och utan ett sådant attribut. Men om p-värdet är mycket högt (>0,4) kan det tas bort med gott samvete.
p-värdet varierar mellan 0 och 1, så när vi talar om lågt p-värde menar vi mindre än 0,05 och högt p-värde betyder vanligtvis större än 0,3-0,5.
I vårt exempel fick vi p-värden för Mother's height och konstanten 0,087 respektive 0,051. Om vi tar bort variabler med ett p-värde > 0,05 får vi resultatet nedan (till vänster).
Även visuellt kan vi se att modellen med konstant (till höger) är bättre, så det är bättre att inte ta bort den från modellen.
Små dataset ger ofta högre p-värden (0,05–0,2) även för betydelsefulla variabler. P-värden återspeglar säkerhet: med mer data blir det lättare att särskilja verkligt betydelsefulla variabler från brusiga.
Hur tar man bort dåliga variabler?
Ta helt enkelt bort kolumnen som är kopplad till variabeln från X_tilde. Detta kan göras med följande kod:
X_tilde = X_tilde.drop(___, axis=1)
Till exempel, för att ta bort kolumnerna 'const' och 'Mother' används:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Och skapa sedan ett nytt OLS-objekt med den uppdaterade X_tilde:
regression_model=sm.OLS(y, X_tilde)
1. Vilka av funktionerna bör du BEHÅLLA?
2. Välj det FELAKTIGA påståendet.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Välja Funktionerna
När du arbetar med många funktioner vet du ofta inte vilka som är viktiga. Du kan träna en modell med alla, kontrollera vilka funktioner som är oanvändbara och sedan träna om modellen med endast de betydelsefulla.
Varför ta bort funktioner från modellen?
Att lägga till en funktion som inte är relaterad till målet introducerar brus och försämrar förutsägelserna. Många värdelösa funktioner staplar brus och minskar modellens kvalitet ytterligare.
Hur vet man om funktionerna är bra eller dåliga?
OLS tillhandahåller statistiska tester under träningen. Varje funktion får ett t-testresultat, som visas i tabellen summary(), vilket indikerar om den har en signifikant påverkan 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 är intresserade av är p-värdet för varje funktion.
Kort sagt, ju lägre p-värde desto högre tillförlitlighet att variabeln har betydelse
Inom statistiken sätter vi en signifikansnivå, vanligtvis 0,05. Om ett attributs p-värde överstiger denna tröskel anses det inte vara betydelsefullt.
I praktiken kan något högre p-värden (strax över 0,05) fortfarande bidra till modellen. Det är säkrare att testa modellen både med och utan ett sådant attribut. Men om p-värdet är mycket högt (>0,4) kan det tas bort med gott samvete.
p-värdet varierar mellan 0 och 1, så när vi talar om lågt p-värde menar vi mindre än 0,05 och högt p-värde betyder vanligtvis större än 0,3-0,5.
I vårt exempel fick vi p-värden för Mother's height och konstanten 0,087 respektive 0,051. Om vi tar bort variabler med ett p-värde > 0,05 får vi resultatet nedan (till vänster).
Även visuellt kan vi se att modellen med konstant (till höger) är bättre, så det är bättre att inte ta bort den från modellen.
Små dataset ger ofta högre p-värden (0,05–0,2) även för betydelsefulla variabler. P-värden återspeglar säkerhet: med mer data blir det lättare att särskilja verkligt betydelsefulla variabler från brusiga.
Hur tar man bort dåliga variabler?
Ta helt enkelt bort kolumnen som är kopplad till variabeln från X_tilde. Detta kan göras med följande kod:
X_tilde = X_tilde.drop(___, axis=1)
Till exempel, för att ta bort kolumnerna 'const' och 'Mother' används:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Och skapa sedan ett nytt OLS-objekt med den uppdaterade X_tilde:
regression_model=sm.OLS(y, X_tilde)
Tack för dina kommentarer!