Het Kiezen van de Kenmerken
Bij het werken met veel kenmerken is het vaak onduidelijk welke relevant zijn. Een model kan getraind worden met alle kenmerken, waarna onbruikbare kenmerken geïdentificeerd en verwijderd kunnen worden. Vervolgens kan het model opnieuw getraind worden met alleen de relevante kenmerken.
Waarom kenmerken uit het model verwijderen?
Het toevoegen van een kenmerk dat geen relatie heeft met de target introduceert ruis en verslechtert de voorspellingen. Meerdere nutteloze kenmerken stapelen ruis op en verminderen de modelkwaliteit verder.
Hoe bepaal je of kenmerken goed of slecht zijn?
OLS biedt statistische toetsen tijdens het trainen. Elk kenmerk krijgt een t-testresultaat, weergegeven in de summary()-tabel, dat aangeeft of het kenmerk een significant effect heeft op de 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
Waar we in geïnteresseerd zijn, is de p-waarde voor elk kenmerk.
Kortom, hoe lager de p-waarde, hoe groter het vertrouwen dat het kenmerk invloedrijk is.
In de statistiek stellen we een significantieniveau vast, meestal 0,05. Als de p-waarde van een feature deze drempel overschrijdt, wordt deze als niet invloedrijk beschouwd.
In de praktijk kunnen iets hogere p-waarden (net boven 0,05) het model nog steeds ondersteunen. Het is veiliger om het model te testen met en zonder zo'n feature. Maar als de p-waarde zeer hoog is (>0,4), kan deze met vertrouwen worden verwijderd.
De p-waarde varieert van 0 tot 1, dus wanneer we spreken over een lage p-waarde bedoelen we minder dan 0,05 en een hoge p-waarde betekent meestal groter dan 0,3-0,5.
In ons voorbeeld kregen we p-waarden voor de lengte van de moeder en de constante van respectievelijk 0,087 en 0,051. Als we kenmerken met een p-waarde > 0,05 verwijderen, krijgen we het onderstaande resultaat (links).
Zelfs visueel is te zien dat het model met constante (rechts) beter is, dus het is beter om deze niet uit het model te verwijderen.
Kleine datasets leveren vaak hogere p-waarden op (0,05–0,2), zelfs voor relevante kenmerken. P-waarden geven het vertrouwen aan: met meer data wordt het eenvoudiger om echt invloedrijke kenmerken van ruis te onderscheiden.
Hoe slechte features verwijderen?
Verwijder de kolom die overeenkomt met de feature uit X_tilde. Dit kan worden gedaan met de volgende code:
X_tilde = X_tilde.drop(___, axis=1)
Bijvoorbeeld, om de kolommen 'const' en 'Mother' te verwijderen, gebruik je:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Maak vervolgens een nieuw OLS-object aan met het bijgewerkte X_tilde:
regression_model=sm.OLS(y, X_tilde)
1. Welke van de features moet je BEHOUDEN?
2. Kies de ONJUISTE uitspraak.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain what a p-value actually represents in this context?
How do I interpret the summary table from the OLS regression?
What should I do if both features have p-values just above 0.05?
Awesome!
Completion rate improved to 5.26
Het Kiezen van de Kenmerken
Veeg om het menu te tonen
Bij het werken met veel kenmerken is het vaak onduidelijk welke relevant zijn. Een model kan getraind worden met alle kenmerken, waarna onbruikbare kenmerken geïdentificeerd en verwijderd kunnen worden. Vervolgens kan het model opnieuw getraind worden met alleen de relevante kenmerken.
Waarom kenmerken uit het model verwijderen?
Het toevoegen van een kenmerk dat geen relatie heeft met de target introduceert ruis en verslechtert de voorspellingen. Meerdere nutteloze kenmerken stapelen ruis op en verminderen de modelkwaliteit verder.
Hoe bepaal je of kenmerken goed of slecht zijn?
OLS biedt statistische toetsen tijdens het trainen. Elk kenmerk krijgt een t-testresultaat, weergegeven in de summary()-tabel, dat aangeeft of het kenmerk een significant effect heeft op de 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
Waar we in geïnteresseerd zijn, is de p-waarde voor elk kenmerk.
Kortom, hoe lager de p-waarde, hoe groter het vertrouwen dat het kenmerk invloedrijk is.
In de statistiek stellen we een significantieniveau vast, meestal 0,05. Als de p-waarde van een feature deze drempel overschrijdt, wordt deze als niet invloedrijk beschouwd.
In de praktijk kunnen iets hogere p-waarden (net boven 0,05) het model nog steeds ondersteunen. Het is veiliger om het model te testen met en zonder zo'n feature. Maar als de p-waarde zeer hoog is (>0,4), kan deze met vertrouwen worden verwijderd.
De p-waarde varieert van 0 tot 1, dus wanneer we spreken over een lage p-waarde bedoelen we minder dan 0,05 en een hoge p-waarde betekent meestal groter dan 0,3-0,5.
In ons voorbeeld kregen we p-waarden voor de lengte van de moeder en de constante van respectievelijk 0,087 en 0,051. Als we kenmerken met een p-waarde > 0,05 verwijderen, krijgen we het onderstaande resultaat (links).
Zelfs visueel is te zien dat het model met constante (rechts) beter is, dus het is beter om deze niet uit het model te verwijderen.
Kleine datasets leveren vaak hogere p-waarden op (0,05–0,2), zelfs voor relevante kenmerken. P-waarden geven het vertrouwen aan: met meer data wordt het eenvoudiger om echt invloedrijke kenmerken van ruis te onderscheiden.
Hoe slechte features verwijderen?
Verwijder de kolom die overeenkomt met de feature uit X_tilde. Dit kan worden gedaan met de volgende code:
X_tilde = X_tilde.drop(___, axis=1)
Bijvoorbeeld, om de kolommen 'const' en 'Mother' te verwijderen, gebruik je:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Maak vervolgens een nieuw OLS-object aan met het bijgewerkte X_tilde:
regression_model=sm.OLS(y, X_tilde)
1. Welke van de features moet je BEHOUDEN?
2. Kies de ONJUISTE uitspraak.
Bedankt voor je feedback!