Lineer Regresyon’un Matematiği

Kadir GÜZEL
5 min readApr 15, 2019

--

Bu yazıda makina öğrenmesinde sıkça kullanılan doğrusal (lineer) regresyon yöntemini gerçek bir problemde arka planda çalışan matematiği ile adım adım anlatmaya çalışacağım.

Bilgi

İki ya da daha çok nicel değişken arasındaki matematiksel ilişkiyi incelemeye yarayan istatistiksel bir yöntemdir. Elimizdeki dizi girdi (x) değişkenine göre model kendini uyarlar. Bu değişkenler dizisi kullanılarak çıktı değişkenini (y) belirlenir. Y değişkeni tahmin edilen sonuç çıktısıdır.

Değişkenler arasındaki doğrusal ilişkinin fonksiyonel bilgisinin bulunmasını sağlar. Bu yöntem sayesinde değişkenlerden birinin değeri bilindiğinde diğeri hakkında sayısal tahminleme yapılır. Etiket verileri bulunan sınıflandırma verileri için kullanılmaz. Nümerik verilerde tahminleme için bu yöntem kullanılır. Sonuç sayısal bir değerdir.

Eğri Uydurma

İki niceliksel değişken arasındaki eğilimi anlamak istediğimizde eğri uydurulması gerekmektedir. Verilere en iyi uyan bir çizgi, her bir veri noktası için hatanın en küçük olan doğrudur. Bunun için en çok kullanılan yöntem en küçük kareler metodudur.

Çıktı ile hedef değeri arasındaki karesel farkların toplamı bize hata veya maliyet (cost) fonksiyonu verir. Bu maliyet kare hata (Square Error) formülü ile hesaplanır.

Hata fonksiyonunun minimum olmasını istiyoruz. Bunun için bu denklemin lokal minimumunu doğru iteratif şekilde yakınsamalıyız. Bir fonksiyonun lokal minimumunu gitmek için gradient descent (azalma) algoritması kullanılır. Bu algoritma denklemin lokal minimuna yakınsamak için birinci türev kullanır.

Gradient descent algoritmasında yakınsama yönü gradient doğrultusuna ters yöndeki bir doğrultu üzerinde hareket edilir. O yönde minimum nokta ile belli bir adım miktarı veya öğrenme katsayısı (learning rate) ile çarpılarak bir sonraki yeni ağırlık bulunur.

Toplam hata oranı minimum bir orana geldi ise eğitime son verilir. Ya da belli bir iterasyon sayısına ulaşıldığında yine eğitime son verilebilir. Böylece ağırlıklar(w1,w2 …) istenen optimal değerlere ulaşmış ve en uygun eğri uydurulmuştur. Test örneği artık test edilebilir ve yeni gelen dinamik veriler bu ağırlıklar kullanılarak tahminlenebilir.

Yukarıda anlatılan teorik bilgileri gerçek bir örnek üzerinde adım adım uygulayalım.

Problem: (X) girdi değişken dizisi ve (Y) sonuç dizisine göre lineer bir model uyarlayalım. Bu noktalara göre en iyi uyan doğrunun ağırlıklarını matematiksel olarak hesaplayalım.

X = [1.65, 1.23, 2.77, 1.85, 3.08, 4.62, 3.58, 4.42, 4.85, 6.08, 5.65, 6.85, 6.85, 8.00, 8.96]Y = [1.18, 2.23, 1.59, 3.36, 3.82, 3.91, 6.36, 6.23, 5.18, 5.64, 8.18, 7.05, 9.50, 7.50, 9.00]

Bu noktaları çizmek istersek aşağıdaki gibi bir görüntü oluşturmaktadır.

Başlangıç parametreleri:

Ağırlıklar Θ0 ve Θ1 sıfır ve öğrenme katsayısı (learning rate (α))= 0.01 olarak atanır.

Doğru Denklemi

1. iterasyon: Doğrunun denklemine göre her nokta için yeni Y değerleri hesaplanır.

