← Yazılar

Veri Bilimi Notları 7: Polinomal regresyon

Değişkenin kuvveti 1'i geçince doğru eğriye dönüşüyor. Lineer ve polinomal regresyonun aynı veri setindeki karşılaştırması.

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

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

İçindekiler
  1. Lineer Regresyon Analizi
  2. Polinomal Regresyon Analizi
  3. Python Uygulaması
  4. Python Uygulaması Sonuçlarına Dair

Veri Bilimi Notları 7: Polinomal regresyon

Bu seride bulunan önceki yazılarım:

Herkese selam:) Hiçbir bahanesi olmayan uzun bir aradan sonra (sekiz ay kadarcık) tekrardan veri bilimi notlarımı aktarmaya devam ediyorum. Umarım keyifle okursunuz.

Regresyon Türlerinin Matematiksel Modellemesi

Lineer regresyon ve çoklu lineer regresyon bildiğiniz ve önceki notlarımda da belirttiğim üzere doğrusal ve basit denklemler oluşturan regresyon türleridir. Buradaki basit ifadesinden kastım bütün değişkenlerin kuvvetleri en fazla 1’dir. Polinomal regresyonda ise bu değişmektedir.

Polinomal Regresyonun Grafiksel Modeli

Yukarıda gördüğünüz üzere değişkenlerin sisteme etki oranı kuvvetleri oranınca değişmektedir ve en az bir değişkenin kuvveti 1’den yüksek olduğundan ötürü sistem parabolik eğri olarak modellenmektedir. Bunun bize kattığı avantaj ise, verilere uyma noktasında sistemin basit regresyonlardan daha esnek olmasıdır. Şu ana kadar birçok problemin çözümünde lineer regresyon ve çoklu lineer regresyon kullandık fakat polinomal regresyon’un da kendine bağımlı kılan kullanım alanları vardır. Mesela şu sıralar gündemde olan salgın hastalıkların yayılımını ele alalım. Tabi ki tek analiz yöntemi polinomal regresyon olmamakla beraber, bize hastalığın yayılımını, salgın hastalıkların topraklara ve popülasyon polinomundaki regresyonlar nasıl yayıldığı hakkında fikir verebilir.

Şu ana kadar ki notların her birinde belirli bir problem üzerinden ilerlemiştik. Bu notumuzdaki temel problem ise uluslarası, küresel çapta faaliyet gösteren bir firmanın çalışanlarının yıllık aldığı maaşlarının tahmini üzerine olacak. Aşağıdaki tabloyu bir dataset olarak düşüneceğiz sonrasında ise lineer regresyon ve polinomal regresyonla ayrı ayrı analizler yapacağız.

Öncelikli olarak regresyonların sonuç grafiklerini paylaşıp her zamanki gibi en son kod üzerinden açıklamalarımı yapacağım. İlk olarak önceki derslerde gördüğümüz lineer regresyonun bu veriler üzerindeki grafik analizini paylaşayım.

Lineer Regresyon Analizi

Veriseti Üzerindeki Lineer Regresyon Analizi (Mavi Çizgi)

Yukarıda gördüğünüz üzere lineer regresyon doğrusal olmayan verileri tahmin etmekte oldukça dezavantajlı konumda kalıyor. Değişkenlerinin kuvvetinin en fazla 1 olmasından dolayı parabolik bir yapıya sahip olamayan lineer regresyonu, eğriler oluşturan verisetleri üzerinde kullanmanın pek de mantıklı olmadığını görmüş oluyoruz.

Polinomal Regresyon Analizi

Veriseti Üzerindeki Polinomal Regresyon Analizi (Mavi Çizgi)

Polinomal regresyon ise parabolik bir yapıya sahip olduğundan dolayı veri setindeki veriler arasında çok daha esnek bir yapıyla tabiri caizse dolaşabilmektedir. Fakat polinomal regresyonun da bilinmesi gereken ince noktaları vardır. Mesela değişkenlerin etkime kuvvetini en doğru şekilde ayarlamalısınız.

Mesela yukarıdaki iki farklı polinomal regresyon’a baktığınızda sağdakinin daha flex olduğunu göreceksiniz. Bunun nedeni değişkenlerinin/değişkeninin regresyondaki kuvvet değerinin soldakinden daha yüksek olmasıdır. Bu polinomal regresyonda dikkat edilmesi gereken en önemli husustur. Değişkenlerin kuvvetlerinin, doğru tespit oranını tek tek deneyerek hangi kuvvet değerinin hangi değişkende avantaj sağladığını görebilirsiniz.

Python Uygulaması

Yazdığımız kod ile yukarıdaki grafikleri elde etmeye çalışacağız ve bunun dışında da tekil olarak lineer regresyon ve polinomal regresyonla pozisyon seviyesine göre noktasal bir maaş tahmini yapabileceğiz.

# Polinomal Regresyon

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

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

# Lineer regresyon için veri setini eğitme
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)

# Polinomal regresyon için veri setini eğitme
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 4)
X_poly = poly_reg.fit_transform(X)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)

# Lineer regresyon sonuçlarını görselleştirme
plt.scatter(X, y, color = 'red')
plt.plot(X, lin_reg.predict(X), color = 'blue')
plt.title('Lineer Regresyon')
plt.xlabel('Pozisyon Seviyesi')
plt.ylabel('Maaş')
plt.show()

# Polinomal regresyon sonuçlarını görselleştirme
plt.scatter(X, y, color = 'red')
plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color = 'blue')
plt.title('(Polinomal Regresyon)')
plt.xlabel('Pozisyon Seviyesi')
plt.ylabel('Maaş')
plt.show()

# Pozisyon seviyesine göre tekil lineer regresyon tahmini yapma
lineertahmin = lin_reg.predict([[6.5]])

# Pozisyon seviyesine göre tekil polinomal regresyon tahmini yapma
polinomaltahmin = lin_reg_2.predict(poly_reg.fit_transform([[6.5]]))

Python Uygulaması Sonuçlarına Dair

lineertahmin = lin_reg.predict([[6.5]])

Kod üzerinde yazdığımız yukarıdaki tahmin 330378 olarak çıkacaktır. Fakat bu gerçekteki değerin oldukça üzerindedir.

polinomaltahmin = lin_reg_2.predict(poly_reg.fit_transform([[6.5]]))

Yukarıdaki değer ise 158862 civarında bir değer olarak 6. 5 seviyesinin maaşına neredeyse birebir bir değer olarak çıkacaktır. Bu tahminler de polinomal regresyonun önemini bizlere anlatmaktadır.

Sabırla okuduğunuz için teşekkürler. Umarım bir 8 ay daha geçmeden bir sonraki yazı yani Destek Vektör Regresyonu gelir bu yazı yazma rüzgarıyla beraber :))

Kendinize iyi bakın ve sağlıcakla kalın.

abdullahfaruk