Ana içeriğe atla

Python - PCR ve PLSR Regresyon Modelleri

Çoklu doğrusal regresyon, bir bağımlı değişken ile bir ya da daha fazla bağımsız değişken arasındaki ilişkiyi modellemek için yaygın olarak kullanılan istatistiksel bir yöntemdir. Bu yöntemde regresyon katsayılarını tahmin etmek için En Küçük Kareler (Least Squares-LS) tekniği kullanılır. Ancak çoklu doğrusal regresyonda güvenilir sonuçlar elde etmek için LS tekniğinin belli başlı varsayımlarının sağlanması gerekir. Bu varsayımlardan bir tanesi bağımsız değişkenler arasında ilişki bulunmaması gerektiğidir. Bağımsız değişkenler arasındaki ilişki, çoklu bağlantı sorununa sebep olur.

Çoklu bağlantı sorunu, parametre tahminleri üzerinde olumsuz sonuçlar doğurur. Bu sorunu ortadan kaldırmak için çeşitli yollara başvurulabilir. Bu yollardan en yaygın olarak kullanılanı yanlı tahmin teknikleridir. Bunlar: Kısmi En Küçük Kareler Regresyonu (Partial Least Squares Regression – PLSR) ve Temel Bileşenler Regresyonu (Principal Component Regression – PCR) ele alınmıştır.


PCR - Principal Component Regression

PCR regresyon modeli kısaca değişkenlere boyut indirgeme uygulandıktan sonra çıkan bileşenlere regresyon modeli kurulması fikrine dayanır. PCR ve PLSR modellerini incelemek için internette de sıkça yer alan “Hitters” verisini kullancağım.

İlk olarak data framei okutuyorum. Gelen verinin 263 satır ve 20 sütundan oluştuğunu görüyorum. Verinin içinde numerik değişkenlerin yanı sıra string değerlerin de yer aldığını tespit ediyorum.


Sonra, verinin istatistiki özelliklerine bakıyorum: numerik değişkenlerin min max değerlerine ve ortalamalarına bakıyorum. Veriyi tanımasam bile buradan hareketle bir verinin doğruluğu/işlenebilirliği hakkında yorum yapabilirim.


Daha önce gördüğüm string değerleri modele koyabilmek için bu sütunları numerik değere çevirmem gerekiyor; bunun için one-hot coding yapıyorum.


Şimdi, bağımlı değişkeni mi ve bağımsız değişkenlerimi tanımlamam gerekiyor. İlk olarak, Salary değişkenimi bağımlı değişken olarak tanımlıyorum. Daha sonra; string olan değerleri çıkarıp diğer tüm numerik değerleri bağımsız değişkenler olarak tanımlıyorum. Ancak, ben modele koymak için string değerleri numerik yapmıştım, bunun için one-hot coding yaptığım değerleri de bağımsız değişkenlerin içine tanımlıyorum.


Şimdi modelimi kurabilirim. Öncelikle veri setimi %25 test %75 train olacak şekilde ayırıyorum.


Sonra, boyut indirgeme işlemi yapacağım için sklearn kütüphanesinden pca modülünü indirip boyut indirgemeyi gerçekleştiriyorum ve modelimi kuruyorum. Model sonucunda, coef ve intercept katsayılarıma bakıyorum.

Modeli kurduktan sonra tahmin kısmına geçebiliriz. Burada daha önce boyut indirgeme uyguladığım X yani bağımsız değişkenlerimi tahmin edip train veri setindeki y yani bağımlı değişkenlerle olan hata kareler ortalamasına bakıyorum. R2 değerim %57 gibi düşük bir değer çıkıyor.


Son olarak modelin tuning yani doğrulama kısmına geçiyorum. Doğrulama için 10 bileşenli cross validation yapıyorum ve hata kareler ortalamasını grafiğe döküyorum.



PLSR - Partial Least Squares Regression

PLSR modeli ise değişkenlerin daha az sayıda ve aralarında çoklu doğrusal bağlantı problemi olmayan bileşenlere indirgenip regresyon modeli kurulması fikrine dayanır. PLS de PCR gibi bağımsız değişkenlerin doğrusal kombinasyonlarını bulur. Bu doğrusal kombinasyonlar bileşen yada latent değişken olarak adlandırılır. Bu modelde de yine “Hitters” verisini kullanacağım.

Bir önceki analizde aynı verileri kullanacağım için giriş/veriyi hazırlama kısımlarına geçip direkt modelimi kuruyorum. Bunun için sklearn kütüphanesinden PLSRegression modelini indiriyorum.


Şimdi tahmin kısmına geçebiliriz. Burada yine train hatamıza ve R2 değerlerimize bakıyoruz. R2 değerimiz %51 gibi yine düşük bir oran çıkıyor.


Son olarak model tuning yapıyoruz. Doğrulama kısmında ise yine 10 katlı bir cross validation yapıp hata kareler ortalamasını görselleştiriyoruz.


Sonuç olarak, iki modelde de boyut indirgeme uyguladık ve çıkan bileşenler üzerinden regresyon modeli kurduk. Modellerimizin sonucunda R2 değerlerinin çok da yüksek gelmediği yani modelin açıklanabilirliğinin çok yüksek olmadığını ve hata kareler ortalamalarının bileşen sayılarına göre değişkenlik gösterdiğini tespit etmiş olduk.

Yorumlar

  1. Merhaba,

    Elinize sağlık, gerçekten çok açıklayıcı ve uygulamaya yönelik bir makale hazırlamışsınız. Sizden ileri dönük tahmin yapabilmek adına PCR ve PLS yöntemlerini bir sonraki ay yada gün fiyat artışlarını tahmin yöntemi olarak kullanabilmenin bir yolu var mıdır?

    Şimdiden çok teşekkür ediyorum.

    Saygılarımla,
    Sait YILMAZER

    YanıtlaSil
  2. Merhaba Sait Bey,
    Tahmin modellerinin başarısı ilk olarak geçmiş data üzerinden test edilip tahmin gücü ölçülür. Daha sonra modelin başarısına göre mevcut dataya implemente edip gelecek tahmini yapabilirsiniz. Özetle, PCR ve PLS modellerinden birini uygun gördüğünüz taktirde; yani geçmiş datayı iyi tahmin ettiğinizi ispatladığınızda real time veya future tahminler için de kullanabilirsiniz.
    Saygılarımla,

    YanıtlaSil

Yorum Gönder