logo

Többszörös lineáris regresszió

Az előző témakörben megismertük az egyszerű lineáris regressziót, ahol egyetlen Független/Prediktor(X) változót használunk a válaszváltozó (Y) modellezésére. De lehetnek különféle esetek, amikor a válaszváltozót egynél több prediktorváltozó is befolyásolja; ilyen esetekben a többszörös lineáris regressziós algoritmust használjuk.

Ezenkívül a többszörös lineáris regresszió az egyszerű lineáris regresszió kiterjesztése, mivel egynél több előrejelző változóra van szükség a válaszváltozó előrejelzéséhez. Ezt így definiálhatjuk:

A többszörös lineáris regresszió az egyik fontos regressziós algoritmus, amely egyetlen függő folytonos változó és egynél több független változó közötti lineáris kapcsolatot modellezi.

Példa:

A CO előrejelzése2kibocsátás a motor mérete és az autó hengereinek száma alapján.

Néhány fontos tudnivaló az MLR-ről:

  • MLR esetén a függő vagy célváltozónak (Y) a folytonos/valós változónak kell lennie, de a prediktor vagy független változó lehet folytonos vagy kategorikus.
  • Minden jellemzőváltozónak modelleznie kell a lineáris kapcsolatot a függő változóval.
  • Az MLR egy regressziós egyenest próbál illeszteni adatpontok többdimenziós terén keresztül.

MLR egyenlet:

A többszörös lineáris regresszióban a célváltozó (Y) több előrejelző változó lineáris kombinációja x1, x2, x3, ...,xn. Mivel ez az egyszerű lineáris regresszió továbbfejlesztése, így ugyanez vonatkozik a többszörös lineáris regressziós egyenletre is, az egyenlet a következő lesz:

 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) 

Ahol,

Y= Output/Response változó

bináris keresési fa]

b0, b1, b2, b3, bn....= A modell együtthatói.

x1, x2, x3, x4,...= Különféle Független/jellemző változó

Feltételezések többszörös lineáris regresszióhoz:

  • A lineáris kapcsolat léteznie kell a Target és a prediktor változók között.
  • A regressziós reziduumoknak meg kell lenniük normál eloszlású .
  • Az MLR kevés ill nincs multikollinearitás (a független változó közötti korreláció) az adatokban.

Többszörös lineáris regressziós modell megvalósítása Python használatával:

Az MLR Python használatával való megvalósításához az alábbi problémánk van:

Problémaleírás:

Van egy adatkészletünk 50 induló vállalkozás . Ez az adatkészlet öt fő információt tartalmaz: Egy pénzügyi év kutatás-fejlesztési ráfordításai, adminisztrációs ráfordításai, marketingköltségei, állapota és nyeresége . Célunk, hogy olyan modellt alkossunk, amivel könnyen megállapítható, hogy melyik cég profitál maximálisan, és melyik a leginkább befolyásoló tényező egy cég profitjára.

Mivel a Profitot meg kell találnunk, ezért ez a függő változó, a másik négy változó pedig független változó. Az alábbiakban bemutatjuk az MLR-modell bevezetésének fő lépéseit:

    Adatok előfeldolgozási lépései Az MLR modell illesztése az edzőkészlethez A teszthalmaz eredményének előrejelzése

1. lépés: Adat-előfeldolgozási lépés:

A legelső lépés azKönyvtárak importálása:Először importálni fogjuk a könyvtárat, amely segít a modell felépítésében. Alább található a hozzá tartozó kód:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 
    Adatkészlet importálása:Most importáljuk az adatkészletet (50_CompList), amely az összes változót tartalmazza. Alább található a hozzá tartozó kód:
 #importing datasets data_set= pd.read_csv(&apos;50_CompList.csv&apos;) 

Kimenet: Az adatkészletet a következőképpen kapjuk meg:

Többszörös lineáris regresszió

A fenti kimeneten jól látható, hogy öt változó van, amelyekben négy változó folyamatos, egy pedig kategorikus változó.

    Függő és független változók kinyerése:
 #Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values 

Kimenet:

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

Ahogy a fenti kimenetben is láthatjuk, az utolsó oszlop olyan kategorikus változókat tartalmaz, amelyek nem alkalmasak közvetlenül a modell illesztésére. Tehát ezt a változót kódolnunk kell.

Dummy változók kódolása:

Mivel van egy kategorikus változónk (State), amely közvetlenül nem alkalmazható a modellre, ezért azt kódoljuk. A kategorikus változó számokba való kódolásához a LabelEncoder osztály. De ez nem elegendő, mert még mindig van valamilyen relációs rendje, ami rossz modellt hozhat létre. Tehát a probléma eltávolítása érdekében használjuk OneHotEncoder , amely létrehozza a dummy változókat. Alább található a hozzá tartozó kód:

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

