published on 29.06.2018

Bu yazının amacı linear regresyona detaylı bir giriş yapmaktır. Regresyon analizinin amacı, değişken setleri arasındaki ilişkiyi tanımlamaktır. Bir bağımlı değişkeni, bir ya da birden fazla bağımsız değişkene bağlı olarak tahmin etmek için kullanılan modellerdir.

Linear Regresyon Nedir?

Linear Regresyon Nedir? Bunun Non-Linear’i de mi var?

Evet var, logistic’i, poisson’u, exponential’ı var. Bunlara ileride değineceğim. Bu yazıda yalnızca linear regresyon üzerinde duracağız.

Lineer regresyon lineer model gerektirir. Başlamadan önce, “lineer” nedir onu tanımlamak gerekir. Çünkü, genellikle “bir doğru” üzerinden anlatıldığı için, linear regresyon ile doğru çiziyormuşuz gibi bir algı oluşuyor. Amma velakin, doğrusal regresyon ile eğri(curve) de üretebiliriz. Nonlinear regresyon eğri ürettiği için nonlinear diye adlandırılmadığı gibi linear regresyonda doğru ürettiği için linear diye adlandırılmamıştır. Şaşırdınız mı? Dürüst olmak gerekirse, ben epey bi' aydınlanma yaşamıştım.


Linear model nedir tanımlayalım:

Bir modelin linear olabilmesi için herbir terim; ya sabit ya da bir parametre ile tahminleyici değişkenin çarpımı olmalıdır. Linear eşitlik, tüm terimlerin toplam durumda olması ile elde edilir.

$$y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \epsilon$$

İstatistikte, regresyon fonksiyonunun linear olması için, parametrelerin linear olması yeterlidir. Parametreler linear olduğu sürece, tahminleyici değişkenler ile oynayarak eğriler elde edebiliriz. Bu bağlamda aşağıdaki model hâlâ lineardir.

$$ y = \beta_0 + \beta_1x_1 + \beta_2x_2^2 + \beta_{12}x_1x_2 + \epsilon $$

Diğer bir deyişle, linear regresyon ile veriye uyan polinomu bulmak mümkündür. [1]


Kısaca polinomları hatırlarsak:

Poly: many Nomial: name, term

$Ax^n$ where $n\geq0$ and integer

Polinom en basit durumda, bir doğru, ikinci derece parabole karşılık gelecektir.


İyi de neden linear regression demişler madem yalnızca doğru üretmiyor?

Bunun için önce modeli sonra da çözüm yöntemini açıklamak gerekiyor.

Öncesinde, biraz terminoloji.

  • Simple Linear Regression: bir bağımsız değişken ile
  • Multiple Linear Regression: birden fazla bağımsız değişken ile,

bir bağımlı değişkenin tahmin edilmesidir. Anlatması kolay olan ile başlayalım.


Öncelikle kullanacağımız temel terimleri tanımlayalım. Biraz daha terminoloji:

GösterimAdAçıklama
$\beta$parametre
$x$bağımsız değişkenaçıklayıcı değişken (explanatory variable)
$y$bağımlı değişkenresponse

olmak üzere; basit linear regresyon doğrusu aşağıdaki gibi genellenir.

$$ y = \beta_0 + \beta_1x_1 + \epsilon $$

ParametreAçıklama
$ \beta_0 $kesme noktası
$ \beta_1 $eğim
$ \epsilon $rassal hata

Örnek bir veri seti üzerinden $\beta_0$ ve $\beta_1$ için $\hat{\beta_0}$ ve $\hat{\beta_1}$ tahminleyicilerini bulmak istiyoruz. Ayrıca dikkat edelim, y değerini tam olarak hesaplamıyoruz, her zaman bir de rassal hata $\epsilon$ var. Doğal olarak bu hatanın en azlanmasını hedefliyoruz.

Basit Bir Örnek

