← Yazılar

Veri Bilimi Notları 5: Lineer regresyon

Regresyon kavramı, basit lineer regresyon ve en küçük kareler yöntemi. Sonunda scikit-learn ile küçük bir uygulama.

·4 dk okuma·İlk olarak LinkedIn üzerinde yayımlandı

Bu yazının İngilizce sürümü de var

İçindekiler
  1. Regresyon Kavramı
  2. Basit lineer regresyon
  3. Least Square Method (En Küçük Kareler Yöntemi)
  4. Python Uygulaması

Veri Bilimi Notları 5: Lineer regresyon

All the statistics in the world can’t measure the warmth of a smile.

Bu seride bulunan önceki yazılarım:

Veri Bilimi Notları 1, Makine öğrenmesine giriş

Veri Bilimi Notları 2, Makine öğrenmesi ve Python

Veri Bilimi Notları 3, Veri önişleme

Veri Bilimi Notları 4, Özellik ölçeklendirme

Regresyon Kavramı

Bu yazımla beraber regresyon türlerine giriş yapacağız. Lineer regresyon’a girmeden önce size regresyon kavramından bahsetmek isterim. Regresyon dediğimiz kavram temel olarak bizim değişkenler arasındaki fonksiyonu matematiksel olarak ifade şeklimizdir. Yani iki (veya daha fazla) farklı argümanın birbiri arasındaki bağıntıları formülize etmektir.

Basit lineer regresyon

Grafik No.1

Grafik No.1 : Maaş ve Tecrübe Arasındaki Lineer Regresyon Tablosu

Doğrusal olarak modellenen ve girdi çıktılar arasında ilişki kuran bir analiz yöntemidir. Basit Lineer Regresyon ve Çoklu Lineer Regresyon olmak üzere ikiye ayrılır. Yukarıdaki örnekte de gördüğünüz üzere maaş ve tecrübe arasındaki bağıntı lineer regresyon yöntemiyle analiz edilmiştir. Tecrübe yılı ve maaş arasında doğrusal bi oran olduğu açık bir şekilde gözükmektedir. İsterseniz bunu daha detaylı bir biçimde açıkladıktan sonra yukarıdaki resme tekrar dönelim. Grafikleri karıştırmamamız için numaralandırdım. Sizler de şekil, resim ve grafik numaralarına dikkat ederek yazıyı takip edebilirsiniz. Lineer regresyonu sizlere tanımsal bir grafik üzerinden aktardıktan sonra Grafik No.1’e tekrar döneceğiz.

Grafik No.2

Grafik No.2 : Lineer Regresyon, Tanımsal Grafik

Yukarıdaki grafiğe baktığımız zaman birçok kavram görmekteyiz. Öncelikle bu kavramları teker teker açıklayıp sonra uygulama kısmına geçebiliriz.

Y: Lineer regresyon modelinin tahmin ettiği, sıralandığında doğrusal bir çizgi oluşturan değerlerdir.

a= Denklemin içindeki başlangıç değişkenidir. **Grafik No.1’**de 40000 sayısını ifade etmektedir.

Expected(Y): Lineer regresyon modelinin tahminde bulunduğu değerdir. Diyelim ki bir şirkette 1 yıllık tecrübeli birisi 4000 lira maaş alıyor. Aynı şirkette 3 yıllık çalışan birisi 12000 lira maaş alıyor. Lineer Regresyon modeli bu veri setinden 2 yıllık birisinin maaşını 8000 lira olarak tahmin eder. Lakin bu şirkette 2 yıllık tecrübeli insanların maaşı 9000 lira olabilir. Expected Y bize lineer regresyon modelinin tahminlerini gösterir.

Observed(y): Tahmin edilen test verisinin tahmin edilen değerini değil, test setindeki değerini ifade eder.

Residual: Residual (artık değer) kavramı bize tam olarak test verisetindeki gerçek değerle, lineer regresyon modelimizin tahmin ettiği değer arasındaki farkı ifade eder. Yani aslında buna gerçek değerin regresyon değerine uzaklığı, başka bir deyişle hata payı diyebiliriz.