Itt csak egy független változót kódolunk, amely állapot, mivel a többi változó folytonos.

Kimenet:

Többszörös lineáris regresszió

Amint a fenti kimenetben láthatjuk, az állapotoszlop álváltozókká (0 és 1) lett konvertálva. Itt minden álváltozó oszlop egy állapotnak felel meg . Ezt úgy tudjuk ellenőrizni, hogy összehasonlítjuk az eredeti adatkészlettel. Az első oszlop megfelel a Kalifornia állam , a második oszlop megfelel a Florida állam , a harmadik oszlop pedig a New York állam .

js csere

Jegyzet:Nem szabad az összes álváltozót egyszerre használni, ezért 1-gyel kevesebbnek kell lennie, mint a dummy változók száma, különben álváltozó-csapdát hoz létre.

  • Most egyetlen kódsort írunk, hogy elkerüljük a hamis változók csapdáját:
 #avoiding the dummy variable trap: x = x[:, 1:] 

Ha nem távolítjuk el az első álváltozót, akkor az multikollinearitást vezethet be a modellben.

Többszörös lineáris regresszió

Amint a fenti kimeneti képen láthatjuk, az első oszlopot eltávolítottuk.

  • Most felosztjuk az adatkészletet képzési és tesztkészletre. Ennek kódja az alábbiakban található:
 # 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) 

A fenti kód felosztja adatkészletünket egy képzési készletre és egy tesztkészletre.

Kimenet: A fenti kód felosztja az adatkészletet képzési készletre és tesztkészletre. A kimenetet a Spyder IDE-ben megadott változókezelő opcióra kattintva ellenőrizheti. A tesztkészlet és az edzéskészlet az alábbi képen fog kinézni:

Tesztkészlet:

Többszörös lineáris regresszió

Edzőkészlet:

Többszörös lineáris regresszió

Jegyzet:Az MLR-ben nem fogunk funkcióméretezést végezni, mivel arról a könyvtár gondoskodik, így nem kell manuálisan elvégeznünk.

lépés: 2. MLR modellünk felszerelése az oktatókészlethez:

Most jól előkészítettük az adatkészletünket a képzés biztosításához, ami azt jelenti, hogy a regressziós modellünket illesztjük a képzési halmazhoz. Hasonló lesz, mint ahogy mi tettük Egyszerű lineáris regressziós modell. Ennek kódja a következő lesz:

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

Kimenet:

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

Most sikeresen betanítottuk modellünket a betanítási adatkészlet segítségével. A következő lépésben a modell teljesítményét teszteljük a tesztadatkészlet segítségével.

lépés: 3. A tesztsorozat eredményeinek előrejelzése:

Modellünk utolsó lépése a modell teljesítményének ellenőrzése. Ezt úgy fogjuk megtenni, hogy megjósoljuk a tesztkészlet eredményét. Az előrejelzéshez létrehozunk a y_pred vektor. Alább található a hozzá tartozó kód:

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

A fenti kódsorok végrehajtásával egy új vektor jön létre a Varable Explorer opció alatt. Modellünket tesztelhetjük az előrejelzett értékek és a teszthalmaz értékek összehasonlításával.

Kimenet:

Többszörös lineáris regresszió

A fenti kimenetben előrejelzett eredménykészletet és tesztkészletet tartalmaztunk. A modell teljesítményét a két értékindex indexenkénti összehasonlításával ellenőrizhetjük. Például az első index becsült értéke: 103015 $ profit és teszt/valós értéke 103282 dollár nyereség. A különbség csak az 267 dollár , ami jó előrejelzés, így végül itt elkészült a modellünk.

  • A képzési adatkészlet és a tesztadatkészlet pontszámát is ellenőrizhetjük. Alább található a hozzá tartozó kód:
 print(&apos;Train Score: &apos;, regressor.score(x_train, y_train)) print(&apos;Test Score: &apos;, regressor.score(x_test, y_test)) 

Kimenet: A pontszám:

 Train Score: 0.9501847627493607 Test Score: 0.9347068473282446 

A fenti pontszám azt mutatja, hogy modellünk 95%-ban pontos a betanítási adatkészlettel, és 93%-ban pontos a tesztadatkészlettel.

Jegyzet:A következő témakörben megnézzük, hogyan javíthatjuk a modell teljesítményét aVisszafelé kiküszöbölésfolyamat.

A többszörös lineáris regresszió alkalmazásai:

A többszörös lineáris regressziónak főként két alkalmazása létezik:

  • A független változó hatékonysága az előrejelzésben:
  • A változások hatásának előrejelzése:

latex szövegméretek