Zamana göre yayılan bir talep, yıllara göre ev fiyatları, sınıftaki öğrencilerin boy-kilo ilişkisi, gibi klasik örnekler sıralanabilir. Tabii, zamansallığı ve otokorelasyonu yok sayıyoruz şimdilik. X ekseninde bağımsız değişken olur, Y eksenindeki değer ise x’e bağlı değişmektedir. Amacımız eldeki x’leri öğrenerek gelecekte karşılaşacağımız bir x değeri için y değerini tahmin etmektir. Peki, eldeki x’leri nasıl öğreneceğiz? Veriye uyan en iyi doğruyu (eğriyi, polinomu) bularak.

Linear Regression - Height Weight
Linear Regression - Height Weight

Boya göre kiloyu tahmin etmek istiyor olalım. Doğrusal ilişki, grafikte açık. Basit regresyon denklemini de excel veriyor.

Linear Regression - Skin Cancer
Linear Regression - Skin Cancer

Bir diğer örnek, deri kanserinden ölüm riskini bölgenin coğrafi enlemine göre inceliyor. Yüksek enlemlerde yaşayan insanlar zararlı güneş ışınlarına daha az maruz kaldıkları için, deri kanserinden ölüm riski de düşüyor. İlişkide bir trend görülse de verilerin dağıldığı da açıktır. [3]

Model ve Mantığı

Öyle bir doğru istiyoruz ki, eldeki verilerin doğruya uzaklığı en az olsun. Doğruyu bulmanın en yaygın yollarından biri de “linear least squares fit”. Amaç fonksiyonu şöyledir:

$$ \min \sum_{i=0}^{len(obeserved)-1} (observed[i] - predicted[i])^2 $$

Burada (observed - predicted) farkının diğer bir deyişle uzaklığın nasıl hesaplandığı üzerinde durmalıyız.


Hangi uzaklığı kullanacağız? X, Y, P?

residual_distance.png

Y uzaklığını kullanacağız çünkü verilen x bağımsız değişkeni için y değerini tahmin etmek istiyoruz. Ayrıca düşey uzaklık (Y), tahmindeki hatayı da ölçecektir. Bazı durumlarda dik uzaklık (P) tercih edilmektedir. Yatay uzaklık (X) ise tek başına anlamsız olacaktır.

Ayrıca düşey uzaklığa, “residual” diyoruz. residual = actual - predicted

Residuallar, ölçüm hatası gibi rassal faktörlerden ya da bilinmeyen rassal olmayan sebeplerden kaynaklanabilir. Misal, boya bağlı olarak kiloyu tahmin etmeye çalışıyorsak, bilinmeyen faktörler diyet, egzersiz, vücut tipi ya da farklı genetik sebepler olabilir.


Neden karesini alıyoruz?

  • Karesini alarak, residualın pozitif veya negatif olması durumunu ortadan kaldırıyoruz.
  • Karesini almak, büyük residuallara daha fazla ağırlık(önem) veriyor ama büyük olanın her zaman domine edeceği kadar değil.
  • Eğer residuallar korelasyonsuz (uncorrelated) ve ortalaması 0, sabit (ama bilinmeyen) varyans ile normal dağılıma sahip ise least squares fit aynı zamanda kesme noktası ve eğim parametrelerinin maximum likelihood tahminleyicisidir. [6]

Gelelim asıl anlatmak istediğim konuya. En iyi uyan doğruyu(best fitting line) diğer bir deyişle residualların en kısa olduğu, hatanın en az olduğu doğruyu nasıl buluyoruz?

2 boyutlu bir uzayda, eksenler a ve b olmak üzere herbir (a, b) noktası bir doğruyu (y = ax + b) temsil edecektir.

Gradient Descent
Gradient Descent

Bu 2 boyutlu uzayın üzerinde bir yüzey hayal edelim, yüzeyin yüksekliği amaç fonksiyonumuza eşit olacaktır ve kareler toplamından dolayı yüzeyin şekli her zaman konveks olacaktır. Yüzeyin en alt noktası, amaç fonksiyonunu optimal yapan çözüme karşılık gelecektir. Diğer bir deyişle, aradığımız en iyi doğruyu verecektir.

Yine iyi bir görselleştirme olduğunu düşündüğüm diğer örnek de [5]‘den alınmıştır. Adım adım açıklamak gerekirse:

gradient_descent.png
  • Başlangıçta bir doğru çizeriz ya da üstteki açıklamaya göre eksenleri a ve b olan iki boyutlu uzayda bir (a, b) noktası seçeriz. Bu başlangıç çözümümüzdür.
  • Her adımda yeni (a, b) ikilisi seçerek amaç fonksiyonunu yenileriz. Komşu çözüm üretiriz.
  • Amaç fonksiyonunun (hatanın, least sum of squares) en az olduğu (a, b) ikilisinde dururuz.
  • Konveks şekil sayesinde optimal çözüme her zaman ulaşırız. Lineer regresyon, aslında konveks optimizasyon problemlerine bir örnektir.

Başlangıçta sormuştuk, “İyi de neden linear regression demişler madem yalnızca doğru üretmiyor?” diye. Çünkü gradient descent (eğimli iniş) algoritmasıyla yukarıdan aşağıya doğrusal olarak iniyor.

Multiple Linear Regression

Tek bağımsız değişkene bağlı analiz (simple linear regression) gerçekte nadiren karşımıza çıksa da anlatması ve görselleştirmesi kolay olduğu için genelde onun üzerinden anlatılır. Multiple regresyon’a örnek olarak [3]‘deki veri setini kullandım. Veri seti, 94-98 yılları arasında Ankara’nın hava durumuna ait bilgiler içeriyor. 10 feature (kolon) ve toplam 321 satır var.

FeatureDomain
Max_temperature[23.0, 100.0]
Min_temperature[-7.1, 65.5]
Dewpoint[-3.1, 57.6]
Precipitation[0.0, 4.0]
Sea_level_pressure[29.46, 30.6]
Standard_pressure[26.3, 27.18]
Visibility[0.2, 11.5]
Wind_speed[0.0, 18.0]
Max_wind_speed[2.19, 57.4]
Mean_temperature[7.9, 81.8]

Sonuçta elde edilen linear-regresyon modeli:

    Mean_temperature =
      0.55   * Max_temperature +
      0.3323 * Min_temperature +
      0.0597 * Dewpoint +
     -9.2456 * Sea_level_pressure +
      7.5    * Standard_pressure +
      0.1113 * Visibility +
      0.0728 * Wind_speed +
     76.445 

ve çözüm özeti:

    Correlation coefficient                0.994 
    Mean absolute error                    1.2509
    Root mean squared error                1.6323
    Relative absolute error                9.7276 %
    Root relative squared error            10.8671 %
    Total Number of Instances              321  
3d Scatter Plot
3d Scatter Plot

Bu yazının esas amacına dönelim tekrar. Çözüm mantığı aynı mı? Evet, aynı. Her ne kadar 10 boyutlu veri setini anlamlı şekilde görselleştiremesek de 10 boyutlu uzayda, 9 boyutlu cismi veriye uydurmaya çalışıyoruz. Tıpkı yukarıda 2 boyutlu uzayda, 1 boyutlu doğruyu aradığımız gibi. 3 boyutlu veri olduğunda ise, en iyi 2 boyutlu düzlemi ararız.

Grafik Miabella AI adlı siteden alınmıştır. Sitede bir de interaktif demo var, 3D canlandırma açısından faydalı olabilir.

Sonuç Ne Kadar İyi ?

Dikkat ettiyseniz, amaç fonksiyonumuz modelin (çözümün) iyiliği hakkında bilgi vermiyor ve değeri bizim kullandığımız verilere göre değişiyor. Elimizdeki probleme göre çok büyük bir amaç fonksiyonu değeri ile “iyi” bir model kurmuş da olabiliriz, ama olmayabiliriz de. Diğer bir deyişle, verinin değerinden bağımsız (scale independent) bir ölçüye ihtiyacımız var. $R^2$, determinasyon katsayısı, scale independent ölçülerimizden biri.

$$R^2 = 1 - \frac{\sum_i(y_i - p_i)^2}{\sum_i(y_i-\mu)^2}$$

Bölünen, (nam-ı diğer SSE, Sum of Squared Errors) tahmindeki hataya; bölen (nam-ı diğer TSS, Total Sum of Squares) ise gerçek verideki değişkenliğe karşılık gelmektedir. Aslında aşağıdaki gibi ifade edersek daha açık olacaktır:

Varyans formülünde, “n = sample size” bölenleri birbirini götüreceği için formül yukarıdaki gibi sadelişiyor.

$$R^2 = \frac{var(mean) - var(fit)}{var(mean)}$$

Bağımsız değişkenler, bağımlı değişkenin varyansının $R^2$ kadarını açıklıyor, şeklinde yorum yapılabilir. “$R^2 = $ Explained Variation / Total Variation”

$$0 \le R^2 \le 1$$

Genel anlamda $R^2$, 1’e ne kadar yakınsa o kadar iyidir, ama her zaman değil. (bknz: residual plots)

Bitirirken

Uzun zamandır yazmak istediğim bir konuydu. İstediğim tüm başlıkları da anlatamama rağmen oldukça uzun bir yazı oldu. Umarım açıklayıcı olmuştur. Sorunuz, eleştiriniz, öneriniz varsa lütfen çekinmeden yazın.

Sonraki konularda ele alacağım başlıklar, kendime not:

  • Assumptions of linear regression
  • Residual analysis, goodness of fit
  • Polyfit and cross validation
  • Solving linear regression with simplex
  • A better example for Multiple Linear Regression

Kaynaklar

Video Kaynaklar

Published on 29.06.2018 by Mert Bakır with commit 3be25fb.
statistics
#data-science #statistics
published on 10.07.2022

Previously, I’ve published a blog post about deploying static content on heroku with basic authentication. The main purpose was to get basic auth for a freely hosted static website. In that post, we hosted the source code on GitLab and configured a CI/CD pipeline to render the static content …

published on 28.05.2022

Each git commit has a field called Author which consists ‘user.name’ and ‘user.email’. We usually set these variables once, after installing git, with git config --global so that each repo gets the variables from the global definition. We can also set them locally for a …

published on 25.05.2022

In this post, I’ll first walk through hosting static content with basic authentication. Then, we’ll look into deploying to Heroku using GitLab Pipelines, more specifically deploying a certain sub-directory within the project instead of pushing the whole project. Also, I’ll share …

published on 17.04.2022
edited on 15.07.2022

Önceki bölümde, markdown formatını LaTeX formatına dönüştürmek için kullanılan Pandoc yazılımından bahsetmiştik. Şimdi konuyu bir adım daha ileri taşıyıp ve bookdown’a geçiyoruz. Bookdown; Rmarkdown kullanarak teknik dökümanlar, kitaplar yazabilmemizi sağlayan, Yihui Xie tarafından yazılmış …

published on 10.04.2022

I’ve been using WSL-2 on Windows for over a year. It’s very useful because some Python packages are just a headache to install on Windows. Also, docker. It’s just better on Linux. Yet, WSL-2 can also be problematic. I remember trying a dual-boot setup when things just went way too …

published on 03.03.2022

In this post, I’ll share how to install geopandas and some other gis related packages on Windows. If you are on Mac or Linux you can probably just pip install those without any issue. I usually had to do a google search every time I wanted to install these packages on Windows environment. Of …