Yazan : Åžadi Evren ÅžEKER

 Bu yazının amacı, doğrusal ilkelleme yöntemini (linear regression) açıklamaktır. Basitçe bir veri kümesinin iki boyutlu bir uzayda dağılıdığını düşünelim.

Veri kümemizdeki değerlerin iki boyutlu uzayda, yukarıdaki şekilde gösterildiğini kabul edelim. Şimdi doğrusal ilkelleme ile amaçlanan bu noktaların tamamına en yakın geçen doğruyu elde etmektir. Örneğin aşağıdaki şekilde olabilir:

Her doğrunun bir formülü olduğu gibi bu doğrunun da karakteristik bir şekilde

y= ax + b denklemine uygun bir formülü, daha doğrusu bir (a,b) ikilisi bulunacaktır.

İşte doğrusal ilkelleme, çok sayıdaki karmaşık hesaplama ve ölçümlere dayalı verinin basit bir doğruya indirgenmesi (ilkellenmesi) olarak düşünülebilir. Buradaki ama, veri kümesindeki verilerin değerlerinden böyle bir doğru denklemini elde edebilmektir.

Ardından bu doğru çeşitli amaçlar için kullanılabilir. Örneğin herhangi bir x değeri için y değerinin bulunması artık doğru denklemi ile mümkün olacağından, eksik verilerin töhmeti (imputation) veya bütün veri kümesinin tutulması yerine basitçe sadece doğrunun tutulması ve işlenmesi veya kesitirim (estimation) ve öngörü (forecasting) problemlerinin çözümünde (örneğin gelecek seneki satış oranları veya deprem tahminleri gibi problemler) ve daha pek çok veri madenciliği probleminde kullanılabilir.

Buraya kadar doğrusal ilkelleme (linear regression) konusuna hızlı bir giriş yaptıktan sonra veri kümesinin nasıl ilkellendiğini açıklayabiliriz.

Aslında doÄŸrusal ilkelleme verilen n adet nokta için ki bu noktaları {yi,xi} çifti olarak yazabiliriz, i = 0,1,2 … n olmak ÅŸartıyla.

y =ax+b şeklindeki karakteristik denklemde en az hata miktarına sahip a,b ikilisini bulmak istiyoruz.

Hata miktarını ise noktaların bu doğruya olan mesafesi olarak düşünürsek formülümüz aşağıdaki şekilde olacaktır.

Olarak yazılabilir.

Burada H ile gösterilen fonksiyon, a,b ikilisi için bütün noktaların uzaklığının ölçülüdüğü hata miktarıdır. Elbette bu bir çift fonksiyon olmalıdır yani eksi hata olmaz. Dolayısıyla kare alınmıştır. Her nokta için ayrı ayrı hatanın hesabı ise, y-a-bx değeri olarak hesaplanabilir.

İşte amacımız bu hata değerini en asgari seviyeye indirmektir.

Örnek

Konuyu bir örnek üzerinden açıklamaya çalışalım.

Örneğin 4 nokta koordinatı aşağıdaki şekilde verilmiş olsun.

(1,2)

(2,3)

(3,7)

(2,4)

Konuyu daha iyi anlayabilmek için noktaları koordinat sisteminde gösterelim:

Şimdi bütün bu noktalara en yakın geçen doğru denklemini bulmaya çalışalım:

Sadece örnek olması için hızlıca aşağıdaki şekilde nümerik bir kod yazdım ve çalıştırdım:

Neticede çalışma sonucu a=0, b=2 olarak bulundu. Bunun anlamı aşağıdaki doğrudur:

#include 
int main(){
int n[4][2] = {{1,2},{2,3},{3,7},{2,4}};
int h =1000;
int atemp,btemp;
for(int a= 0;a <10;a++){
   for(int b= 0;b <10;b++){
      for(int i = 0;i<4;i++){
        int htemp=(n[i][1]-a-b*n[i][0]) *(n[i][1]-a-b*n[i][0]) ;
        if(htemp < h){
                h = htemp;
                atemp = a;
                btemp = b;
        }
     }
   }
}
printf("a : %d b : %d",atemp,btemp);
}

Kodun çok kabaca ve sadece fikir vermek için yazıldığını hatırlatır ve bulunan değerlerin sadece tam sayılar ile sınırlı olmasından dolayı yukarıdaki gibi bir sonuç çıktığını söylemek isterim.

 

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir