Lineer Regresyon Metodu (Linear Regression) Nedir, Nasıl Çalışır | Matematiksel Anlatımı
Lineer Regresyon (Linear Regression) makine öğrenmesinde kullanılan iki veya daha fazla değişkenin ilişikisini doğrusal yönden inceleyen bir algoritmadır.
Bu yazıda Linear Regresyon ( ingilizcesi ile Linear Regression) nasıl çalışır bunu inceleyeceğiz.
Diyelim ki elimizde bir evin alanı ve fiyatı olan bir veri kümemiz olsun. Ve bu kümenin dağılımı grafikteki gibi olsun.
Bu grafiğe bakarak bu noktalara uyan bir çizgi çizebiliriz. İşte Linear Regresyon daki amaç da bu çizgiyi en verimli şekilde yerleştirmektir. Peki hangi çizginin en verimli olacağını nasıl bileceğiz.
Yazımızda ilerlemeden bazı notasyonları gösterelim.
\( x^i \) = Model eğitimi için verilen input değişkenleri. Örnek olarak bizim elimizde sadece alan var bundan dolayı \( x ^ 1\) = Alan değişkeni olacaktır.
\( y^i \) = Tahmin edilmek istenen hedef değişkenleri. Örnek olarak bizim elimizde fiyat var ve bundan dolayı \( y ^ 1\) = Fiyat değişkeni olacaktır.
Bizim verikümemizde \( \big(x^{1}, y^{1}\big) = \big(1416, 232\big) \)olacaktır.
\( m \) = Veri kümemizin boyutu. Bizim elimizde 5 nokta olduğu için bu durumda \( m \) = 5 olacaktır.
\( n \) = Kaç tane input değişkenimizin olduğunu gösterir. Elimizde sadece Alan olduğu için şuanlık \( n = 1\).
Eğitme Kümesi (Training Set) = Eğitmek için kullandığımız kümedir. \( \big\{\left( x^i , y^i \right) ; i = 1, 2 ..... m. \big\} \)
Bu terimlere daha aşina olmak için lütfen şu Makine Öğrenmesi Terimleri yazısını okuyunuz.
Supervised Öğrenmeyi daha resmi şekilde anlatabilmek için, bizim hedefimiz verilen X ve Y lerden iyi bir tahmin edici çıkarmak. Bunu şu şekilde \( h\left(x\right) \) gösterebiliriz. Bu fonksiyon \( h \) 'e hipotez diyeceğiz. Hepimizin de bildiği üzere bir linear denklem şu formattadır. \[ y = ax + b\]
Bundan dolayı hipotez fonksiyonumuzu şu şekilde yazabiliriz. \[ h_{ \theta } \big(x\big) = \theta_{0} + \theta_{1} x_{1} \].
Burada \( \theta \)' nın şekli elimizde sadece bir tane değişken olduğu için (2, 1) matrixtir.
\[ \theta = \begin{bmatrix} \theta_{0}\\\theta_{1} \end{bmatrix} \]
Genel formüle uygularsak eğer elimize \( n \) input (girdi) değişkeni varsa, bizim ağırlık \( \theta \) matrisimizin boyutu (n+1, 1) olacaktır.
Burada \(\theta_{i}\)'lar parametre diğer adı ile ağırlık (weights) olarak adlandırılır. Hipotez fonksiyonumuzun sadece \( x_{1}\) e kadar gitmesinin sebebi ise elimizde sadece alan değişkeninin olmasıdır. Diyelim ki elimizde 3 tane değişken var bu durumda hipotez fonksiyonumuz şu şekilde olacaktır. \[ h_{ \theta } \big(x\big) = \theta_{0} + \theta_{1} x_{1} + \theta_{2} x_{2} + \theta_{3} x_{3}\]
Genelleme yapmak istersek hipotez denklemimizi \[ h \big(x\big) = \sum_0^n \theta_{i} x_{i} = \theta^{T} x \] şeklinde yazabiliriz. Ancak elimizde \( n \) tane \( x \) varken neden toplam denkleminde \( n+1 \) tane \( x \) var diye sorabilirsiniz. Bunun sebebi tamamen matematiksel kolaylık. Bu kolaylığı sağlamak için elimizdeki veriyi şu şekilde modifiye edeceğiz. \[ x_{0} = 1\] Bu kolaylıktan sonra ilk girdi verimiz (input) \( x^{1} = \left[ 1, 1416 \right] \) olacak.
\( \theta^{T} x \) işleminin sonucu lineer cebirden bildiğimiz üzere tek bir sayı çıkacaktır. Bunun sebebi ise \( \theta^{T} \) matrisinin boyutu \( \big(1, 2\big) \) ve x girdimizin boyutu ise \( \big(2, 1\big) \) ' dir. Bu matrislerin çarpımından ortaya çıkacak olan sonucun boyutu ise \( \big(1, 1\big) \) dir.
Peki bunları yaptıktan sonra bu \( \theta \) değerlerini nasıl seçeceğiz? Asıl sorulması gereken soru bu. Çünkü önceden de bahsettiğimiz üzere bu değerler bize grafiğe uyan en iyi çizgiyi verecek ve biz de böylece amacımız olan en iyi tahmin ediciyi bulacağız. Bunları bulmak için elimizde ölçüm yapabileceğimiz bir metrik olması lazım. Bunun için bizim tahminlerimiz olan \( h_{\theta}\big( x^{i} \big) \)'ların gerçek değerler olan \( y^{i} \)' lara ne kadar yakın olduğunu ölçeceğiz ve buna cost function (masraf fonksiyonu) diyeceğiz. Amacımız bu masraf fonksiyonunu olabildiğince azaltmak. Bizim Cost Fonksiyonumuz \[ J \big(\theta\big) = \frac{1}{2} \sum_1^m \big( h_{\theta} \big(x^{i}\big) - y^{i} \big) ^{2} \] şeklinde yazılabilir.
Elimizdeki bulunan ağırlık \( \theta \) ' ları iyileştirmek için kullanacağımız Gradient Descent algoritmasını bir sonraki yazımızdan inceleyebilirsiniz. Lineer Regresyonu nasıl implement edebilirim diye düşünüyorsanız da Lineer Regresyon İmplementasyonu yazısını okuyabilirsiniz. Bu yazılık bu kadar, şimdilik hoşça kalın.
REFERANSLAR:
https://en.wikipedia.org/wiki/Linear_regression
https://online.stanford.edu/courses/xcs229i-machine-learning
![]() |
| Lineer Regresyon Örneği |
Bu yazıda Linear Regresyon ( ingilizcesi ile Linear Regression) nasıl çalışır bunu inceleyeceğiz.
Regresyon problemleri makine öğrenmesinde tahmin edilmek istenen parametrenin sürekli olduğu zaman ortaya çıkan bir durumdur. Bu yazıda da işleyeceğimiz üzere bir evin fiyatını tahmin etmek bir regresyon problemidir.
| Evin Alanı (Metre Kare) | Evin Fiyatı (Bin Dolar) |
|---|---|
| 1416 | 232 |
| 1600 | 330 |
| 2104 | 400 |
| 2400 | 369 |
| 3000 | 540 |
Bu grafiğe bakarak bu noktalara uyan bir çizgi çizebiliriz. İşte Linear Regresyon daki amaç da bu çizgiyi en verimli şekilde yerleştirmektir. Peki hangi çizginin en verimli olacağını nasıl bileceğiz.
Yazımızda ilerlemeden bazı notasyonları gösterelim.
\( x^i \) = Model eğitimi için verilen input değişkenleri. Örnek olarak bizim elimizde sadece alan var bundan dolayı \( x ^ 1\) = Alan değişkeni olacaktır.
\( y^i \) = Tahmin edilmek istenen hedef değişkenleri. Örnek olarak bizim elimizde fiyat var ve bundan dolayı \( y ^ 1\) = Fiyat değişkeni olacaktır.
Bizim verikümemizde \( \big(x^{1}, y^{1}\big) = \big(1416, 232\big) \)olacaktır.
\( m \) = Veri kümemizin boyutu. Bizim elimizde 5 nokta olduğu için bu durumda \( m \) = 5 olacaktır.
\( n \) = Kaç tane input değişkenimizin olduğunu gösterir. Elimizde sadece Alan olduğu için şuanlık \( n = 1\).
Eğitme Kümesi (Training Set) = Eğitmek için kullandığımız kümedir. \( \big\{\left( x^i , y^i \right) ; i = 1, 2 ..... m. \big\} \)
Bu terimlere daha aşina olmak için lütfen şu Makine Öğrenmesi Terimleri yazısını okuyunuz.
Supervised Öğrenmeyi daha resmi şekilde anlatabilmek için, bizim hedefimiz verilen X ve Y lerden iyi bir tahmin edici çıkarmak. Bunu şu şekilde \( h\left(x\right) \) gösterebiliriz. Bu fonksiyon \( h \) 'e hipotez diyeceğiz. Hepimizin de bildiği üzere bir linear denklem şu formattadır. \[ y = ax + b\]
Bundan dolayı hipotez fonksiyonumuzu şu şekilde yazabiliriz. \[ h_{ \theta } \big(x\big) = \theta_{0} + \theta_{1} x_{1} \].
Burada \( \theta \)' nın şekli elimizde sadece bir tane değişken olduğu için (2, 1) matrixtir.
\[ \theta = \begin{bmatrix} \theta_{0}\\\theta_{1} \end{bmatrix} \]
Genel formüle uygularsak eğer elimize \( n \) input (girdi) değişkeni varsa, bizim ağırlık \( \theta \) matrisimizin boyutu (n+1, 1) olacaktır.
Burada \(\theta_{i}\)'lar parametre diğer adı ile ağırlık (weights) olarak adlandırılır. Hipotez fonksiyonumuzun sadece \( x_{1}\) e kadar gitmesinin sebebi ise elimizde sadece alan değişkeninin olmasıdır. Diyelim ki elimizde 3 tane değişken var bu durumda hipotez fonksiyonumuz şu şekilde olacaktır. \[ h_{ \theta } \big(x\big) = \theta_{0} + \theta_{1} x_{1} + \theta_{2} x_{2} + \theta_{3} x_{3}\]
Genelleme yapmak istersek hipotez denklemimizi \[ h \big(x\big) = \sum_0^n \theta_{i} x_{i} = \theta^{T} x \] şeklinde yazabiliriz. Ancak elimizde \( n \) tane \( x \) varken neden toplam denkleminde \( n+1 \) tane \( x \) var diye sorabilirsiniz. Bunun sebebi tamamen matematiksel kolaylık. Bu kolaylığı sağlamak için elimizdeki veriyi şu şekilde modifiye edeceğiz. \[ x_{0} = 1\] Bu kolaylıktan sonra ilk girdi verimiz (input) \( x^{1} = \left[ 1, 1416 \right] \) olacak.
\( \theta^{T} x \) işleminin sonucu lineer cebirden bildiğimiz üzere tek bir sayı çıkacaktır. Bunun sebebi ise \( \theta^{T} \) matrisinin boyutu \( \big(1, 2\big) \) ve x girdimizin boyutu ise \( \big(2, 1\big) \) ' dir. Bu matrislerin çarpımından ortaya çıkacak olan sonucun boyutu ise \( \big(1, 1\big) \) dir.
Peki bunları yaptıktan sonra bu \( \theta \) değerlerini nasıl seçeceğiz? Asıl sorulması gereken soru bu. Çünkü önceden de bahsettiğimiz üzere bu değerler bize grafiğe uyan en iyi çizgiyi verecek ve biz de böylece amacımız olan en iyi tahmin ediciyi bulacağız. Bunları bulmak için elimizde ölçüm yapabileceğimiz bir metrik olması lazım. Bunun için bizim tahminlerimiz olan \( h_{\theta}\big( x^{i} \big) \)'ların gerçek değerler olan \( y^{i} \)' lara ne kadar yakın olduğunu ölçeceğiz ve buna cost function (masraf fonksiyonu) diyeceğiz. Amacımız bu masraf fonksiyonunu olabildiğince azaltmak. Bizim Cost Fonksiyonumuz \[ J \big(\theta\big) = \frac{1}{2} \sum_1^m \big( h_{\theta} \big(x^{i}\big) - y^{i} \big) ^{2} \] şeklinde yazılabilir.
Elimizdeki bulunan ağırlık \( \theta \) ' ları iyileştirmek için kullanacağımız Gradient Descent algoritmasını bir sonraki yazımızdan inceleyebilirsiniz. Lineer Regresyonu nasıl implement edebilirim diye düşünüyorsanız da Lineer Regresyon İmplementasyonu yazısını okuyabilirsiniz. Bu yazılık bu kadar, şimdilik hoşça kalın.
REFERANSLAR:
https://en.wikipedia.org/wiki/Linear_regression
https://online.stanford.edu/courses/xcs229i-machine-learning

Yorumlar
Yorum Gönder