Tek değişkenli lineer regresyonda aşağıdaki gibi bir veri setini en iyi (hata kareleri toplamı en düşük) açıklayan y=β0+β1x doğrunun parametrelerini (β0 ve β1) hesaplamamız gerekir:
x |
y |
1.2 |
2.4 |
2.1 |
5.5 |
3 |
7.9 |
3.9 |
10.5 |
5 |
14.2 |
Yukarıdaki verisetinin satırlarına (xi,yi), lineer regresyon modelinin çıktılarına ypred dersek, hata kareleri toplamı ∑(ypred−yi)2 olur. Bu hata fonksiyonunu (loss function) minimize edecek katsayıların analitik çözümünü kullanalım, x'in ortalamasına ˉx ve y'in ortalamasına ˉy dersek: β1=∑(xi−ˉx)(yi−ˉy)∑(xi−ˉx)2β0=ˉy−β1ˉx
Yukarıda β1'in payındaki ifade x ve y'nin kovaryansı, paydasındaki ifade de x'in varyansıdır. Ortalama, varyans ve kovaryans fonksiyonlarını yazarsak bu iş tertemiz hallolur:
def mean(values):
return sum(values) / len(values)
def variance(values):
m = mean(values)
return sum([(x-m)**2 for x in values])
def covariance(values1, values2):
m1,m2 = mean(values1), mean(values2)
return sum([(values1[i] - m1)*(values2[i] - m2) for i in range(len(values1))])
def linear_reg_coef(values1,values2):
b1 = covariance(values1,values2) / variance(values1)
b0 = mean(values2) - b1 * mean(values1)
return [b0, b1]
x = [1.2, 2.1, 3, 3.9, 5]
y = [2.4, 5.5, 7.9, 10.5, 14.2]
linear_reg_coef(x,y)