Matematiksel Temelleri ile Lineer Regresyon

Secilay Kutal
Deeper Deep Learning TR
6 min readMar 16, 2021

--

Bu yazı AdresGezgini Ar-Ge Merkezi’nde gerçekleştirdiğimiz çalışmalar kapsamında yazılmıştır.

Bu yazımızda yalnızca lineer regresyon detayları üzerinde durulacaktır. Karşılaşılacak bazı temel kavramların detayları için bir diğer yazımızı ziyaret edebilirsiniz.

Derin öğrenme konularına yeni başlayan biri için en temel konulardan biri lineer regresyondur. Basitçe tanımlanması gerekirse lineer regresyon, bir değişkenin başka bir (veya daha fazla) değişkene bağlı olarak tahmin edilmesi konularında, başka bir deyişle bir (veya daha fazla) bağımsız değişken ile bir bağımlı değişken arasındaki ilişkinin tanımlanması amacıyla kullanılmaktadır.

Lineer regresyonun temelden anlaşılması için konuya lineer (doğrusal) ilişki ve doğrunun eğimi üzerinden giriş yapacağız.

Doğrusal İlişki ve Eğim

Basit bir örnek ile konuya giriş yapalım. Bir bilgisayarın satış fiyatı ile özelliklerini ele alalım. Bilgisayarın RAM kapasitesi, SSD giriş sayısı ve işlemci nesli gibi özellikleri arttıkça fiyatı da artacaktır. Bu doğrusal orantılı ilişkiye doğrusal ilişki denmektedir.

İki bileşen arasındaki doğrusal ilişki matematiksel olarak bir koordinat düzlemi üzerindeki doğru olarak ifade edilebilir.

Doğrunun eğimi, bu doğru üzerinde bulunan iki nokta arasındaki dikey değişimin yatay değişime oranıdır.

y eksenine göre sağa yatık doğruların eğimi pozitif, sola yatık doğruların eğimi negatiftir

Lineer Regresyon

Doğrusal ilişki üzerine kurulu olan lineer regresyon tahmin etmek istediğimiz verinin (örneğimizde bilgisayar fiyatı) elimizdeki özelliklere (ram kapasitesi, ssd giriş sayısı, işlemci nesli) bağlılığını ifade eden bir denklem kullanır.

Burada w değerleri ağırlık (weight), b değeri bias (ofset) olarak tanımlanır. Bunun yanı sıra ram, ssd ve işlemci olarak ifade edilen değişkenler özellik (feature) olarak tanımlanır. Fiyat değişkenimiz ise bu özellikler doğrultusunda tahmin (predict) edilir.

Makine öğrenmesi dilinde lineer regresyon işlemi şu genelleme ile ifade edilir:

Burada d feature sayısını temsil eder. Bu genelleme vektör olarak da ifade edilebilir. Vektörler işlemlerin döngüye alınarak gerçekleştirilmesindense daha az işlem gücü ve zaman gerektirirler.

Burada w ve x , d uzunluğa sahip birer vektördür. Bu iki vektörün çarpımı için ise vektör çarpımları kuralından kaynaklı olarak w vektörünün transpozu alınarak gerçekleştirilir.

Lineer regresyon da bir neural network’tür. Hatta yukarıdaki formülün nasıl o hale geldiğini bir neural network üzerinden incelemek daha sağlıklı olur:

Loss Function

Bir modelin ne kadar iyi olduğunu yapmış olduğu tahminin gerçek değere yakınlığıyla ölçebiliriz. Bu ölçüm için çeşitli formüller olsa da hepsinin genel adı kayıp fonksiyonu (loss function) olarak geçer. Kayıp fonksiyonları ile elde edilen kayıp değeri ne kadar düşükse model o kadar başarılıdır denebilir.

Loss function’lardan en temeli olan ve lineer regresyonda sıklıkla tercih edilen Mean Squared Error’u (Ortalama Kare Hata-MSE) ele alalım.

Mean Squared Error (MSE)

Bu kayıp tahmin edilen değer ile gerçek değer arasındaki farkın ortalamasının alınmasına dayanmaktadır.

Burada kayıp, l ile ifade edilirken kaybın w ve b parametrelerine bağlı olduğu görülebilir. n modeldeki tahmin (output) sayısını temsil ederken i feature sayısını temsil eder.

Kayıp fonksiyonun matematiksel incelemesi için burayı ziyaret edebilirsiniz.

Ancak loss function bulunurken tek bir noktadan alınan değer bizi yanıltabilir. Bu yüzden veri setindeki tüm noktaların doğruya olan uzaklıklarını toplayıp ortalamasını alırsak bize gerçekçi bir sonuç verecektir:

