Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Valg af Funktioner | Multipel Lineær Regression
Lineær Regression med Python

bookValg af Funktioner

I mange opgaver kan du have mange funktioner, hvor du ikke ved, om de er nyttige eller ej. Heldigvis kan du træne en model med dem alle, se hvilke der ikke har nogen indflydelse, og derefter gen-træne modellen kun med de indflydelsesrige.

Hvorfor fjerne funktioner fra modellen?

Hvis du tilføjer en funktion til modellen, som ikke har nogen relation til målet, vil det skabe støj i modellen og forværre forudsigelsen. Når du har mange unyttige funktioner, vil støjen akkumulere, hvilket får modellen til at præstere dårligere og dårligere.

Hvordan ved man, om funktionerne er gode eller dårlige?

Som du allerede ved, beregner OLS-klassen også statistiske oplysninger under træningen. Blandt andet udfører den en t-test for at afgøre, om hver funktion har en signifikant indflydelse på målet. Resultaterne af testen kan findes i summary()-tabellen som vist nedenfor:

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

Det, vi er interesserede i, er p-værdien for hver feature.

Kort sagt, jo lavere p-værdi, desto større tillid til, at feature har betydning.

Inden for statistik skal vi fastsætte tærskelværdien for p-værdien, kaldet signifikansniveau. Det sættes typisk til 0,05, og når p-værdien overstiger dette signifikansniveau, betragtes egenskaben som ikke-væsentlig.

I praksis forbedrer egenskaber med en lidt højere p-værdi end 0,05 ofte også modellen. Det er derfor bedre at afprøve modellen både med og uden denne egenskab, i stedet for straks at fjerne den, medmindre den har en meget høj p-værdi (>0,4). I så fald kan egenskaben fjernes uden problemer.

Note
Bemærk

p-værdien ligger mellem 0 og 1, så når vi taler om lav p-værdi, mener vi mindre end 0,05, og høj p-værdi betyder typisk større end 0,3-0,5.

I vores eksempel fik vi p-værdier for moderens højde og konstanten 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 konstanten (til højre) er bedre, så det er bedre ikke at fjerne den fra modellen.

Note
Bemærk

Det er almindeligt at få relativt høje p-værdier (0,05 til 0,2) for betydningsfulde funktioner, når datasættet er lille. P-værdien viser sikkerheden for, at funktionen er betydningsfuld, og det er naturligt, at jo flere observationer vi har, desto lettere er det at skelne betydningsfulde funktioner fra dårlige.
Antag, at du har data, der viser, at 9/10 af de høje personer, du kender, spiste æbler dagligt. Kan du være sikker på, at dette er relateret? Men hvad hvis det var 9000/10000? Det ville gøre dig mere sikker.

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', skal du bruge:

X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)

Og derefter oprette et nyt OLS-objekt ved at bruge det opdaterede X_tilde:

regression_model=sm.OLS(y, X_tilde)

1. Hvilke af funktionerne bør BEHOLDES?

2. Vælg den FORKERTE påstand.

question mark

Hvilke af funktionerne bør BEHOLDES?

Select the correct answer

question mark

Vælg den FORKERTE påstand.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 5.26

bookValg af Funktioner

Stryg for at vise menuen

I mange opgaver kan du have mange funktioner, hvor du ikke ved, om de er nyttige eller ej. Heldigvis kan du træne en model med dem alle, se hvilke der ikke har nogen indflydelse, og derefter gen-træne modellen kun med de indflydelsesrige.

Hvorfor fjerne funktioner fra modellen?

Hvis du tilføjer en funktion til modellen, som ikke har nogen relation til målet, vil det skabe støj i modellen og forværre forudsigelsen. Når du har mange unyttige funktioner, vil støjen akkumulere, hvilket får modellen til at præstere dårligere og dårligere.

Hvordan ved man, om funktionerne er gode eller dårlige?

Som du allerede ved, beregner OLS-klassen også statistiske oplysninger under træningen. Blandt andet udfører den en t-test for at afgøre, om hver funktion har en signifikant indflydelse på målet. Resultaterne af testen kan findes i summary()-tabellen som vist nedenfor:

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

Det, vi er interesserede i, er p-værdien for hver feature.

Kort sagt, jo lavere p-værdi, desto større tillid til, at feature har betydning.

Inden for statistik skal vi fastsætte tærskelværdien for p-værdien, kaldet signifikansniveau. Det sættes typisk til 0,05, og når p-værdien overstiger dette signifikansniveau, betragtes egenskaben som ikke-væsentlig.

I praksis forbedrer egenskaber med en lidt højere p-værdi end 0,05 ofte også modellen. Det er derfor bedre at afprøve modellen både med og uden denne egenskab, i stedet for straks at fjerne den, medmindre den har en meget høj p-værdi (>0,4). I så fald kan egenskaben fjernes uden problemer.

Note
Bemærk

p-værdien ligger mellem 0 og 1, så når vi taler om lav p-værdi, mener vi mindre end 0,05, og høj p-værdi betyder typisk større end 0,3-0,5.

I vores eksempel fik vi p-værdier for moderens højde og konstanten 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 konstanten (til højre) er bedre, så det er bedre ikke at fjerne den fra modellen.

Note
Bemærk

Det er almindeligt at få relativt høje p-værdier (0,05 til 0,2) for betydningsfulde funktioner, når datasættet er lille. P-værdien viser sikkerheden for, at funktionen er betydningsfuld, og det er naturligt, at jo flere observationer vi har, desto lettere er det at skelne betydningsfulde funktioner fra dårlige.
Antag, at du har data, der viser, at 9/10 af de høje personer, du kender, spiste æbler dagligt. Kan du være sikker på, at dette er relateret? Men hvad hvis det var 9000/10000? Det ville gøre dig mere sikker.

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', skal du bruge:

X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)

Og derefter oprette et nyt OLS-objekt ved at bruge det opdaterede X_tilde:

regression_model=sm.OLS(y, X_tilde)

1. Hvilke af funktionerne bør BEHOLDES?

2. Vælg den FORKERTE påstand.

question mark

Hvilke af funktionerne bør BEHOLDES?

Select the correct answer

question mark

Vælg den FORKERTE påstand.

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4
some-alt