Yeni Y degerleri

Hesaplanan yeni Y değerlerinden gerçek Y dizindeki her noktanın farkı alınır. Çıkan farkın karesi alınır. Alınan bu farkların karesi her nokta için toplanarak maliyet fonksiyonu hesaplanır. Bu değer toplam hatayı verir.

Maliyet Fonksiyonu

Toplam hata 17.7361 sıfırdan çok büyük olduğu için bu fonksiyonu minimum yapacak X değerlerinin bulunması gerekmektedir. X değişkeni Θ0 ve Θ1 bağlı olduğu için Θ0 ve Θ1'e göre ayrı ayrı türevleri alınır.

Θ0 ve Θ1'e göre türev

Gradient descent algoritmasında yakınsama yönü türevin ters yöndeki bir doğrultu üzerinde hareket edilir. O yönde minimum nokta öğrenme katsayısı (learning rate) ile çarpılarak bir sonraki yeni ağırlıklar bulunur.

Yeni ağırlıkların hesaplanması

Bu ağırlıklara göre lineer doğru denklemi ve hata maliyet fonksiyonu aşağıdaki gibi olur.

h(x) = 0.05382 + 0.30339x
Uydurulan yeni doğru ve maliyet fonksiyonu

2. iterasyon: Hesaplanan ağırlıklar ile beraber doğrunun denklemi kullanılarak her X noktası için yeni Y değerleri hesaplanır.

Yeni Y degerleri

Hesaplanan yeni Y değerleri ile gerçek Y kullanılarak tekrar toplam hata hesaplanır.

Maliyet Fonksiyonu

Toplam hata 9.57509 sıfırdan veya belli bir epsilon değerinden çok büyük olduğu için yeniden Θ0 ve Θ1'e göre ayrı ayrı türevleri alınarak yeniden ağırlıklar hesaplanır.

Yeni ağırlıkların hesaplanması

Bu ağırlıklara göre lineer doğru denklemi ve hata maliyet fonksiyonu aşağıdaki gibi olur.

h(x) = 0.09285 + 0.52152x
Uydurulan yeni doğru ve maliyet fonksiyonu

Aynı şekilde iterasyonları 16. iterasyona kadar ilerletelim.

16. iterasyon: Toplam hata 0.00507 sıfıra çok yaklaştı. Bu aşamada eğitim tamamlanabilir. Ağırlıklar son kez güncellenir ve nihai denklem elde edilir.

Uydurulan yeni doğru ve maliyet fonksiyonu
Yeni ağırlıkların hesaplanması

Lineer denklemin son hali :

h(x) = 0.20652 + 1.0736x

Yeni bir örnegin çıktı bilgisi tahmin edilmek istendiğinde hesaplanan bu ağırlıklar kullanılarak çıktı bilgisi tahmin edilir.

Kodlama

Diabet regresyon verisi üzerinde 10 katli çapraz doğrulama ile doğrusal regresyon modelini kullanarak sklearn ile tahminleme yapalım.

from sklearn import datasets
from sklearn.model_selection import cross_val_predict
from sklearn import linear_model
import matplotlib.pyplot as plt

# Lineer regresyon
linear_regression_estimator = linear_model.LinearRegression()

# Verinin yüklenmesi
# 442 adet ornege ait bilgiler bulunuyor. 10 tane oznitelik

diabetes = datasets.load_diabetes()
# Hedefler
y = diabetes.target

# 10-katli capraz dogrulama
predicted = cross_val_predict(linear_regression_estimator, diabetes.data, y, cv=10)

# Cizim
fig, ax = plt.subplots()
ax.scatter(y, predicted, marker="o", s=5)
ax.plot([y.min(), y.max()], [y.min(), y.max()], 'k', lw=2)
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()

Sonuç:

Uydurulan lineer denklem

Teşekkürler…

--

--

Kadir GÜZEL
Kadir GÜZEL

No responses yet