Buradaki ½ ifadesi, hataların ortalamasını almak ile karıştırılmamalıdır. Onun amacı hata olarak ölçülen mesafenin yarısının alınıp (yukarıdaki resimde kırmızı noktalar) yeni çizginin o noktalara göre çizilmesinin istenmesidir.

Geliştirilen modellerde çeşitli loss function formülleri kullanılabilir. Ana amaç kaybın hesaplanması ve sonrasında parametrelerin güncellenerek kaybın en aza indirilmesidir. Güncelleme işlemi “gradient descent” adı verilen bir hesaplama ile yapılır. Gradient descent sonucu trainable parameters yani öğrenebilir parametrelerimiz olan bias ve weights güncellenir, çizilen lineer regresyon doğrusu veri setine daha uygun bir denkleme oturtulmuş olur.

Şimdi loss function’un minimalize edilmesi üzerine bir formül gösterimi verelim:

Şimdi kodlama zamanı!

Bir veri seti üzerinden lineer regresyon eğitimi gerçekleştirelim. Sonrasındaysa bias, weight ve learning rate parametrelerinin eğitimimizi nasıl etkilediklerini ele alalım.
Bunun için makine öğrenmesi kütüphaneleri kullanmadan formüllerimizi uygulamaya çalışacağız.

Hızlandırılmış eğitim grafiği

Eğitimi anlık olarak takip ettiğimizde tahmin doğrumuzun zamanla veri setine nasıl uyum gösterdiğini gözlemleyebiliriz.

Şimdi weights, bias ve learning rate kavramlarının öğrenmeyi nasıl etkilediğini doğru ve yanlış değerleri vererek grafik üzerinden gözlemlemeye çalışalım. Bunun için grafiği anlık olarak gözlemlemek yerine kodumuzdaki “gradientdescent()” fonksiyonunu çağırıp fonksiyon parametrelerini değiştirerek grafiklerimizi çizdirdik.

Bias

Bias değerinin sıfır olması ne demektir buradan yola çıkalım. Sıfır olması demek aslında bias değerinin formülde olmaması demektir. Peki biz neden bias değerine ihtiyaç duymuşuz? Başka bir deyişle biz tüm input değerleri sıfır olduğunda yani doğrunun x=0 noktasında neden hep y=0 olmasını istememiş olabiliriz?

Bunu anlamak için bilgisayar örneğimizi biraz daha basitleştirelim ve bias’ın derinlerine inelim. Örneğimizdeki tek feature’ın ssd giriş sayısı olduğunu düşünelim. Eğer bias olmasaydı; ssd giriş sayısı 0 olduğunda yani tüm feature parametrelerimiz 0 olduğunda fiyat tahmin değerimiz de 0 olacaktı. Ancak bir bilgisayarın ssd giriş yok diye onun piyasa değeri 0 değildir. O hala kalan özellikleriyle birlikte bir bilgisayardır ve bir fiyatı vardır. İşte bias kavramı bu gibi durumlarda “gerçek hayat çözümlerine” yaklaşmamızı sağlaması ile görevlidir diyebiliriz.

Şimdi bias grafiklerini inceleyelim. (Sadece bias’ı incelemek için weight ve learning rate parametrelerini sabit tutup bias’ı değiştirdik.)

Weigth

Weight parametresi feature’ların output üzerindeki etkisini ifade eder. Örneğimize geri dönecek olursak SSD giriş sayısının fiyatımızı ne kadar arttıracağını ifade eden bir katsayı olarak düşünebiliriz. Her feature’a özgü bir parametredir.

Şimdi weight grafiklerini inceleyelim. (Sadece weight’ı incelemek için bias ve learning rate parametrelerini sabit tutup weight’ı değiştirdik.)

Learning Rate

Learning rate parametresi weight ve bias parametrelerinin güncellenmesi esnasında ne kadar yol alınacağını belirtir.

Şimdi learning rate grafiklerini inceleyelim. (Sadece learning rate’i incelemek için bias ve weight parametrelerini sabit tutup learning rate’i değiştirdik.)

Learning rate parametresinin, tahmin doğrusunun veri setine oturması esnasında geçen zaman üzerine ne kadar etkisi olduğunu gözlemleyebiliriz. Buradan yola çıkarak learning rate’in çok küçük seçilmesi durumunda optimal değere ulaşılması için epoch sayımızın artması gerektiği sonucuna varabiliriz.

Grafikte gözlemleyemediğimiz bir diğer etki ise learning rate’in çok büyük seçilmesi durumunda optimal tahmin değerine ulaşılamaması sorunudur. Örneğimizde seçtiğimiz veri seti çok doğrusal ve çok küçük olmasından kaynaklı olarak bu etki gözlemlenememiş olsa da büyük veri setlerinde bu etkiyle sıklıkla karşılaşılmaktadır.

Bu nedenle learning rate seçilirken çok küçük veya çok büyük değerler olmamasına dikkat edilmelidir.

--

--