Veri Ön İşleme Adım 4: Çok Boyutluluk / Boyut İndirgeme

Serinin geçen yazılarında Eksik Gözlem Analizi, Aykırı Değer Tespiti ve Veri Transformation adımlarını incelemiştik. Bu yazıda ise gerçek hayat verilerinde sıklıkla karşılaştığımız Çok Boyutluluk probleminden bahsedeceğim. Bazı veri setleri oluştururken çok fazla öznitelik(değişken) tutulur. Bu durum bize problemi çok boyutta gözlemleme imkanı sunsada zaman ve kaynak yönetimi bakımından kullanışlı değildir. Veride çok fazla değişkenin olması bizi Çoklu Bağlantı Problemi ile de karşı karşıya bırakır. Çoklu bağlantı problemi kısaca bağımsız değişkenler (öznitelikler) arasında yüksek korelasyon olması durumudur. Bir veri setinde ne kadar fazla değişken bulunursa bu problemle karşılaşma olasılığımız o kadar yüksektir. Eğer bu aşama göz ardı edilip model kurulursa Overfitting (aşırı öğrenme) durumu yaşanır. Çok fazla değişkenin neden olabileceği diğer problemler ise veri setini görselleştirememek, model kurma ve hiper parametre ayarlamalarının uzun sürmesi olarak sıralanabilir. 

Tüm bu sebeplerden dolayı çok boyutlu veride boyut indirgeme yöntemleri kullanılabilir. Boyut indirgeme için farklı yöntemler vardır, bunlar aşağıdaki gibi sıralanabilir:

  • Öznitelik Seçimi (Feature Selection)
  • Temel Bileşenler Analizi (PCA)
  • Lineer Diskriminant Analizi (LDA)
  • t-SNE

Bu yöntemlerden Öznitelik Seçimini başka bir yazıda daha kapsamlı olarak ele alacağım için bu yazıda bahsetmeyeceğim. 

Diğer sıralanan boyut indirgeme yöntemlerinin temelinde ise tüm değişkenleri sıkıştırarak korelasyonsuz hale getirip kullanmak vardır. 

Bu Yöntemler Ne Zaman Kullanışlı Olmaz?

Boyut indirgeme yöntemlerinde değişkenler bildiğimiz formadan çıkarılıp  birbirine dik(korelasyonsuz) bileşenler haline getirilir. Bu sebeple iş tanımında bizden model performansında önemli değişkenler ve görselleştirmeler isteniyorsa boyut indirgeme yöntemlerini kullanmak mantıklı değildir.

Şimdi birlikte kısaca bu yöntemleri açıklayıp ufak uygulamaları inceleyim.

NOT: Boyut indirgeme yöntemlerine geçmeden önce veri keşfi dikkatlice yapılmalıdır (eksik-aykırı gözlem). Eğer train ve test olarak iki farklı datanız yoksa öncelikle data test-train olarak ayrılmalı daha sonra standartlaştırma işlemi yapılmalı en son boyut indirgeme yöntemine geçilmelidir. Bu işlemler sırasıyla yapıldığında train-test setleri arasında bilgi sızıntısı önlenmiş olur. İşlemlere bu sırayla devam etmek test datasıyla model performansını ölçerken büyük önem arz eder.  

Lineer Diskriminant Analizi

LDA denetimli öğrenme uygulanacağında kullanılır. Çünkü boyut indirgeme hedef değişkene göre yapılır.  Bu yöntemde hedef(target) değişken göz önüne alınarak yüksek korelasyon tespit edilen değişkenler sadeleştirilir ve bilgi kaybı olmadan boyut indirgenir böylelikle çoklu bağlantı problemi ve aşırı öğrenmenin önüne geçilir. Burada target değişkeninin kullanılmasının sebebi LDA’nın sınıflar arası mesafeyi maksimize edecek şekilde boyut indirgeme yapmasıdır. 

Bunun için öncelikle Değişkenler Arası Varyans hesaplanır, daha sonra Değişkenler İçi Varyans hesaplanır ve son olarak target değişkenini göz önüne alarak değişkenler arası varyans maksimum, değişken içi varyans minimum olacak şekilde yeniden ölçekleme yapar.

NOT: Bu işlem yapılmadan önce veriler standartlaştırılmadır. Standartlaştırma yöntemleri için buraya bakabilirsiniz. 

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis()
X_train_lda = lda.fit_transform(X_train_std, y_train)
X_test_lda = lda.transform(X_test_std)
Veri setini hedef değişkenini dikkate alarak LDA yöntemine göre bileşene indirmiş olduk.

Temel Bileşenler Analizi (Principal Component Analysis) 

PCA  toplam varyansı değiştirmeden birbiriyle yüksek korelasyonlu değişkenleri farklı kombinasyonda birbirine dik ve ilişkisiz hale getirir. Burada yapılan işlemde veri setinde bulunan değişkenler kaybolmaz sadece başka bir forma ölçeklendirilir böylece veride bilgi kaybı yaşanmaz ve hedef değişkendeki değişimi en iyi açıklayan bileşenler elde edilir.

PCA hakkında daha fazla bilgi için buraya bakabilirsiniz.

NOT: PCA aykırı gözlemlere ve standartlaştırılmamış değişkenlere karşı çok hassastır. Bu nedenle bu aşamadan önce veri ön işleme adımlarına dikkat edilmelidir.  

İlk bileşen toplam varyansın %26’sını, ilk ve ikinci bileşen toplam varyansın %52’sini oluşturmaktadır. İş modelimize uygun olacak şekilde kaç bileşen kullanacağımıza toplam varyans değişimşne bakarak karar verebiliriz.
Bu grafikte PCA yöntemi uyguladıktan sonra modelde kaç component(bileşen) kullanmamız gerektiği ile ilgili bilgi ediniriz. Burada en net kırılımın olduğu yer bize bileşen ile ilgili fikir verir.

Farklı Veri Setlerine Göre PCA Tipleri

  • Sparse PCA : Temel PCA yöntemi girdi değişkenlerinin çoğu sıfır olmayacak şekilde tasarlanmıştır. Bu sebeple veri seti fazlaca sıfır içeriyorsa SparsePCA kullanmak mantıklıdır.
  • Randomize PCA: Temel PCA’den çok farklı değildir. Büyük veri setlerinde maliyete sebep olacağı için çok kullanışlı olmayabilir.
  • İncremental PCA: Eğer veri seti belleğe sığmayacak büyüklükte olduğunda kullanışlıdır. Burada veri gruplara ayrılarak işleme tabii tutulur. 
  • Kernel PCA: PCA doğrusal veri setlerine uygulanan bir yöntemdir, eğer veri setimiz doğrusal değilse ve boyut indirgeme yapmamız gerekiyorsa o zaman Kernel PCA kullanabiliriz. 

LDA ve PCA Arasındaki Farklar

  • PCA denetimsiz bir algoritmadır ve veride varyansı maksimum yapan temel bileşenleri bulmaya çalışır.
  • LDA denetimli algoritmadır ve sınıflar arasındaki farkı maksimize edecek şekilde bileşenler oluşturur. 
  • PCA genellikle kümeleme problemlerinde, LDA ise sınıflandırma problemlerinde kullanılır.

t-SNE

Yüksek boyutta olan veri kümelerini görselleştirmeye ve boyut azaltmaya yarayan bir yöntemdir. Bu yöntem veri setinin doğrusal olmadığı durumlarda kullanılan olasılıksal bir yöntemdir. PCA varyansı en üst düzeye çıkarıp mesafeleri korumaya yönelik bir mantığa sahiptir. Çünkü farklı olan şeyler birbirinden çok uzaktır. Ancak t-SNE farklılıktan ziyade küçük ikili mesafeleri ve benzerlikleri koruyarak ilerler. Böylelikle değişkenler arasındaki benzerlik ölçüsünü hesaplar ve bu ölçüleri optimize ederek bileşen oluşturur.

NOT: Diğer boyut indirgeme yöntemlerinde olduğu gibi bu yöntemde de veriler önce standartlaştırılmalıdır. 

NOT: Temeli olasılığa dayandığı için kod her çalıştığında aynı sonucu elde edemeyebilirsiniz.

Burada yazının sonuna geliyoruz. Yüksek boyutlu verilerle çalışmak daha zor ve karmaşıktır eğer iş tanımınız uygunsa veriyi iyi tanıdıktan sonra boyut indirgeme yöntemlerine yönelmek model performansı ve kaynak yönetimi bakımından önemlidir. Umarım konunun genel mantığı ve yöntemleri ile ilgili temel düzeyde meraklarınızı giderebilmişimdir.

Projeye Ulaşmak İçin

Bir Sonraki Yazıda Görüşmek Dileğiyle 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *