Doğrusal regresyon, birbirleriyle bağlantılı iki değişken arasında doğrusal bir ilişki bulma yöntemidir. Matematik diliyle ifade edersek; x-y koordinat sisteminde belirlenen rastgele (xi,yi) noktalarını mümkün olan en makul doğru denklemiyle ifade etmektir. Bu yöntemi basit bir örnek üzerinden inceleyelim.
Yukarıdaki noktaları ifade eden doğru denklemimiz y = a + bx formunda olacaktır. b değeri doğrunun eğimi, a ise y eksenini kestiği noktadır. Bu doğru denklemine kullanarak grafikteki her x değeri için bulacağımız y değerini a ve b bilinmeyenlerine göre yazabiliriz. Buna ỹ diyelim. ỹ ile bizim asıl y noktalarımız arasında doğal olarak farklar olacaktır.,
Amacımız, hesaplanan hata farklarının minimum değerde olacağı doğruyu çizebilmek. Başta ifade ettiğimiz “en makul doğru denklemi” ancak bu şekilde gerçekleşebilir. Yani her x değeri için hesaplanan (y - ỹ) hata değerlerinin toplamı minimum olmalı. Burada önemli bir problemle karşı karşıyayız; hataları nasıl toplayacağız?
Minimum Hata Nasıl Bulunur?
Her x değeri için bulduğumuz y hata farklarını bir kaç yöntemle inceleyebiliriz;
Her x değeri için bulduğumuz y hata farklarını bir kaç yöntemle inceleyebiliriz;
- Toplayalım: Hataların bir kısmı negatif, bir kısmı da pozitif olacaktır. Bu sebeple hataları olduğu gibi toplarsak pozitif hatalar ile negatif hatalar birbirini yok edecek, sönümleyecektir. Öyleyse hata değerlerini olduğu gibi toplarsak anlamsız sonuçlar elde ederiz.
- Mutlak değerlerini toplayalım: Hataların mutlak değerlerini toplarsak ve bu değeri minimize etmeye çalışırsak bu defa da yüksek hataya sahip bazı doğrular hata açısından avantajlı görünür. Yani hata toplamı nümerik olarak küçük olabilir ama çizeceğimiz doğru alakasız bir hat üzerinde olabilir. Örneğin aşağıdaki şekilde soldaki durum sağdakine göre daha yüksek hatalı olmasına rağmen mutlak değere göre değerlendirme yapacak olursak soldakini seçerdik.
Yukarıdaki iki yöntem de hata yapmamıza sebep olur. Hem farklı işaretli hataların birbirini sönümlemesini önleyeceğiz hem de daha yüksek hataları ağırlıklandıracağız yani etkilerini artıracağız. Öyleyse hataların karesini almak bizi bu dertlerden kurtaracaktır. Aslında hataların çift kuvvetlerinin tamamı bizi doğru sonuca götürecektir ama 4. kuvvet ve daha yüksek kuvvetler gereksiz işlem yükü doğuracak ve 2. kuvvet ile aynı sonucu verecektir. Çünkü 2. kuvvet de hataların ağırlıklandırılması için kâfidir.
Hataların Karelerinin Toplanması
Yukarıdaki tabloda her x değeri için y - ỹ hatası olarak bulduğumuz değerleri toplamalıyız.
düzenlersek
Görülüyor ki hata fonksiyonumuz a ve b değişkenlerine bağlı. Bu fonksiyonun minimum noktasındaki a ve b değerlerini bulduğumuzda problemimizi çözmüş olacağız. Problemimizi bir fonksiyona indirgediğimize göre buna maliyet fonksiyonu diyebiliriz (ing. “cost function”).
Maliyet Fonksiyonunun Minimum Noktası
Yukarıda bulduğumuz 5a2 + 55b2 + 30ab - 34a - 112b + 63 fonksiyonunun neye benzediğine bir bakalım. Bunun en zahmetsiz yolu açık kaynak kodlu bir nümerik analiz programı olan Octave’ın online versiyonunu kullanmak. Bilgisayara indirip kurma zahmetinden kurtardığı için ve telefon ve tabletten dâhi kullanılabildiği için güzel bir alternatiftir.
https://octave-online.net/ sitesine giriyoruz ve sırasıyla şu komutları yazıyoruz;
a = -10 : 0.1 : 10
b = -10 : 0.1 : 10
F = 5*a.^2 + 55*b.^2 + 30*a.*b - 34*a - 112*b + 63
Bu şekilde -10’dan 10’a kadar a ve b dizilerini yarattık, maliyet fonksiyonumuzu yazdık.
plot3(a,b,F) komutuyla 3 boyutlu grafiği görebiliriz.
Görülüyor ki fonksiyonumuz 0’a yakın bir yerlerde minimum noktasına sahiptir. Öyleyse bu fonksiyona a ekseninden bakıp eğimleri hesaplarsak ve bu eğimin 0 olduğu yeri bulursak a eksenine göre minimum noktasını bulmuş oluruz. Keza aynı şeyi b eksenine göre de yapmalıyız.
Biliyoruz bunun matematikteki ismi kısmi türevdir.
Maliyet Fonksiyonunun kısmi türevleri
Yukarıda açıkladığımız gibi F = 5*a^2 + 55*b^2 + 30*ab - 34*a - 112*b + 63 fonksiyonunun hem a hem de b’ye göre türevlerini alıp 0’a eşitlemeliyiz. Böylece eğimin 0 olduğu noktayı bulacağımızı ve fonksiyonu minimum kılan a ve b değerlerini bulacağımızı ifade etmiştik.
Elimizde iki bilinmeyeni olan iki denklem var. Denklemin birini sönümleyici bir katsayıyla çarpıp diğeriyle toplarsak çözebiliriz.
10a + 30b = 34 (bunu -3 ile çarpıp diğeriyle toplarsak a’lar yok olur)
30a + 110b = 112
------------------------------------
-30a - 90b = -102
30a + 110b = 112
------------------------------------
20b = 10 ise b = 0.5 ve a = 1.9 buluruz.
10a + 30b = 34 (bunu -3 ile çarpıp diğeriyle toplarsak a’lar yok olur)
30a + 110b = 112
------------------------------------
-30a - 90b = -102
30a + 110b = 112
------------------------------------
20b = 10 ise b = 0.5 ve a = 1.9 buluruz.
Öyleyse aradığımız doğru denklemi y = 1.9 + 0.5x ‘dir. Şimdi bu denklemi ilk başta belirlediğimiz 5 nokta ile birlikte çizerek görelim..
Octave komutlarımız şu şekilde;

a = 0:1:6
b = 0:1:6
plot(a,b,'w')
hold on
x = [1 2 3 4 5]
y = [3 2 3 5 4]
plot(x,y,"x")
t = 0:0.1:6;
k = 1.9 + 0.5*t;
plot(t,k,'b')
b = 0:1:6
plot(a,b,'w')
hold on
x = [1 2 3 4 5]
y = [3 2 3 5 4]
plot(x,y,"x")
t = 0:0.1:6;
k = 1.9 + 0.5*t;
plot(t,k,'b')






Hiç yorum yok:
Yorum Gönder