Makine Öğrenmesi — Regresyon Algoritmaları -(3) Polynomial Linear Regression ?

Rafet KANDAR
4 min readFeb 23, 2021

--

Makine öğrenmesi regresyon algoritmaları serimize Polynomial Linear Regression ile devam ediyoruz.

Pozisyona Göre Maaş Veri Seti

Kullanılacak Veri Seti ?

→ Bu yazım içerisinde yan tarafta görmüş olduğunuz veri setinden yararlanarak konu anlatımı gerçekleştireceğim. Tamamen örnek olması amaçlı rastgele değerlerden oluşturulmuştur.

Polynomial Linear Regression Nedir ?

Basit Linear Regression ve Multiple Linear Regression konularına anlatırken, verilerin arasında doğrusal bir ilişki var demiştik. Tüm veriler arasında doğrusal bir ilişkimi olması gerekiyor ? Bazen, veriler arasında doğrusal bir ilişki olmayabilir. Bu şekilde doğrusal olmayan bir ilişkiyi açıklamanın yollarından biriside Polynomial Regression ‘ dur. Ne demek istediğimizi aşağıdaki grafiklere bakarak daha iyi anlayalım.

Basit Linear Model — Polinom Model

→ Hangi tahmin çizgisine göre tahminde bulunursak daha doğru bir sonuç alırız ? Polinom modele göre değil mi ? Evet, çünkü bu verimizin polinom modele daha uygun, yani çizginin noktalara daha yakın bir pozisyondan geçtiğini görüyoruz.

Matematiksel Olarak Polynomial Linear Regression Neyi İfade Ediyor ?

Beraber inceleyelim. Buradaki “h” polinom derecesi olarak adlandırılır. Bu dereceye göre özel adlandırmalar yapılabilir (h=2'ye kuadratik, h=3'e kübik h=4'e kuartik gibi). Formülümüzde y değişkenimiz bağımsız değişken olarak adlandırılır. Bunu bizim verimiz için maaş olarak düşünebilirsiniz ve buradaki x değişkenleri ise bizim bağımsız değişkenlerimizdir. Bunu da bizim verimiz için pozisyon olarak düşünebilirsiniz.

Peki, polinom regresyon doğrusal olmayan bir ilişkiyi temsil ediyor ise neden isminde Linear geçiyor ? diye düşünebilirsiniz. Bunun nedeni ise regresyon katsayılarının doğrusal olmasıdır.

Peki Bu Öğrendiklerimizi Python ’da Nasıl Uygulayacağız ?

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

İlk adım olarak projemiz içerisinde kullanacağımız kütüphanelerimizi import ederek başlıyoruz.

dataset = pd.read_csv('pozisyonMaasPolinom.csv', encoding = 'iso-8859-9')

Kütüphanelerimizi import ettikten sonra verilerimiz olduğu dosyanın okunması işlemini gerçekleştiriyoruz ve verimizin dağılımına göz atıyoruz.

X = dataset.iloc[:,0].values.reshape(-1,1)
y = dataset.iloc[:, 1].values.reshape(-1,1)

Daha sonra x ve y değişkenlerimizi ayırıyoruz. Buradaki X olarak oluşturduğumuz aslında verimizdeki pozisyon y olarak oluşturduğumuzda maaş verimiz. Aşağıdan göz atabilirsiniz.

# modelin basit linear regresyon ile eğitilmesi
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X, y)

Yukarıdaki grafiği incelediğimizde verimizin polinom regresyona daha uygun olduğunu görüyoruz ama biz sonuçlarımızı karşılaştırabilmek ve hangi modelin daha iyi sonuç verdiğini gözlemleyebilmek için ilk olarak basit linear regresyon ile verimizi eğitiyoruz.(son bölümde iki model arasında ki sonuçları karşılaştıracağız)

# modelin polinom regresyon ile eğitilmesi
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 3)
X_poly = poly_reg.fit_transform(X)

Polinom regresyonu uygulamadan önce verimizi hazırlamamız gerekir. Bunun için diğer regresyonlarda yaptığımız gibi sklearn kütüphanesini kullanarak PolynomialFeatures sınıfını indiriyoruz ve ikinci satırda derecesi 3 olan nesnemizi oluşturuyoruz ve oluşturduğumuz bu nesneyi kullanarak X değişkenimizi yeniden biçimlendiriyoruz.

.fit_transform → Aynı anda hem fit hem transform işlemini uygular.

degree → Oluşturacağımız polinom nesnesinin kaç derece olacağını söylüyoruz. (Biz burada derecemizi 3 seçtiğimiz için aşağıdaki gibi bir tablo çıkıyor karşımıza)

lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)

Yukarıda oluşturduğumuz X_poly değişkenini kullanarak modelimizi eğitiyoruz. Evet modelimizi hem polinom hem de basit linear regression ile eğittik artık tahminleme kısmına geçebiliriz.

# Basit Linear Regression ile tahminleme
basit_linear_regresion= lin_reg.predict(X)
# Polynomial Regression ile tahminleme
polinom_linear_regresion=lin_reg_2.predict(X_poly)

Yukarıdaki ilk kod ile basit linear regresyonu kullanarak bir tahminde bulunduk. İkinci kod ile de polinom regresyonu kullanarak bir tahminde bulunduk. Bu iki regresyonu kullanarak yaptığımız tahminlerin sonucunu aşağıdaki tablolardan inceleyebilirsiniz.

Bu tahminlerimize grafik üzerinden de inceleyerek yazımızı bitirtelim.

Linear Regression — Polynomial Regression

Evet, yazımızın sonuna geldik. Umarım sizleri sıkmamışımdır ve bu konuda bilgi sahibi olmak isteyenlere ufakta olsa faydam dokunmuştur. Başka bir yazıda görüşmek üzere …

Teşekkür Ederim

--

--