Python'da Doğrusal Regresyon Kurmak ve Sonucu Okumak
Beceri rehberi

Python'da Doğrusal Regresyon Kurmak ve Sonucu Okumak

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Doğrusal regresyonla bir sayısal değeri, örneğin satışı, başka değişkenlerden tahmin edersiniz. Aynı veriyi önce scikit-learn ile tahmin amacıyla, sonra statsmodels ile yorum amacıyla modelleyip çıktıyı satır satır okumayı öğrenirsiniz.

Bir bakışta

  1. İki kütüphane iki farklı amaca hizmet eder. scikit-learn tahmin ve değerlendirme odaklıdır; statsmodels katsayı tablosu, anlamlılık ve güven aralığı gibi istatistiksel yorumu verir.
  2. Model, veriyi eğitim ve test olarak ayırarak değerlendirilir. Eğitim verisindeki başarı genelleme gücünü göstermez; test verisindeki hata asıl ölçüdür.
  3. statsmodels'de sabit terimi kendiniz eklersiniz. Sabit terim eklenmezse model doğrunun orijinden geçmesini zorlar; add_constant bunu önler.
  4. Katsayı, diğer değişkenler sabitken etkiyi gösterir. İşaret yönü, büyüklük etkiyi gösterir; p değeri ise sonucun sıfır etki varsayımıyla ne kadar bağdaştığını değerlendirmeye yardım eder.
  5. Yüksek R-kare tek başına iyi model demek değildir. Artıkların dağılımı, aykırı değerler ve değişkenler arası ilişki de kontrol edilmelidir.

Doğrusal regresyon ne yapar?

Doğrusal regresyon, bağımlı bir sayısal değişkeni bir ya da birkaç bağımsız değişkenin doğrusal birleşimiyle açıklar: tahmin, sabit terim artı her değişkenin katsayısı çarpı değeri toplamıdır. Model, gerçek değerler ile tahminler arasındaki karelerin toplamını en küçük yapan katsayıları bulur; yöntemin adı bu yüzden en küçük kareler yöntemidir.

Örnek olarak bir mağazanın aylık satışını reklam harcaması ve ürün fiyatından tahmin etmek isteyelim. Reklam harcaması arttıkça satışın ne kadar yükseldiğini, fiyat arttıkça ne kadar düştüğünü katsayılar söyler. Böylece hem tahmin hem de değişkenlerin etkisi hakkında bir fikir edinirsiniz.

Modelin sınırı da adından bellidir: ilişkiyi doğrusal varsayar. Veri eğrisel bir ilişki gösteriyorsa katsayılar yanıltıcı olur. Bu yüzden modele geçmeden önce dağılım grafiği çizip ilişkinin yaklaşık düz bir çizgiye benzeyip benzemediğine bakmak iyi bir alışkanlıktır.

Regresyon aynı mantıkla tablo programlarında da kurulabilir; Python'un farkı, veri hazırlığını, modeli ve değerlendirmeyi tekrarlanabilir bir kodda bir araya getirmesidir.

Adım adım: veriden yoruma

Doğrusal regresyon çalışması her seferinde benzer bir sırayı izler. Önce veri yüklenir ve incelenir: eksik değerler, aykırı değerler, değişkenlerin ölçekleri. Ardından bağımlı değişken ile bağımsız değişkenler ayrılır. Metin içeren kategorik değişkenler sayısal sütunlara çevrilir. Veri eğitim ve test olarak bölünür. Model eğitim verisiyle kurulur, test verisiyle değerlendirilir. Son olarak katsayılar yorumlanır ve varsayımlar kontrol edilir.

Tahmin amacı güdüyorsanız ağırlık değerlendirmede, yorum amacı güdüyorsanız katsayı tablosunda olur. Pek çok çalışmada ikisi birlikte gerekir: scikit-learn ile modelin yeni veride ne kadar iyi tahmin ettiğini ölçer, statsmodels ile hangi değişkenin etkisinin anlamlı olduğunu görürsünüz.

Şekil 1

Değerlendirme yorumdan önce gelir; ikisi aynı modele bakar

Regresyon çalışmasının akışı

  1. Veriyi inceleEksik ve aykırı değerleri, değişken türlerini kontrol et.
  2. Değişkenleri ayırBağımlı değişkeni ve bağımsız değişkenleri belirle.
  3. Eğitim ve testVeriyi ayır; model yalnızca eğitim verisini görsün.
  4. Modeli kurKatsayıları eğitim verisinden öğren.
  5. Değerlendir ve yorumlaTest hatasını ölç, katsayıları ve varsayımları incele.
Kaynak: sayfa içeriğiMindset Institute

scikit-learn ile model: tahmin odaklı

scikit-learn'de tahmin edicilerin ortak bir arayüzü vardır: fit ile modeli eğitir, predict ile tahmin üretirsiniz. Doğrusal regresyon için LinearRegression sınıfı kullanılır. Kurgusal bir satış dosyasında reklam harcaması ve fiyattan satışı tahmin eden örnek:

import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_absolute_error

veri = pd.read_csv("satislar.csv") X = veri[["reklam_harcamasi", "fiyat"]] y = veri["satis"]

X_egitim, X_test, y_egitim, y_test = train_test_split(X, y, random_state=0)

model = LinearRegression() model.fit(X_egitim, y_egitim) tahmin = model.predict(X_test)

print(model.intercept_, model.coef_) print(model.score(X_test, y_test), mean_absolute_error(y_test, tahmin))

X bağımsız değişkenleri, y bağımlı değişkeni taşır. train_test_split veriyi eğitim ve test olarak ayırır; random_state değeri bölmenin tekrarlanabilir olmasını sağlar. Eğitimden sonra intercept_ sabit terimi, coef_ ise her değişkenin katsayısını verir. Son satırda score yöntemi test verisi üzerinde R-kareyi, mean_absolute_error ise ortalama mutlak hatayı hesaplar.

Bu ölçüler iki ayrı bilgi verir. R-kare modelin açıklama gücünü, ortalama mutlak hata ise tahminin ortalama olarak ne kadar saptığını gösterir. İkincisi, bağımlı değişkenin birimiyle ifade edildiği için iş açısından yorumlaması kolaydır.

statsmodels ile model: yorum odaklı

statsmodels, regresyonu istatistiksel bir model olarak ele alır ve ayrıntılı bir sonuç tablosu üretir. En küçük kareler regresyonu için OLS sınıfı kullanılır. Bu kütüphanede sabit terim otomatik eklenmez; add_constant ile kendiniz eklersiniz.

import statsmodels.api as sm

X_sabitli = sm.add_constant(X) sonuc = sm.OLS(y, X_sabitli).fit() print(sonuc.summary())

Dikkat edilecek ilk nokta argüman sırasıdır: önce bağımlı değişken, sonra bağımsız değişkenler verilir. scikit-learn'de ise önce X, sonra y gelir. Bu fark sık hataya yol açar.

summary çıktısı üç bölümden oluşur. Üstte model özeti yer alır: bağımlı değişken, gözlem sayısı, serbestlik dereceleri, R-kare ve düzeltilmiş R-kare, F istatistiği. Ortada katsayı tablosu bulunur: her değişken için katsayı, standart hata, t istatistiği, p değeri ve güven aralığının alt ile üst sınırları. Altta artıkların dağılımına dair tanı istatistikleri, örneğin Durbin-Watson ve Jarque-Bera, görünür.

Sabit terim tabloda const adıyla görünür. Kütüphane R tarzı formül arayüzü de sunar; formülle çalışırken sabit terim kendiliğinden eklenir.

Çıktıyı nasıl yorumlarsınız?

Katsayı tablosundan başlayın. Her katsayı, diğer değişkenler sabitken ilgili değişkenin bir birim artışında tahminin ne kadar değiştiğini söyler. İşaret yönü verir: pozitif katsayı artış, negatif katsayı azalış anlamına gelir. Büyüklüğü yorumlarken değişkenlerin birimlerini hesaba katın; farklı ölçeklerdeki değişkenlerin katsayılarını doğrudan karşılaştırmak yanıltır.

p değeri, katsayının gerçekte sıfır olduğu varsayımı altında böyle bir sonucun görülme olasılığını verir. Küçük p değeri, verinin sıfır etki varsayımıyla zor bağdaştığını gösterir; ama etkinin büyüklüğünü ya da iş açısından önemini tek başına söylemez. Güven aralığı da aynı bilgiyi başka bir yoldan verir: aralık sıfırı kapsıyorsa etkinin yönünden emin olunamaz.

R-kare modelin açıklama gücünü gösterir, ama tek başına kalite ölçüsü değildir. Değişken eklemek R-kareyi hiçbir zaman düşürmez; bu yüzden düzeltilmiş R-kare ve test verisindeki hata birlikte okunur.

Son olarak varsayımları kontrol edin. Artıklar rastgele dağılıyor mu, yoksa bir örüntü mü gösteriyor? Aykırı değerler katsayıları çekiyor mu? Bağımsız değişkenler birbirine çok mu bağlı? Örüntü gösteren artıklar ilişkinin doğrusal olmadığını ya da önemli bir değişkenin eksik olduğunu işaret eder.

Sık hatalar ve kontrol listesi

Doğrusal regresyonda tekrarlayan hatalar şunlardır.

  • Modeli tüm veriyle kurup aynı veriyle değerlendirmek. Başarı abartılı çıkar.
  • statsmodels'de sabit terimi eklemeyi unutmak.
  • Argüman sırasını karıştırmak; iki kütüphanede X ile y'nin yeri farklıdır.
  • Kategorik değişkeni sayıya çevirmeden vermek ya da etiketleri sıralı sayı gibi kodlamak. Sütunlara ayırarak kodlamak daha güvenlidir.
  • Eksik değerleri kontrol etmeden modele vermek.
  • Korelasyonu nedensellik saymak. Katsayı ilişkiyi gösterir, nedenselliği kanıtlamaz.
  • Aykırı değerleri incelemeden bırakmak.
  • Birbiriyle çok ilişkili değişkenleri birlikte kullanıp katsayıların kararsızlaşmasını fark etmemek.

Kısa kontrol listesi: ilişki dağılım grafiğinde yaklaşık doğrusal mı, veri bölündü mü, test hatası kabul edilebilir mi, katsayıların işareti iş mantığıyla uyuşuyor mu, artıklar rastgele mi? Yanıtlardan biri hayırsa model yeniden düşünülmelidir.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

Data Science Uzmanlığı Sertifika Programı Python, istatistik, makine öğrenmesi temelleri ve veri işleme başlıklarını bir arada işler. Veri Bilimi Sertifika Programı denetimli öğrenim ve model değerlendirme başlığını içerir. Veri Bilimi için İstatistik Eğitimi ise korelasyon ve regresyon konusunu istatistiksel temelden ele alır. Veri analisti ve yeni başlayan veri bilimciler için regresyon, tahmin kurma ve yorumlamanın ilk durağıdır.

İlgili Mindset programı

Data Science Uzmanlığı Sertifika Programı

Sık sorulanlar

Sık sorulan sorular

scikit-learn mi statsmodels mi kullanmalıyım?

Amacınız yeni veride tahmin üretmekse scikit-learn, değişkenlerin etkisini istatistiksel olarak yorumlamaksa statsmodels daha uygundur. Birçok çalışmada ikisi birlikte kullanılır: biri performansı ölçer, diğeri katsayı tablosu ve anlamlılık bilgisi sağlar.

statsmodels'de const satırı neden çıkıyor?

Çünkü add_constant ile modele bir sabit sütun eklediniz; bu sütunun katsayısı sabit terimdir. Eklemezseniz model doğrunun orijinden geçmesini zorlar; veri buna uymuyorsa katsayılar yanlı çıkar. Formül arayüzü kullanırsanız sabit terim otomatik eklenir.

Kategorik değişkenleri nasıl modele alırım?

Metin sütunlarını doğrudan veremezsiniz. Her kategoriyi ayrı bir 0/1 sütununa çeviren kukla değişken kodlaması kullanılır; pandas'ın get_dummies işlevi bunu yapar. Bir kategori referans olarak dışarıda bırakılır, katsayılar o referansa göre okunur.

R-kare düşükse model işe yaramaz mı?

Zorunlu değil. Bazı alanlarda, örneğin insan davranışında, düşük R-kare normaldir. Önemli olan modelin amacına uygun olup olmadığıdır. Tahmin hatası iş açısından kabul edilebilirse ya da bir değişkenin etkisi anlamlıysa düşük R-kare yine de değerli bilgi verir.

Veriyi ölçeklendirmek gerekir mi?

Düz doğrusal regresyon için gerekmez; tahminler ölçekten bağımsızdır. Ancak katsayıları karşılaştırmak istiyorsanız standartlaştırma yararlıdır, çünkü katsayılar değişkenin birimine bağlıdır. Düzenlileştirme eklenen modellerde ölçekleme ayrıca önem kazanır.