logo

Multippel lineær regresjon

I forrige emne har vi lært om enkel lineær regresjon, hvor en enkelt uavhengig/prediktor(X)-variabel brukes til å modellere responsvariabelen (Y). Men det kan være ulike tilfeller der responsvariabelen påvirkes av mer enn én prediktorvariabel; for slike tilfeller brukes algoritmen for multippel lineær regresjon.

Dessuten er multippel lineær regresjon en utvidelse av enkel lineær regresjon ettersom det tar mer enn én prediktorvariabel for å forutsi responsvariabelen. Vi kan definere det som:

Multippel lineær regresjon er en av de viktige regresjonsalgoritmene som modellerer det lineære forholdet mellom en enkelt avhengig kontinuerlig variabel og mer enn én uavhengig variabel.

Eksempel:

Forutsigelse av CO2utslipp basert på motorstørrelse og antall sylindre i en bil.

Noen nøkkelpunkter om MLR:

  • For MLR må den avhengige eller målvariabelen(Y) være den kontinuerlige/reelle, men prediktoren eller den uavhengige variabelen kan være av kontinuerlig eller kategorisk form.
  • Hver funksjonsvariabel må modellere det lineære forholdet med den avhengige variabelen.
  • MLR prøver å passe en regresjonslinje gjennom et flerdimensjonalt rom av datapunkter.

MLR-ligning:

I multippel lineær regresjon er målvariabelen (Y) en lineær kombinasjon av flere prediktorvariabler x1, x2, x3, ...,xn. Siden det er en forbedring av enkel lineær regresjon, så det samme brukes for den multiple lineære regresjonsligningen, blir ligningen:

 Y= b<sub>0</sub>+b<sub>1</sub>x<sub>1</sub>+ b<sub>2</sub>x<sub>2</sub>+ b<sub>3</sub>x<sub>3</sub>+...... bnxn ............... (a) 

Hvor,

Y= Output/Response variabel

muserull fungerer ikke

b0, b1, b2, b3, bn....= Koeffisienter til modellen.

x1, x2, x3, x4,...= Diverse Uavhengig/funksjonsvariabel

Forutsetninger for multippel lineær regresjon:

  • EN lineært forhold bør eksistere mellom mål- og prediktorvariablene.
  • Regresjonsrestene må være normalt fordelt .
  • MLR antar lite eller ingen multikollinearitet (korrelasjon mellom den uavhengige variabelen) i data.

Implementering av multippel lineær regresjonsmodell ved bruk av Python:

For å implementere MLR ved hjelp av Python, har vi følgende problem:

Problem beskrivelse:

Vi har et datasett av 50 oppstartsbedrifter . Dette datasettet inneholder fem hovedinformasjon: FoU-utgifter, administrasjonskostnader, markedsføringskostnader, stat og overskudd for et regnskapsår . Vårt mål er å lage en modell som enkelt kan avgjøre hvilket selskap som har maksimal fortjeneste, og som er den mest påvirkende faktoren for et selskaps fortjeneste.

Siden vi trenger å finne Profit, så er det den avhengige variabelen, og de andre fire variablene er uavhengige variabler. Nedenfor er hovedtrinnene for å distribuere MLR-modellen:

    Dataforbehandlingstrinn Tilpasning av MLR-modellen til treningssettet Forutsi resultatet av testsettet

Trinn-1: Dataforbehandlingstrinn:

Det aller første trinnet erImporterer biblioteker:Først vil vi importere biblioteket som vil hjelpe med å bygge modellen. Nedenfor er koden for det:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 
    Importerer datasett:Nå skal vi importere datasettet(50_CompList), som inneholder alle variablene. Nedenfor er koden for det:
 #importing datasets data_set= pd.read_csv(&apos;50_CompList.csv&apos;) 

Produksjon: Vi får datasettet som:

Multippel lineær regresjon

I utgangen ovenfor kan vi tydelig se at det er fem variabler, der fire variabler er kontinuerlige og en er kategorisk variabel.

    Trekke ut avhengige og uavhengige variabler:
 #Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values 

Produksjon:

