Välja Funktionerna
När du arbetar med många egenskaper vet du ofta inte vilka som är viktiga. Du kan träna en modell med alla, kontrollera vilka egenskaper som är oanvändbara och sedan träna om modellen med endast de betydelsefulla.
Varför ta bort egenskaper från modellen?
Att lägga till en egenskap som inte är relaterad till målet introducerar brus och försämrar förutsägelserna. Många oanvändbara egenskaper ökar bruset och minskar modellens kvalitet ytterligare.
Hur vet man om egenskaperna är bra eller dåliga?
För att utvärdera om egenskaperna har en betydande effekt på målet kan vi beräkna p-värden för varje egenskap. Ett lågt p-värde tyder på att egenskapen är statistiskt signifikant.
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)
Kort sagt, ju lägre p-värde, desto högre tillförlitlighet att egenskapen är betydelsefull. Vanligtvis anses ett p-värde mindre än 0,05 vara statistiskt signifikant.
I exemplet ovan:
Father: (extremt litet, mycket signifikant)Mother: (mycket litet, mycket signifikant)
Båda egenskaperna är bra prediktorer för målet.
Inom statistiken sätter vi en signifikansnivå, vanligtvis 0,05. Om en egenskaps p-värde överstiger denna tröskel anses den inte vara betydelsefull.
I praktiken kan något högre p-värden (strax över 0,05) fortfarande vara till nytta för modellen. Det är säkrare att testa modellen både med och utan en sådan variabel. Men om p-värdet är mycket högt (>0,4) kan du ta bort det utan tvekan.
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 och 0,051. Om vi tar bort variabler med 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å datamängder ger ofta högre p-värden (0,05–0,2) även för meningsfulla 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?
Det räcker att ta bort kolumnen som motsvarar 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änder du:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Skapa sedan ett nytt OLS-objekt med den uppdaterade X_tilde:
regression_model=sm.OLS(y, X_tilde)
1. Vilka av funktionerna bör BEHÅLLAS?
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
Fantastiskt!
Completion betyg förbättrat till 3.33
Välja Funktionerna
Svep för att visa menyn
När du arbetar med många egenskaper vet du ofta inte vilka som är viktiga. Du kan träna en modell med alla, kontrollera vilka egenskaper som är oanvändbara och sedan träna om modellen med endast de betydelsefulla.
Varför ta bort egenskaper från modellen?
Att lägga till en egenskap som inte är relaterad till målet introducerar brus och försämrar förutsägelserna. Många oanvändbara egenskaper ökar bruset och minskar modellens kvalitet ytterligare.
Hur vet man om egenskaperna är bra eller dåliga?
För att utvärdera om egenskaperna har en betydande effekt på målet kan vi beräkna p-värden för varje egenskap. Ett lågt p-värde tyder på att egenskapen är statistiskt signifikant.
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)
Kort sagt, ju lägre p-värde, desto högre tillförlitlighet att egenskapen är betydelsefull. Vanligtvis anses ett p-värde mindre än 0,05 vara statistiskt signifikant.
I exemplet ovan:
Father: (extremt litet, mycket signifikant)Mother: (mycket litet, mycket signifikant)
Båda egenskaperna är bra prediktorer för målet.
Inom statistiken sätter vi en signifikansnivå, vanligtvis 0,05. Om en egenskaps p-värde överstiger denna tröskel anses den inte vara betydelsefull.
I praktiken kan något högre p-värden (strax över 0,05) fortfarande vara till nytta för modellen. Det är säkrare att testa modellen både med och utan en sådan variabel. Men om p-värdet är mycket högt (>0,4) kan du ta bort det utan tvekan.
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 och 0,051. Om vi tar bort variabler med 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å datamängder ger ofta högre p-värden (0,05–0,2) även för meningsfulla 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?
Det räcker att ta bort kolumnen som motsvarar 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änder du:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Skapa sedan ett nytt OLS-objekt med den uppdaterade X_tilde:
regression_model=sm.OLS(y, X_tilde)
1. Vilka av funktionerna bör BEHÅLLAS?
2. Välj det FELAKTIGA påståendet.
Tack för dina kommentarer!