logo

Multipel lineær regression

I det foregående emne har vi lært om Simple Linear Regression, hvor en enkelt Independent/Predictor(X) variabel bruges til at modellere responsvariablen (Y). Men der kan være forskellige tilfælde, hvor responsvariablen er påvirket af mere end én prædiktorvariabel; i sådanne tilfælde bruges Multiple Linear Regression-algoritmen.

Desuden er Multiple Linear Regression en udvidelse af Simple Linear Regression, da det kræver mere end én prædiktorvariabel at forudsige responsvariablen. Vi kan definere det som:

Multipel lineær regression er en af ​​de vigtige regressionsalgoritmer, som modellerer det lineære forhold mellem en enkelt afhængig kontinuerlig variabel og mere end én uafhængig variabel.

Eksempel:

Forudsigelse af CO2emission baseret på motorstørrelse og antal cylindre i en bil.

Nogle nøglepunkter om MLR:

  • For MLR skal den afhængige eller målvariable(Y) være den kontinuerte/reale, men prædiktoren eller den uafhængige variabel kan være af kontinuert eller kategorisk form.
  • Hver funktionsvariabel skal modellere den lineære sammenhæng med den afhængige variabel.
  • MLR forsøger at passe en regressionslinje gennem et multidimensionelt rum af datapunkter.

MLR-ligning:

I multipel lineær regression er målvariablen(Y) en lineær kombination af flere forudsigelsesvariable x1, x2, x3, ...,xn. Da det er en forbedring af Simple Linear Regression, så det samme anvendes for den multiple lineære regressionsligning, bliver 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/Respons variabel

muserul virker ikke

b0, b1, b2, b3, bn....= Koefficienter for modellen.

x1, x2, x3, x4,...= Diverse Uafhængig/funktionsvariabel

Forudsætninger for multipel lineær regression:

  • EN lineær sammenhæng bør eksistere mellem mål- og prædiktorvariablerne.
  • Regressionsresterne skal være normalt fordelt .
  • MLR antager lidt eller ingen multikolinearitet (korrelation mellem den uafhængige variabel) i data.

Implementering af multipel lineær regressionsmodel ved hjælp af Python:

For at implementere MLR ved hjælp af Python har vi følgende problem:

Problem Beskrivelse:

Vi har et datasæt af 50 nystartede virksomheder . Dette datasæt indeholder fem hovedoplysninger: R&D-udgifter, administrationsudgifter, marketingudgifter, stat og overskud for et regnskabsår . Vores mål er at skabe en model, der nemt kan afgøre, hvilken virksomhed der har et maksimalt overskud, og som er den mest påvirkende faktor for en virksomheds overskud.

Da vi skal finde Profit, så er det den afhængige variabel, og de andre fire variabler er uafhængige variable. Nedenfor er de vigtigste trin i implementeringen af ​​MLR-modellen:

    Dataforbehandlingstrin Tilpasning af MLR-modellen til træningssættet Forudsigelse af resultatet af testsættet

Trin-1: Dataforbehandling Trin:

Det allerførste skridt erImport af biblioteker:Først vil vi importere biblioteket, som vil hjælpe med at bygge modellen. Nedenfor er koden til det:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 
    Importer datasæt:Nu vil vi importere datasættet(50_CompList), som indeholder alle variablerne. Nedenfor er koden til det:
 #importing datasets data_set= pd.read_csv(&apos;50_CompList.csv&apos;) 

Produktion: Vi får datasættet som:

Multipel lineær regression

I ovenstående output kan vi tydeligt se, at der er fem variable, hvor fire variable er kontinuerte og en er kategorisk variabel.

    Udtræk af afhængige og uafhængige variabler:
 #Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values 

Produktion:

Ud[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 ovenstående output, indeholder den sidste kolonne kategoriske variabler, som ikke er egnede til at anvende direkte til tilpasning af modellen. Så vi skal indkode denne variabel.

Kodning af dummy-variabler:

arv java

Da vi har én kategorisk variabel (State), som ikke kan anvendes direkte på modellen, så vil vi kode den. For at indkode den kategoriske variabel til tal, vil vi bruge LabelEncoder klasse. Men det er ikke tilstrækkeligt, fordi det stadig har en eller anden relationel orden, som kan skabe en forkert model. Så for at fjerne dette problem, vil vi bruge OneHotEncoder , som vil skabe dummy-variablerne. Nedenfor er koden til 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 kun en uafhængig variabel, som er tilstand, da andre variable er kontinuerte.

Produktion:

Multipel lineær regression

Som vi kan se i ovenstående output, er tilstandskolonnen blevet konverteret til dummy-variabler (0 og 1). Her svarer hver dummy variabel kolonne til den ene stat . Vi kan kontrollere ved at sammenligne det med det originale datasæt. Den første kolonne svarer til staten Californien , den anden kolonne svarer til Florida stat , og den tredje kolonne svarer til staten New York .

Bemærk:Vi bør ikke bruge alle dummy-variablerne på samme tid, så det skal være 1 mindre end det samlede antal dummy-variabler, ellers vil det skabe en dummy-variabelfælde.

  • Nu skriver vi en enkelt linje kode bare for at undgå den dummy-variable fælde:
 #avoiding the dummy variable trap: x = x[:, 1:] 

Hvis vi ikke fjerner den første dummy-variabel, kan den introducere multikollinearitet i modellen.

Multipel lineær regression

Som vi kan se i ovenstående outputbillede, er den første kolonne blevet fjernet.

  • Nu vil vi opdele datasættet i trænings- og testsæt. Koden til dette er angivet 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) 

Ovenstående kode vil opdele vores datasæt i et træningssæt og testsæt.

Produktion: Ovenstående kode vil opdele datasættet i træningssæt og testsæt. Du kan kontrollere outputtet ved at klikke på variabel explorer-indstillingen i Spyder IDE. Testsættet og træningssættet vil se ud som nedenstående billede:

Test sæt:

Multipel lineær regression

Træningssæt:

Multipel lineær regression

Bemærk:I MLR laver vi ikke funktionsskalering, da det varetages af biblioteket, så vi behøver ikke at gøre det manuelt.

Trin: 2- Tilpasning af vores MLR-model til træningssættet:

Nu har vi godt forberedt vores datasæt for at kunne tilbyde træning, hvilket betyder, at vi vil tilpasse vores regressionsmodel til træningssættet. Det vil ligne, som vi gjorde i Simpel lineær regression model. Koden til 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) 

Produktion:

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

Nu har vi med succes trænet vores model ved hjælp af træningsdatasættet. I næste trin vil vi teste modellens ydeevne ved hjælp af testdatasættet.

Trin: 3- Forudsigelse af testsætresultater:

Det sidste trin for vores model er at kontrollere modellens ydeevne. Vi vil gøre det ved at forudsige testsættets resultat. Til forudsigelse vil vi oprette en y_pred vektor. Nedenfor er koden til det:

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

Ved at udføre ovenstående kodelinjer vil en ny vektor blive genereret under indstillingen variabel explorer. Vi kan teste vores model ved at sammenligne de forudsagte værdier og testsætværdier.

Produktion:

Multipel lineær regression

I ovenstående output har vi forudsagt resultatsæt og testsæt. Vi kan kontrollere modellens ydeevne ved at sammenligne disse to værdier indeks for indeks. For eksempel har det første indeks en forudsagt værdi på 103015$ fortjeneste og test/realværdi af 103282 $ profit. Forskellen er kun af 7 , hvilket er en god forudsigelse, så endelig er vores model færdig her.

hvad er modulo i c++
  • Vi kan også tjekke scoren for træningsdatasæt og testdatasæt. Nedenfor er koden til det:
 print(&apos;Train Score: &apos;, regressor.score(x_train, y_train)) print(&apos;Test Score: &apos;, regressor.score(x_test, y_test)) 

Produktion: Scoren er:

 Train Score: 0.9501847627493607 Test Score: 0.9347068473282446 

Ovenstående score fortæller, at vores model er 95 % nøjagtig med træningsdatasættet og 93 % nøjagtig med testdatasæt.

Bemærk:I det næste emne vil vi se, hvordan vi kan forbedre modellens ydeevne ved hjælp afBaglæns elimineringbehandle.

Anvendelser af multipel lineær regression:

Der er hovedsageligt to anvendelser af multipel lineær regression:

  • Effektiviteten af ​​uafhængig variabel på forudsigelse:
  • Forudsigelse af virkningen af ​​ændringer: