Udgivet i Skriv en kommentar

Unraveling Spline Regression i R

div >

når vi taler om regression, er de første ting, der kommer til vores sind, lineær eller logistisk regression og et sted i den fjerne bagside af sindet polynomisk regression. Lineær og logistisk regression er 2 af de mest populære typer regressionsmetoder. Der er dog mange forskellige typer regressionsmetoder, som kan vise sig at være nyttige i forskellige scenarier. I dag vil vi se på Spline Regression ved hjælp af Trinfunktioner.

Spline Regression er en ikke-parametrisk regressionsteknik. Denne regressionsteknik opdeler datasættene i skraldespande med intervaller eller punkter kaldet knuder, og hver skraldespand har sin separate pasform. Lad os se på en simpel implementering af Spline regression ved hjælp af trinfunktion i R.

visualisering af datasættet:

Quantity Vs Sales Data
library(plotly)plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter"
)

Quantity Vs Sales Plot

Let’s fit a linear regression on and see how it works:

fit <- lm(Sales ~ Quantity, data=data)
summary(fit)

plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter") %>% add_lines(x = ~Quantity, y = fitted(fit))

The equation here takes the form of:

In this case:

Vi kan se, at lineær regression producerer en frygtelig pasform i dette tilfælde, set fra plottet ovenfor og R-kvadreret værdi.

lad os nu introducere et polynomisk udtryk (kvadratisk her) til ligningen og analysere modelens ydeevne.

fit2 <- lm(Sales ~ poly(Quantity,2) + Quantity, data=data)
summary(fit2)

plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter") %>% add_lines(x = ~Quantity, y = fitted(fit2))

The equation here takes the form of:

In this case:

Vi kan se, at det ikke er en dårlig pasform, men heller ikke en god. Den forudsagte top er noget langt fra den faktiske top. Polynomisk regression kommer også med forskellige ulemper, som det har tendens til at overfit. Det kan føre til en stigning i kompleksitet, da antallet af funktioner stiger.

ulemperne ved polynomregressionen og inkompetensen af den lineære model kan overvindes ved hjælp af Spline-Regression.

lad os visualisere datasættet ved at opdele det i to skraldespande. Den ene på venstre side af toppen, der forekommer ved Mængde = 89, og den anden på højre side, som vist på henholdsvis de to billeder nedenfor.

Now let’s combine the above two images into one equation and perform piecewise regression or spline regression using step function.

The equation would take the form of:

In this case:

Xbar here is called the Knot value.

data$Xbar <- ifelse(data$Quantity>89,1,0)
data$diff <- data$Quantity - 89
data$X <- data$diff*data$Xbar
data

After performing the above manipulation the data would look like this:

Let us now fit the equation we saw above:

The X in the equation below is (x-xbar)*Xk

reg <- lm(Sales ~ Quantity + X, data = data)
plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter") %>% add_lines(x = ~Quantity, y = fitted(reg))

summary(reg)

As we can see from the plot and the R-squared values above, spline regression produces a much better result, in this scenario.

Above results can also be obtained using Segmented package in R:

Note: If you are not providing the breakpoint value (Quantity = 89, here), then use “psi = NA”

summary(fit_seg)

Both methods produce the same result.

dette var et simpelt eksempel på spline regression. Splines kan også monteres ved hjælp af polynomiske funktioner, kaldet polynomiske Splines, så i stedet for at montere et højgradspolynom for hele rækken af H, kan splines eller stykkevis polynomregression med lavere grad polynomer passe i sperate regioner af H.

valg af placering og antal knuder

Splines kan modelleres ved at tilføje mere antal knuder og derved øge fleksibiliteten af modellen. Generelt fører placering af K-knuder til montering af K + 1-Funktioner. Valget af at placere en knude kan afhænge af forskellige faktorer. Da regression er meget fleksibel i områder, hvor der er flere knuder placeret, er det intuitivt at placere knuder, hvor der er mere variation i dataene, eller hvor funktionen ændres hurtigere. De regioner, der synes forholdsvis stabile, behøver ikke at have for mange knuder og kan bruge færre af dem.

konklusion:

Vi lærte om Spline regression ved hjælp af trinfunktion i denne artikel. Der er andre former for polynomiske funktioner, der kan anvendes også. En af de almindelige er kubisk spline som bruger polynomisk funktion af tredje orden. Endnu en metode til implementering af splines er udjævning af Splines. Splines giver ofte bedre resultater sammenlignet med polynomregression. I splines kan fleksibilitet øges ved at øge antallet af knuder og uden at øge graden af polynomet. De producerer også mere stabile resultater sammenlignet med polynomisk regression generelt.

Jeg håber, at denne artikel var nyttig til at gribe ideen om Spline og stykkevis Regression og komme i gang med det.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.