logo

Večkratna linearna regresija

V prejšnji temi smo se naučili o preprosti linearni regresiji, kjer se za modeliranje spremenljivke odziva (Y) uporablja ena spremenljivka Independent/Predictor(X). Lahko pa obstajajo različni primeri, v katerih na spremenljivko odziva vpliva več kot ena napovedna spremenljivka; za take primere se uporablja algoritem večkratne linearne regresije.

Poleg tega je večkratna linearna regresija razširitev enostavne linearne regresije, saj za napoved spremenljivke odziva potrebuje več kot eno napovedno spremenljivko. Lahko ga definiramo kot:

Večkratna linearna regresija je eden od pomembnih regresijskih algoritmov, ki modelira linearno razmerje med eno odvisno zvezno spremenljivko in več kot eno neodvisno spremenljivko.

primer:

Napoved CO2emisije glede na velikost motorja in število valjev v avtomobilu.

Nekaj ​​ključnih točk o MLR:

  • Za MLR mora biti odvisna ali ciljna spremenljivka (Y) zvezna/realna, napovedovalna ali neodvisna spremenljivka pa je lahko zvezne ali kategorične oblike.
  • Vsaka značilna spremenljivka mora modelirati linearno razmerje z odvisno spremenljivko.
  • MLR poskuša prilagoditi regresijsko črto skozi večdimenzionalni prostor podatkovnih točk.

Enačba MLR:

Pri večkratni linearni regresiji je ciljna spremenljivka (Y) linearna kombinacija več napovedovalnih spremenljivk x1, x2, x3, ...,xn. Ker gre za izboljšavo preproste linearne regresije, se enako uporablja za enačbo večkratne linearne regresije, enačba postane:

 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) 

Kje,

Y = spremenljivka izhod/odziv

niz vsebuje

b0, b1, b2, b3, bn....= Koeficienti modela.

x1, x2, x3, x4,...= Različne neodvisne/značilne spremenljivke

Predpostavke za večkratno linearno regresijo:

  • A linearno razmerje mora obstajati med ciljno in napovedovalno spremenljivko.
  • Regresijski ostanki morajo biti normalno porazdeljena .
  • MLR predpostavlja malo oz brez multikolinearnosti (korelacija med neodvisno spremenljivko) v podatkih.

Izvedba modela večkratne linearne regresije z uporabo Pythona:

Za implementacijo MLR z uporabo Pythona imamo spodnjo težavo:

Opis težave:

Imamo nabor podatkov 50 start-up podjetij . Ta niz podatkov vsebuje pet glavnih informacij: Poraba za raziskave in razvoj, administrativna poraba, poraba za trženje, država in dobiček za poslovno leto . Naš cilj je ustvariti model, s katerim lahko enostavno ugotovimo, katero podjetje ima največji dobiček in kateri dejavnik najbolj vpliva na dobiček podjetja.

Ker moramo najti dobiček, je to odvisna spremenljivka, ostale štiri spremenljivke pa so neodvisne spremenljivke. Spodaj so glavni koraki uvajanja modela MLR:

    Koraki predhodne obdelave podatkov Montaža modela MLR na vadbeni set Napovedovanje rezultata testnega niza

Korak 1: Korak predhodne obdelave podatkov:

Prvi korak jeUvažanje knjižnic:Najprej bomo uvozili knjižnico, ki bo pomagala pri gradnji modela. Spodaj je koda zanj:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 
    Uvažanje nabora podatkov:Zdaj bomo uvozili nabor podatkov (50_CompList), ki vsebuje vse spremenljivke. Spodaj je koda zanj:
 #importing datasets data_set= pd.read_csv(&apos;50_CompList.csv&apos;) 

Izhod: Nabor podatkov bomo dobili kot:

Večkratna linearna regresija

V zgornjem rezultatu lahko jasno vidimo, da obstaja pet spremenljivk, od katerih so štiri spremenljivke zvezne in ena kategorična spremenljivka.

java različica linux
    Izvleček odvisnih in neodvisnih spremenljivk:
 #Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values 

Izhod:

Out [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) 

Kot lahko vidimo v zgornjem izhodu, zadnji stolpec vsebuje kategorične spremenljivke, ki niso primerne za neposredno uporabo pri prilagajanju modela. Zato moramo kodirati to spremenljivko.

Kodiranje navideznih spremenljivk:

Ker imamo eno kategorično spremenljivko (stanje), ki je ni mogoče neposredno uporabiti na modelu, jo bomo kodirali. Za kodiranje kategorične spremenljivke v številke bomo uporabili LabelEncoder razred. Vendar ni dovolj, ker ima še vedno nekaj relacijskega reda, ki lahko ustvari napačen model. Da bi odpravili to težavo, bomo uporabili OneHotEncoder , ki bo ustvaril navidezne spremenljivke. Spodaj je koda zanj:

 #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() 

