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:

1
2
3
4
5
6
7
8
9
    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:

1
2
3
4
5
6
    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 4fa6ba7.
statistics
#data-science #machine-learning #statistics
published on 10.11.2018

While the mean and standard deviation are descriptive statistics, the mean and standard error describes bounds for a random sampling process. This difference changes the meaning of what is being reported: a description of variation in measurements vs a statement of uncertainty around the estimate of …

published on 19.06.2018

Tanımlayıcı istatistiklerden ortalama ve ortanca. Analiz yapılırken iş bu ikisinden hangisinin anlamlı olduğuna geldiğinde sık sık hata yapılmaktadır. Hataların yanısıra, dünyada bu istatistiklerin manipüle edilerek kötüye kullanıldığı örnekler de ne yazık ki çoktur. (bknz: statistical lies) Ne …

published on 24.01.2021
edited on 11.06.2021

Some time ago, I wanted to display image galleries on my Hugo website and searched for Hugo themes for photography and gallery. I can’t say I find much. Then, I met with a javascript library called nanogallery2 which is using another javascript library as an image viewer lightbox2. In this …

published on 23.01.2021
edited on 11.06.2021

Image processing may seem complicated at first but it’s actually easy and definitely worth implementing since it’ll help you decrease page load times. As you probably know, we don’t want to load raw images with huge sizes for small thumbnails or blog-posts. We want to load a small …

published on 31.12.2020
edited on 26.06.2021

I’ve, recently, published a blog post called Perfect Workflow for Publishing Python Notebooks. I talked about some of the benefits of using Rmarkdown and reticulate. In this post, I’ll try HTML widgets and explain how we can embed those in our blog post using nothing but R. […] 1 …

published on 05.12.2020

Resume A4 is a side project of mine. It’s one page Hugo Theme that allows you to write your resume in YAML format and keep track of it using git. Also, you can publish it online as a static site using GitLab, GitHub Pages, Netlify, or some other service you are familiar with. A few months …

published on 30.11.2020

I’ve been searching for a good workflow for publishing Jupyter or RMarkdown Notebooks as static blog posts. I think I’ve found the optimal solution for my use case. In this post, I’ll explain my workflow and why chose this way with examples. […] In reality my main purpose to …

published on 29.11.2020
edited on 05.12.2020

Plotly is a visualization library that allows us to write code in Python, R, or Julia and generates interactive graphs using Javascript. So, we don’t have to deal with Javascript. You can checkout Plotly gallery, there are interesting works. Anyway, last week, I’ve started learning …