logo

Çoklu doğrusal gerileme

Önceki konuda, yanıt değişkenini (Y) modellemek için tek bir Bağımsız/Tahmin Edici(X) değişkeninin kullanıldığı Basit Doğrusal Regresyon'u öğrendik. Ancak yanıt değişkeninin birden fazla yordayıcı değişkenden etkilendiği çeşitli durumlar olabilir; bu gibi durumlarda Çoklu Doğrusal Regresyon algoritması kullanılır.

Ayrıca Çoklu Doğrusal Regresyon, yanıt değişkenini tahmin etmek için birden fazla yordayıcı değişken gerektirdiğinden Basit Doğrusal regresyonun bir uzantısıdır. Bunu şu şekilde tanımlayabiliriz:

Çoklu Doğrusal Regresyon, tek bir bağımlı sürekli değişken ile birden fazla bağımsız değişken arasındaki doğrusal ilişkiyi modelleyen önemli regresyon algoritmalarından biridir.

Örnek:

CO tahmini2Emisyon, bir arabanın motor boyutuna ve silindir sayısına bağlıdır.

MLR ile ilgili bazı önemli noktalar:

  • MLR için bağımlı veya hedef değişken (Y) sürekli/gerçek olmalıdır, ancak yordayıcı veya bağımsız değişken sürekli veya kategorik formda olabilir.
  • Her özellik değişkeni, bağımlı değişkenle doğrusal ilişkiyi modellemelidir.
  • MLR, çok boyutlu bir veri noktaları uzayına bir regresyon çizgisi sığdırmaya çalışır.

MLR denklemi:

Çoklu Doğrusal Regresyonda, hedef değişken (Y), birden fazla yordayıcı değişken x'in doğrusal bir kombinasyonudur.1, X2, X3, ...,XN. Basit Doğrusal Regresyonun bir geliştirmesi olduğundan, aynı şey çoklu doğrusal regresyon denklemi için de uygulandığında denklem şu şekilde olur:

 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) 

Nerede,

Y= Çıkış/Yanıt değişkeni

niyet niyet

B0, B1, B2, B3, BN....= Modelin katsayıları.

X1, X2, X3, X4,...= Çeşitli Bağımsız/özellik değişkeni

Çoklu Doğrusal Regresyona İlişkin Varsayımlar:

  • A Doğrusal ilişki Hedef ve yordayıcı değişkenler arasında bulunmalıdır.
  • Regresyon artıkları şöyle olmalıdır: normal dağılım .
  • MLR çok az şey varsayar veya çoklu bağlantı yok (bağımsız değişkenler arasındaki korelasyon).

Çoklu Doğrusal Regresyon modelinin Python kullanılarak uygulanması:

Python kullanarak MLR'yi uygulamak için aşağıdaki problemimiz var:

Sorun Açıklaması:

elimizde bir veri seti var 50 yeni kurulan şirket . Bu veri kümesi beş ana bilgi içerir: Bir mali yıl için Ar-Ge Harcaması, Yönetim Harcaması, Pazarlama Harcaması, Devlet ve Kâr . Amacımız hangi şirketin maksimum kâra sahip olduğunu ve bir şirketin kârını en çok etkileyen faktörün hangisi olduğunu kolaylıkla tespit edebilecek bir model oluşturmaktır.

Kârı bulmamız gerektiğinden bu bağımlı değişkendir ve diğer dört değişken bağımsız değişkendir. MLR modelini dağıtmanın ana adımları aşağıda verilmiştir:

    Veri Ön İşleme Adımları MLR modelinin eğitim setine yerleştirilmesi Test setinin sonucunu tahmin etme

Adım-1: Veri Ön İşleme Adımı:

İlk adımKitaplıkları içe aktarma:Öncelikle modelin oluşturulmasına yardımcı olacak kütüphaneyi içe aktaracağız. Aşağıda bunun kodu verilmiştir:

 # importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd 
    Veri kümesi içe aktarılıyor:Şimdi tüm değişkenleri içeren veri kümesini (50_CompList) içe aktaracağız. Aşağıda bunun kodu verilmiştir:
 #importing datasets data_set= pd.read_csv(&apos;50_CompList.csv&apos;) 

Çıktı: Veri setini şu şekilde alacağız:

Çoklu doğrusal gerileme

Yukarıdaki çıktıda, dört değişkenin sürekli ve birinin kategorik değişken olduğu beş değişkenin olduğunu açıkça görebiliyoruz.

    Bağımlı ve bağımsız Değişkenlerin çıkarılması:
 #Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values 

Çıktı:

Çıkış[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) 

Yukarıdaki çıktıda görebileceğimiz gibi son sütun, modele uyum sağlamak için doğrudan uygulamaya uygun olmayan kategorik değişkenleri içermektedir. Bu yüzden bu değişkeni kodlamamız gerekiyor.

Kukla Değişkenlerin Kodlanması:

Linux işletim sistemi

Modele doğrudan uygulanamayan bir kategorik değişkenimiz (Durum) olduğundan onu kodlayacağız. Kategorik değişkeni sayılara kodlamak için şunu kullanacağız: Etiket Kodlayıcı sınıf. Ancak bu yeterli değil çünkü hâlâ bazı ilişkisel düzenleri var ve bu da yanlış bir model yaratabilir. Bu sorunu ortadan kaldırmak için kullanacağız OneHotEncoder , bu da kukla değişkenleri yaratacaktır. Aşağıda bunun için kod var:

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

Burada yalnızca bir bağımsız değişkeni kodluyoruz; diğer değişkenler sürekli olduğundan durum durumudur.

Çıktı:

Çoklu doğrusal gerileme

Yukarıdaki çıktıda görebileceğimiz gibi durum sütunu kukla değişkenlere (0 ve 1) dönüştürülmüştür. Burada her kukla değişken sütunu bir Duruma karşılık gelir . Orijinal veri seti ile karşılaştırarak kontrol edebiliriz. İlk sütun şuna karşılık gelir: Kaliforniya Eyaleti ikinci sütun şuna karşılık gelir: Florida Eyaleti ve üçüncü sütun şuna karşılık gelir: New York Eyaleti .

Not:Tüm kukla değişkenleri aynı anda kullanmamalıyız, dolayısıyla toplam kukla değişken sayısından 1 eksik olmalıdır, aksi takdirde kukla değişken tuzağı oluşturacaktır.

  • Şimdi yapay değişken tuzağından kaçınmak için tek satırlık bir kod yazıyoruz:
 #avoiding the dummy variable trap: x = x[:, 1:] 

Eğer ilk kukla değişkeni kaldırmazsak, bu durum modelde çoklu doğrusallık ortaya çıkarabilir.

Çoklu doğrusal gerileme

Yukarıdaki çıktı görselinde görebileceğimiz gibi ilk sütun kaldırılmıştır.

  • Şimdi veri setini eğitim ve test setine ayıracağız. Bunun kodu aşağıda verilmiştir:
 # 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) 

Yukarıdaki kod veri setimizi eğitim seti ve test seti olarak ikiye ayıracaktır.

Çıktı: Yukarıdaki kod veri setini eğitim seti ve test seti olarak ikiye ayıracaktır. Spyder IDE'de verilen değişken explorer seçeneğine tıklayarak çıktıyı kontrol edebilirsiniz. Test seti ve eğitim seti aşağıdaki resimdeki gibi görünecektir:

Deneme seti:

Çoklu doğrusal gerileme

Eğitim Seti:

Çoklu doğrusal gerileme

Not:MLR'de özellik ölçeklendirme kütüphane tarafından halledildiği için yapmayacağız, dolayısıyla manuel olarak yapmamıza gerek yok.

Adım: 2- MLR modelimizin Eğitim setine yerleştirilmesi:

Artık eğitim sağlamak için veri setimizi iyi hazırladık, bu da regresyon modelimizi eğitim setine sığdıracağımız anlamına geliyor. Daha önce yaptığımıza benzer olacak Basit Doğrusal Regresyon modeli. Bunun kodu şöyle olacaktır:

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

Çıktı:

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

Artık modelimizi eğitim veri setini kullanarak başarıyla eğittik. Bir sonraki adımda test veri setini kullanarak modelin performansını test edeceğiz.

Adım: 3- Test seti sonuçlarının tahmini:

Modelimizin son adımı modelin performansını kontrol etmektir. Bunu test seti sonucunu tahmin ederek yapacağız. Tahmin için bir oluşturacağız y_pred vektör. Aşağıda bunun kodu verilmiştir:

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

Yukarıdaki kod satırlarını çalıştırarak değişken explorer seçeneği altında yeni bir vektör oluşturulacaktır. Tahmin edilen değerler ile test set değerlerini karşılaştırarak modelimizi test edebiliriz.

Çıktı:

Çoklu doğrusal gerileme

Yukarıdaki çıktıda sonuç setini ve test setini tahmin ettik. Bu iki değeri indeks bazında karşılaştırarak model performansını kontrol edebiliriz. Örneğin, ilk indeksin tahmin edilen değeri şu şekildedir: 103015$ kârı ve test/gerçek değeri 103282$ kâr. Fark sadece 267 dolar ki bu iyi bir tahmin, yani sonunda modelimiz burada tamamlandı.

javascript tıklamayla
  • Ayrıca eğitim veri kümesi ve test veri kümesinin puanını da kontrol edebiliriz. Aşağıda bunun kodu verilmiştir:
 print(&apos;Train Score: &apos;, regressor.score(x_train, y_train)) print(&apos;Test Score: &apos;, regressor.score(x_test, y_test)) 

Çıktı: Skor şu:

 Train Score: 0.9501847627493607 Test Score: 0.9347068473282446 

Yukarıdaki puan, modelimizin eğitim veri seti ile %95, test veri seti ile %93 doğru olduğunu göstermektedir.

Not:Bir sonraki konuda modelin performansını nasıl artırabileceğimizi göreceğiz.Geriye Doğru Elemeişlem.

Çoklu Doğrusal Regresyonun Uygulamaları:

Çoklu Doğrusal Regresyonun esas olarak iki uygulaması vardır:

  • Bağımsız değişkenin tahmin üzerindeki etkinliği:
  • Değişikliklerin etkisini tahmin etmek: