Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Kiezen van de Kenmerken | Meervoudige Lineaire Regressie
Lineaire Regressie Met Python
course content

Cursusinhoud

Lineaire Regressie Met Python

Lineaire Regressie Met Python

1. Eenvoudige Lineaire Regressie
2. Meervoudige Lineaire Regressie
3. Polynomiale Regressie
4. Het Beste Model Kiezen

book
Het Kiezen van de Kenmerken

Bij veel taken beschik je mogelijk over meerdere kenmerken waarvan je niet weet of ze nuttig zijn. Gelukkig kun je een model trainen met al deze kenmerken, bekijken welke geen invloed hebben, en vervolgens het model opnieuw trainen met alleen de invloedrijke kenmerken.

Waarom kenmerken uit het model verwijderen?

Wanneer je een kenmerk toevoegt aan het model dat geen relatie heeft met de target, veroorzaakt dit ruis in het model, waardoor de voorspelling slechter wordt. En als je veel nutteloze kenmerken hebt, stapelt de ruis zich op, waardoor de prestaties van het model steeds verder afnemen.

Hoe weet je of de kenmerken goed of slecht zijn?

Zoals je al weet, berekent de OLS-klasse tijdens het trainen ook statistische informatie. Onder andere voert het een t-toets uit om te bepalen of elk kenmerk een significante invloed heeft op de target. De resultaten van deze toets zijn te vinden in de summary() tabel, zoals hieronder weergegeven:

123456789
import 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
copy

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 moeten we de drempelwaarde van de p-waarde instellen, de zogenaamde significantieniveau. Deze wordt meestal ingesteld op 0,05, en zodra de p-waarde groter is dan dat significantieniveau, wordt de variabele als niet-impactvol beschouwd.

In de praktijk verbeteren variabelen met een iets hogere p-waarde dan 0,05 vaak ook het model. Het is daarom beter om het model zowel met als zonder die variabele te proberen, in plaats van deze direct uit het model te verwijderen, tenzij de p-waarde echt hoog is (>0,4). In dat geval kan de variabele veilig worden verwijderd.

Note
Opmerking

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 kunnen we zien dat het model met constante (rechts) beter is, dus het is beter om deze niet uit het model te verwijderen.

Note
Opmerking

Het is gebruikelijk om relatief hoge p-waarden (0,05 tot 0,2) te krijgen voor invloedrijke kenmerken wanneer de dataset klein is. De p-waarde geeft het vertrouwen aan dat het kenmerk invloedrijk is, en het is logisch dat hoe meer voorbeelden we hebben, hoe gemakkelijker het is om invloedrijke kenmerken van minder goede te onderscheiden.
Stel dat je gegevens hebt waaruit blijkt dat 9/10 lange mensen die je kent dagelijks appels aten. Kun je er dan zeker van zijn dat dit gerelateerd is? Maar wat als het 9000/10000 was? Dat zou je meer vertrouwen geven.

Hoe slechte features verwijderen?

Verwijder de kolom die hoort bij de feature uit X_tilde. Dit kan gedaan worden 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 bewering.

question mark

Welke van de features moet je BEHOUDEN?

Select the correct answer

question mark

Kies de ONJUISTE bewering.

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

course content

Cursusinhoud

Lineaire Regressie Met Python

Lineaire Regressie Met Python

1. Eenvoudige Lineaire Regressie
2. Meervoudige Lineaire Regressie
3. Polynomiale Regressie
4. Het Beste Model Kiezen

book
Het Kiezen van de Kenmerken

Bij veel taken beschik je mogelijk over meerdere kenmerken waarvan je niet weet of ze nuttig zijn. Gelukkig kun je een model trainen met al deze kenmerken, bekijken welke geen invloed hebben, en vervolgens het model opnieuw trainen met alleen de invloedrijke kenmerken.

Waarom kenmerken uit het model verwijderen?

Wanneer je een kenmerk toevoegt aan het model dat geen relatie heeft met de target, veroorzaakt dit ruis in het model, waardoor de voorspelling slechter wordt. En als je veel nutteloze kenmerken hebt, stapelt de ruis zich op, waardoor de prestaties van het model steeds verder afnemen.

Hoe weet je of de kenmerken goed of slecht zijn?

Zoals je al weet, berekent de OLS-klasse tijdens het trainen ook statistische informatie. Onder andere voert het een t-toets uit om te bepalen of elk kenmerk een significante invloed heeft op de target. De resultaten van deze toets zijn te vinden in de summary() tabel, zoals hieronder weergegeven:

123456789
import 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
copy

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 moeten we de drempelwaarde van de p-waarde instellen, de zogenaamde significantieniveau. Deze wordt meestal ingesteld op 0,05, en zodra de p-waarde groter is dan dat significantieniveau, wordt de variabele als niet-impactvol beschouwd.

In de praktijk verbeteren variabelen met een iets hogere p-waarde dan 0,05 vaak ook het model. Het is daarom beter om het model zowel met als zonder die variabele te proberen, in plaats van deze direct uit het model te verwijderen, tenzij de p-waarde echt hoog is (>0,4). In dat geval kan de variabele veilig worden verwijderd.

Note
Opmerking

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 kunnen we zien dat het model met constante (rechts) beter is, dus het is beter om deze niet uit het model te verwijderen.

Note
Opmerking

Het is gebruikelijk om relatief hoge p-waarden (0,05 tot 0,2) te krijgen voor invloedrijke kenmerken wanneer de dataset klein is. De p-waarde geeft het vertrouwen aan dat het kenmerk invloedrijk is, en het is logisch dat hoe meer voorbeelden we hebben, hoe gemakkelijker het is om invloedrijke kenmerken van minder goede te onderscheiden.
Stel dat je gegevens hebt waaruit blijkt dat 9/10 lange mensen die je kent dagelijks appels aten. Kun je er dan zeker van zijn dat dit gerelateerd is? Maar wat als het 9000/10000 was? Dat zou je meer vertrouwen geven.

Hoe slechte features verwijderen?

Verwijder de kolom die hoort bij de feature uit X_tilde. Dit kan gedaan worden 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 bewering.

question mark

Welke van de features moet je BEHOUDEN?

Select the correct answer

question mark

Kies de ONJUISTE bewering.

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 4
some-alt