Linear Regression Line: Üzerinde lineer regresyon modelinin tahmin ettiği değerlerin (Expected (Y)‘lerin) bulunduğu lineer regresyon çizgisidir.

Denklem No.1 : Lineer Regresyon Denklemi

Lineer regresyon denklemine baktığımızda y’nin bağımlı değişken, x1’in bağımsız değişken olduğunu görürüz.

Eğer bağımlı değişken ve bağımsız değişken kavramlarını açıklamak gerekirse Grafik No.1’e dönmemiz bizim için yeterli olacaktır. Bahsedilen grafikte işteki tecrübe yılının değişimiyle beraber maaşın değişiminin gerçekleştiği açıkça görülmektedir. Yani biz burada tahmin etmek istediğimiz ve belirli değişkenleri değiştirdiğimiz zaman değişen değişken türüne yani maaş’a bağımsız değişken deriz. Bağımlı değişkenler ise bağımsız değişkenin değişimi formülize edildiğinde formülde yer alan, değişime etkiyen tüm değişkenlerdir. Grafik No.1’deki tek bağımsız değişken olan işteki tecrübe yılı da böyledir.

Least Square Method (En Küçük Kareler Yöntemi)

En küçük kareler yöntemi lineer regresyonun en temel kavramıdır diyebiliriz. Tüm algoritma bunun üzerine inşa edilmiştir. İsterseniz ne olduğuna gelelim. Grafik No.2’deki residual kavramına (lineer regresyon modeli tarafından tahmin edilen değer ile test setinde bulunan gerçek değer arasındaki uzaklık farkı) bakacak olursak bunun aslında modelimizin tahmininin hata payı olduğunu göreceğiz. Şimdi şöyle düşünelim: Her tahmin değerinin bir residual değeri varsa ve bu 0’dan (bu tahmin edilen değerin gerçek değerle aynı olduğunu gösterir tebrikler) sonsuza kadar ilerliyorsa bizim tüm tahminlerin residual değerlerinin karelerini (eğer gerçek değer tahmin edilenden daha düşükse residual negatif değer alır bundan dolayı karelerini almamız gerekmekte) toplamamız bize hata paylarının toplamına denk gelen bir sayı verecektir. İşte biz öyle bir çizgi (linear regression line) oluşturacak lineer regresyon modeli yapmalıyız ki, bu çizgi residualları minimize etsin, yani bize en küçük hata payı toplamını versin.

Python Uygulaması

Öncelikle aşağıdaki tablodaki gibi bir csv dosyası oluşturalım.

Sonrasında aşağıdaki Python kodlarını derleyicimize yazalım.

#Kütüphaneleri ekleme
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

#Verisetini ekleme
dataset = pd.read_csv('maasverisi.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 1].values

# Veri setinin bağımsız değişken obje dizisini(yani X) ve bağımlı değişken obje dizisini (yani y) ayrı ayrı eğitim seti ve test seti olarak ikiye bölme
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3, random_state = 0)

#Lineer regresyon modelini eğitim setine göre eğitme
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train,y_train)

#Test setine göre tahminde bulunma
y_pred = regressor.predict(X_test)
#Test sonuçlarını görselleştirme
plt.scatter(X_test, y_test, color ='blue')
plt.plot(X_train, regressor.predict(X_train), color='orange')
plt.title('Maaş ve Tecrübe')
plt.xlabel('Tecrübe Yılı')
plt.ylabel('Maaş')
plt.show()

Alacağımız sonuç aşağıdaki gibi olacaktır.

Bu yazımızda basit lineer regresyon nedir, en küçük kareler yöntemi nedir gibi sorulara cevap aramaya çalıştık. Umarım sizin için faydalı olmuştur. Çoklu lineer regresyon yazımda görüşmek üzere.

İyi çalışmalar dilerim :)

Abdullah Faruk ÇİFTLER