Tukaj kodiramo samo eno neodvisno spremenljivko, ki je stanje, saj so druge spremenljivke zvezne.

Izhod:

Večkratna linearna regresija

Kot lahko vidimo v zgornjem izhodu, je bil stolpec stanja pretvorjen v navidezne spremenljivke (0 in 1). Tu vsak stolpec navidezne spremenljivke ustreza eni državi . Lahko preverimo tako, da ga primerjamo z izvirnim naborom podatkov. Prvi stolpec ustreza zvezna država Kalifornija , drugi stolpec ustreza zvezna država Florida , tretji stolpec pa ustreza Država New York .

Opomba:Ne smemo uporabiti vseh navideznih spremenljivk hkrati, zato mora biti 1 manjše od skupnega števila navideznih spremenljivk, sicer bo ustvarila past navideznih spremenljivk.

  • Zdaj pišemo eno samo vrstico kode, da se izognemo pasti navideznih spremenljivk:
 #avoiding the dummy variable trap: x = x[:, 1:] 

Če ne odstranimo prve navidezne spremenljivke, lahko to vnese multikolinearnost v model.

Večkratna linearna regresija

Kot lahko vidimo na zgornji izhodni sliki, je bil prvi stolpec odstranjen.

  • Zdaj bomo nabor podatkov razdelili na učni in testni nabor. Koda za to je navedena spodaj:
 # 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) 

Zgornja koda bo naš nabor podatkov razdelila na nabor za usposabljanje in nabor za testiranje.

Izhod: Zgornja koda bo nabor podatkov razdelila na nabor za usposabljanje in nabor za testiranje. Izhod lahko preverite s klikom na možnost raziskovalca spremenljivk, podano v Spyder IDE. Testni niz in komplet za usposabljanje bosta videti kot spodnja slika:

Testni niz:

Večkratna linearna regresija

Komplet za trening:

Večkratna linearna regresija

Opomba:V MLR ne bomo izvajali skaliranja funkcij, saj za to poskrbi knjižnica, zato nam tega ni treba narediti ročno.

Korak: 2- Prilagajanje našega modela MLR kompletu za usposabljanje:

Zdaj smo dobro pripravili naš nabor podatkov, da bi zagotovili usposabljanje, kar pomeni, da bomo naš regresijski model prilagodili naboru za usposabljanje. Podobno bo kot v Preprost model linearne regresije. Koda za to bo:

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

Izhod:

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

Zdaj smo uspešno usposobili naš model z uporabo nabora podatkov za usposabljanje. V naslednjem koraku bomo preizkusili delovanje modela s testnim naborom podatkov.

polje s seznamom java

Korak: 3- Predvidevanje rezultatov preskusnega niza:

Zadnji korak za naš model je preverjanje zmogljivosti modela. To bomo storili tako, da bomo napovedali rezultat testnega niza. Za napovedovanje bomo ustvarili a y_pred vektor. Spodaj je koda zanj:

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

Z izvajanjem zgornjih vrstic kode bo pod možnostjo raziskovalca spremenljivk ustvarjen nov vektor. Naš model lahko preizkusimo s primerjavo predvidenih vrednosti in vrednosti testnega niza.

Izhod:

Večkratna linearna regresija

V zgornjem rezultatu smo predvideli niz rezultatov in testni niz. Učinkovitost modela lahko preverimo s primerjavo teh dveh vrednosti indeks za indeksom. Na primer, prvi indeks ima predvideno vrednost 103015 dolarjev dobiček in test/dejanska vrednost 103282 dolarjev dobiček. Razlika je le v 267 $ , kar je dobra napoved, tako da je končno naš model tukaj dokončan.

  • Prav tako lahko preverimo rezultat za nabor podatkov za usposabljanje in nabor testnih podatkov. Spodaj je koda zanj:
 print(&apos;Train Score: &apos;, regressor.score(x_train, y_train)) print(&apos;Test Score: &apos;, regressor.score(x_test, y_test)) 

Izhod: Rezultat je:

 Train Score: 0.9501847627493607 Test Score: 0.9347068473282446 

Zgornji rezultat pove, da je naš model 95 % natančen z naborom podatkov za usposabljanje in 93 % natančen s testnim naborom podatkov.

Opomba:V naslednji temi bomo videli, kako lahko izboljšamo delovanje modela z uporaboOdprava nazajpostopek.

Uporaba večkratne linearne regresije:

Obstajata predvsem dve uporabi večkratne linearne regresije:

  • Učinkovitost neodvisne spremenljivke pri napovedovanju:
  • Napovedovanje vpliva sprememb: