Basit Lineer Regresyon Ve Gradient Descent

Halil İbrahim Hatun
4 min readJul 10, 2022

--

Öncelikle Lineer Regresyonun tanımını kısaca yapacak olursak. İki veya daha fazla değişken arasındaki ilişkinin bir doğru ile gösterilmesine Lineer Regresyon denir. Jupyter Notebook üzerinden anlatımımıza devam edelim.

Kütüphanelerimizi tanımlayalım.

Kütüphaneleri Tanımlama Ekran Görüntüsü

Kendimiz veri oluşturalım ve bu verileri 2 boyutlu düzlemde inceleyelim.

Veri oluşturma ve dağılım grafiği çizdirme kod görüntüsü
Değişkenlerin dağılım grafiği

Değişkenlerimizin değerleri koordinat düzleminde bu şekilde dağılmış gözüküyor.

Bu değişkenler için en iyi regresyon doğrusunu çizeceğiz ve bu regresyon doğrusu üzerinden tahminleme işlemini gerçekleştireceğiz.

Peki regresyon doğrusunun iyi olup olmadığını neye göre belirleyeceğiz? Öncelikle bizim amacımız bu noktalara göre en iyi doğruyu çekmek. Bu doğruyu çekerken bizim için önemli olan şey bu doğrunun eğimidir.

Lineer denklem formülü

Yukarıdaki formül bilindiği üzere basit bir doğru formülüdür. Bu formüldeki eğim w’dur. Bundan dolayı bizim amacımız bu doğruları en iyi kesecek w eğimli doğruyu bulmaktır. Yani w’nun en iyi halini bulmaktır.

Bunun için

Loss Fonksiyonu

formülü ile verdiğimiz ve değerlerine karşılık gelen değerlere ulaşıyoruz. Formüldeki m değeri veri sayımız. x(i) i’ninci x değeri, y(i) ise i’ninci y değeridir.

Bu formülü python üzerinde yazarak gerçekleştirelim ve J(w) değerlerini elde edelim.

Loss değeri hesaplayan metodu (cost function) oluşturma kod görüntüsü

Metodumuzu yukarıda tanımladık şimdi kullanmak istediğimiz w değerlerini yollayalım ve sonuçları inceleyelim.

Cost function’ı çağırma ekran görüntüsü
Metodun çıktıları

Çıkan değerleri bir grafik üzerinden görüntüleyelim.

Metod çıktılarını grafikte görtermek için kullanılan kod ekran görüntüsü
Metod çıktılarının grafikte gösterimi

Bu formüle dayanarak bardağa benzeyen bir grafik çizdik ve min max J(w) değerlerine bir çizgi koyduk.

Peki bunlar ne anlama geliyor. Biz verdiğimiz w değerlerini bir de değişkenlerimiz üzerinde bir doğru olarak görelim bakalım nasıl görünüyor.

Eğimlere göre doğruların değişkenler üzerindeki görünümü grafiği kodu
Eğimlere göre doğruların değişkenler üzerindeki görünümü grafiği

Grafikte de görüldüğü üzere en düşün J(w) değerine sahip olan w eğimli doğrunun grafiği en iyi doğruyu göstermiş oluyor.

Yani Kısacası Loss Fonksiyonu sonucunda hesaplanan J(w) değeri en küçük olan w değeri en iyi doğruyu verir. Tabi ki bu noktada overfitting’e dikkat etmek gerekmektedir. Her zaman J(w) en küçük olan değer en iyi sonuçları göstermez.

Peki biz en iyi w değerini bulmak için sürekli elle w değerlerini deneyerek mi bulacağız? Tabi ki hayır!

Gradient Descent (Gradyan Azaltma)

Belirlediğimiz learning rate’ler eşliğinde w değerini optimize etmemizi sağlar.

3 boyutlu gradient descent ekran görüntüsü
2 boyutlu gradient descent ekran görüntüsü

Bu tabloyu lineer regresyon tarafında çizdirmiştik. Genellikle J(w) değeri en düşük olan w değeri bize en iyi sonucu vermekteydi. Bunun için resimdeki kırmızı yerler azaltılarak minimize edilmeye çalışılmaktadır. Bu işlemi nasıl yapıyoruz?

Gradient descent kapalı formül

Bu formülün açılmış hali aşağıdaki gibidir.

Gradient descent açık formül

Gradyan azalma yöntemi bu formüllere dayanmaktadır. Bu formülde önemli olan hususlardan bazılarını söylemek isterim.

  • w ve b hesaplamalarda eşzamanlı çalışır. Yani hesaplanan yeni w değeri b değeri hesaplamasında kullanılmaz da eski w değeri kullanılır.
  • Learning rate değeri çok az olursa baby step dediğimiz küçük adımlar ile optimize edilir. Bu istemediğimiz bir durumdur çünkü gradyan azaltma işlemini gereksiz uzatır. Eğer learning rate değerini çok büyük yaparsak bu sefer de çok büyük adımlar attığı için optimize edilemeyecek hale gelmektedir. Bunun için uygun learning rate değerini seçmek önemlidir.
Learning rate’e göre adım değişimleri gösterimi ekran görüntüsü

Python Uygulama

Öncelikle gradyan hesaplama fonksyonumuzu yukarıdaki formüle dayanarak yazalım.

formülasyonun kesilmiş hali
gradyan hesaplama metodu kodu

Şimdi üsteki formülün hepsini yani gradyan azaltma fonksiyonunu yazalım.

Gradient descent hesaplama metodu kodu

Yukarıdaki metodumuzu çağıralım ve sonucumuzu gözlemleyelim.

Gradient descent metodunu çağırma kodu
Gradient descent metodu çıktısı
Gradient descent’in uygulanışı grafik kodu
Gradient descent’in uygulanışı grafik gösterimi

Gradyan Azaltma işleminin ardından görüldüğü üzere git gide J(w) değerimiz düşmüş yani optimizasyon işlemi gerçekleşmiştir.

Okuduğunuz için çok teşekkür ediyorum. Tüm İslam aleminin Kurban Bayramı’nı kutluyorum.

Referans

--

--

Halil İbrahim Hatun
Halil İbrahim Hatun

No responses yet