Ut[5]:

 array([[165349.2, 136897.8, 471784.1, &apos;New York&apos;], [162597.7, 151377.59, 443898.53, &apos;California&apos;], [153441.51, 101145.55, 407934.54, &apos;Florida&apos;], [144372.41, 118671.85, 383199.62, &apos;New York&apos;], [142107.34, 91391.77, 366168.42, &apos;Florida&apos;], [131876.9, 99814.71, 362861.36, &apos;New York&apos;], [134615.46, 147198.87, 127716.82, &apos;California&apos;], [130298.13, 145530.06, 323876.68, &apos;Florida&apos;], [120542.52, 148718.95, 311613.29, &apos;New York&apos;], [123334.88, 108679.17, 304981.62, &apos;California&apos;], [101913.08, 110594.11, 229160.95, &apos;Florida&apos;], [100671.96, 91790.61, 249744.55, &apos;California&apos;], [93863.75, 127320.38, 249839.44, &apos;Florida&apos;], [91992.39, 135495.07, 252664.93, &apos;California&apos;], [119943.24, 156547.42, 256512.92, &apos;Florida&apos;], [114523.61, 122616.84, 261776.23, &apos;New York&apos;], [78013.11, 121597.55, 264346.06, &apos;California&apos;], [94657.16, 145077.58, 282574.31, &apos;New York&apos;], [91749.16, 114175.79, 294919.57, &apos;Florida&apos;], [86419.7, 153514.11, 0.0, &apos;New York&apos;], [76253.86, 113867.3, 298664.47, &apos;California&apos;], [78389.47, 153773.43, 299737.29, &apos;New York&apos;], [73994.56, 122782.75, 303319.26, &apos;Florida&apos;], [67532.53, 105751.03, 304768.73, &apos;Florida&apos;], [77044.01, 99281.34, 140574.81, &apos;New York&apos;], [64664.71, 139553.16, 137962.62, &apos;California&apos;], [75328.87, 144135.98, 134050.07, &apos;Florida&apos;], [72107.6, 127864.55, 353183.81, &apos;New York&apos;], [66051.52, 182645.56, 118148.2, &apos;Florida&apos;], [65605.48, 153032.06, 107138.38, &apos;New York&apos;], [61994.48, 115641.28, 91131.24, &apos;Florida&apos;], [61136.38, 152701.92, 88218.23, &apos;New York&apos;], [63408.86, 129219.61, 46085.25, &apos;California&apos;], [55493.95, 103057.49, 214634.81, &apos;Florida&apos;], [46426.07, 157693.92, 210797.67, &apos;California&apos;], [46014.02, 85047.44, 205517.64, &apos;New York&apos;], [28663.76, 127056.21, 201126.82, &apos;Florida&apos;], [44069.95, 51283.14, 197029.42, &apos;California&apos;], [20229.59, 65947.93, 185265.1, &apos;New York&apos;], [38558.51, 82982.09, 174999.3, &apos;California&apos;], [28754.33, 118546.05, 172795.67, &apos;California&apos;], [27892.92, 84710.77, 164470.71, &apos;Florida&apos;], [23640.93, 96189.63, 148001.11, &apos;California&apos;], [15505.73, 127382.3, 35534.17, &apos;New York&apos;], [22177.74, 154806.14, 28334.72, &apos;California&apos;], [1000.23, 124153.04, 1903.93, &apos;New York&apos;], [1315.46, 115816.21, 297114.46, &apos;Florida&apos;], [0.0, 135426.92, 0.0, &apos;California&apos;], [542.05, 51743.15, 0.0, &apos;New York&apos;], [0.0, 116983.8, 45173.06, &apos;California&apos;]], dtype=object) 

Som vi kan se i utgangen ovenfor, inneholder den siste kolonnen kategoriske variabler som ikke er egnet til å bruke direkte for tilpasning av modellen. Så vi må kode denne variabelen.

Koding dummy-variabler:

arv java

Siden vi har én kategorisk variabel (State), som ikke kan brukes direkte på modellen, så vil vi kode den. For å kode den kategoriske variabelen til tall, vil vi bruke LabelEncoder klasse. Men det er ikke tilstrekkelig fordi det fortsatt har en viss relasjonsrekkefølge, som kan skape en feil modell. Så for å fjerne dette problemet, vil vi bruke OneHotEncoder , som vil lage dummy-variablene. Nedenfor er koden for det:

 #Catgorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_x= LabelEncoder() x[:, 3]= labelencoder_x.fit_transform(x[:,3]) onehotencoder= OneHotEncoder(categorical_features= [3]) x= onehotencoder.fit_transform(x).toarray() 

Her koder vi bare for én uavhengig variabel, som er tilstand ettersom andre variabler er kontinuerlige.

Produksjon:

Multippel lineær regresjon

Som vi kan se i utgangen ovenfor, har tilstandskolonnen blitt konvertert til dummyvariabler (0 og 1). Her tilsvarer hver dummy-variabelkolonne den ene staten . Vi kan sjekke ved å sammenligne det med det originale datasettet. Den første kolonnen tilsvarer California delstat , tilsvarer den andre kolonnen Florida State , og den tredje kolonnen tilsvarer staten New York .

Merk:Vi bør ikke bruke alle dummy-variablene samtidig, så det må være 1 mindre enn det totale antallet dummy-variabler, ellers vil det lage en dummy-variabelfelle.

  • Nå skriver vi en enkelt linje med kode bare for å unngå dummy-variabelfellen:
 #avoiding the dummy variable trap: x = x[:, 1:] 

Hvis vi ikke fjerner den første dummy-variabelen, kan det introdusere multikollinearitet i modellen.

Multippel lineær regresjon

Som vi kan se i utdatabildet ovenfor, er den første kolonnen fjernet.

  • Nå skal vi dele opp datasettet i trening og testsett. Koden for dette er gitt nedenfor:
 # Splitting the dataset into training and test set. from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test= train_test_split(x, y, test_size= 0.2, random_state=0) 

Koden ovenfor vil dele opp datasettet vårt i et treningssett og testsett.

Produksjon: Koden ovenfor vil dele opp datasettet i treningssett og testsett. Du kan sjekke utdataene ved å klikke på alternativet for variabelutforsker gitt i Spyder IDE. Testsettet og treningssettet vil se ut som bildet nedenfor:

Testsett:

Multippel lineær regresjon

Treningssett:

Multippel lineær regresjon

Merk:I MLR vil vi ikke gjøre funksjonsskalering ettersom det ivaretas av biblioteket, så vi trenger ikke å gjøre det manuelt.

Trinn: 2- Tilpasning av MLR-modellen vår til treningssettet:

Nå har vi godt forberedt datasettet vårt for å gi opplæring, noe som betyr at vi vil tilpasse regresjonsmodellen vår til treningssettet. Det vil være likt som vi gjorde i Enkel lineær regresjonsmodell. Koden for dette vil være:

 #Fitting the MLR model to the training set: from sklearn.linear_model import LinearRegression regressor= LinearRegression() regressor.fit(x_train, y_train) 

Produksjon:

 Out[9]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False) 

Nå har vi trent opp modellen vår ved hjelp av opplæringsdatasettet. I neste trinn vil vi teste ytelsen til modellen ved hjelp av testdatasettet.

Trinn: 3- Forutsigelse av testresultater:

Det siste trinnet for vår modell er å sjekke ytelsen til modellen. Vi vil gjøre det ved å forutsi testsettets resultat. For prediksjon vil vi lage en y_pred vektor. Nedenfor er koden for det:

 #Predicting the Test set result; y_pred= regressor.predict(x_test) 

Ved å utføre kodelinjene ovenfor, vil en ny vektor bli generert under alternativet for variabel utforsker. Vi kan teste modellen vår ved å sammenligne de predikerte verdiene og testsettets verdier.

Produksjon:

Multippel lineær regresjon

I utgangen ovenfor har vi spådd resultatsett og testsett. Vi kan sjekke modellens ytelse ved å sammenligne disse to verdiindeks for indeks. For eksempel har den første indeksen en anslått verdi på 103015$ fortjeneste og test/reell verdi av 103282$ profitt. Forskjellen er kun av 7 , som er en god prediksjon, så endelig er modellen vår fullført her.

dele en streng i c++
  • Vi kan også sjekke poengsummen for treningsdatasett og testdatasett. Nedenfor er koden for det:
 print(&apos;Train Score: &apos;, regressor.score(x_train, y_train)) print(&apos;Test Score: &apos;, regressor.score(x_test, y_test)) 

Produksjon: Poengsummen er:

 Train Score: 0.9501847627493607 Test Score: 0.9347068473282446 

Poengsummen ovenfor forteller at modellen vår er 95 % nøyaktig med treningsdatasettet og 93 % nøyaktig med testdatasettet.

Merk:I det neste emnet vil vi se hvordan vi kan forbedre ytelsen til modellen ved å brukeEliminering bakoverprosess.

Anvendelser av multippel lineær regresjon:

Det er hovedsakelig to anvendelser av multippel lineær regresjon:

  • Effektiviteten til uavhengig variabel på prediksjon:
  • Forutsi virkningen av endringer: