"Enter"a basıp içeriğe geçin

Temel Bileşenler Analizi

Principle Component Analysis (PCA)

Temel Bileşenler Analizi boyut azaltma (dimentionality reduction) amacı ile kullanılan veri ön işleme yöntemlerinden biridir. Sıkça kullanılan feature extraction yöntemlerindendir. Fikrin ya da yöntemin ortaya çıkma sebebini anlamak için aşağıdaki grafiği inceleyelim:

Principle Component Analysis
Temel Bileşenler Analizi

Görsele baktığınızda iki boyutlu bir veri seti görülüyor. Temel Bileşenler Analizi ise yatay ve dikey boyutların bir kombinasyonu ile yeni bir boyut yaratılıp bu verinin tek bir boyut ile ifade edilebileceği fikrine dayanıyor:

Veri seti iki boyut yerine tek boyut (turuncu) ile ifade edilebiliyor

Görüldüğü üzere aynı veriyi iki boyutla ifade etmek yerine tek boyutla ifade etmek mümkün. Bu sayede kümeleme analizleri ya da makine öğrenmesi algoritmaları için analiz ya da eğitim sürelerinden kazanç sağlamak, çok boyutlu verilerde yaşanan görselleştirme zorluğundan kurtulmak, bağımlı değişkenler yerine bağımsız değişkenler elde etmek sağlanılan kazançların kısa bir özeti denilebilir.

Aşağıdaki grafiği bu bilgiler ışığında tekrar incelersek kaç boyutlu bir veriden söz edilebilir?

Boyut azaltmak mümkün mü?

Böyle bir veri ile karşılaşıldığında verinin kaç boyutlu olduğu veri temsilinden ne kadar ödün verilebildiği ya da veride ne kadar gürültü (noise) olduğu ile ilişkilidir. Eğer veride bilgi kaybına tolerans var ise ya da grafikteki iki değişkenin birbirine yüksek bağlılığı olduğu matematiksel olarak bilinirken uyuşmazlıkların bir çeşit gürültü olduğu düşünülüyor ise grafikteki veriyi tek boyutta ifade etmek mümkün.

Bu durumda ilk örneğe benzer şekilde temsil kabiliyeti en yüksek olacak şekilde yeni bir boyut yaratılabilinir:

Bilgi kaybı ile Temel Bileşenler Analizi

Bu hali ile veri noktalarının yani her bir örneğin oluşturulan yeni boyuta mesafesi kadar bilgi kaybedilmiş olur. Çünkü noktaların yeni boyuta olan yansımaları (projeksiyonları) yeni veri seti olarak karşımıza çıkar:

Temel Bileşenler Analizi sonrası yeni veri noktaları (yeşil)

Dolayısı ile bilgi kaybı ile boyut azaltma arasındaki ilişki çözülmesi gereken bir optimizasyon problemi olarak karşılaşılır.

sklearn.decomposition.PCA metodu ile bir uygulama yaparak konuyu daha net hale getirelim. sklearn.datasets.load_wine veri setini kullanalım:

from sklearn.datasets import load_wine

Dataset = load_wine()
print(Dataset.DESCR)

Yukarıdaki kod hücresi çalıştırıldığında 178 farklı örneğe ilişkin 13 nitelik ve buna karşılık gelen 3 farklı sınıftan birinin işaretlendiği anlaşılıyor. Aşağıdaki şekilde veri seti değişkenlere atanır:

import pandas as pd

Features = pd.DataFrame(Dataset.data, columns = Dataset.feature_names)
Target = pd.DataFrame(Dataset.target, columns = ["Target"])

Features
wine veri seti

Niteliklerin birbiri ile ilişkisini görmek için pandas.plotting.scatter_matrix metodu kullanılabilir:

pd.plotting.scatter_matrix(Features, alpha = 0.3, figsize = (20,10), diagonal = 'kde');
scatter matrix

Örneğin Flavanoids ile Total Phenols‘un yüksek korelasyon gösterdiği söylenilebilir.

Yukarıdaki 13 özellik ya da boyut ile ifade edilen veri setini 4 boyut ile ifade etmek için:

from sklearn.decomposition import PCA

pca = PCA(n_components=4)
pca.fit(Features)

New_Features = pca.transform(Features)

print(New_Features)
PCA dönüşümü sonrası yeni veri seti

Yazı sonunda linkini paylaşacağım Github repo’sundan elde edilecek kodlar yardımı ile aşağıdaki grafik oluşturulabilir. Bu grafik her bir yeni niteliğin hangi eski niteliklerin yeni niteliklere ne boyutta katkı sağladığını ve yeni niteliklerin temsil oranını gösteriyor (Explained Variance). Anlaşılacağı üzere 1. nitelik “ash” adlı eski niteliğin yüksek katkısı ile oluşmuş. Bu açıdan “ash” özelliğinin diğer niteliklerden yüksek oranda bağımsız olduğu sonucunu verebilir zira diğer niteliklerin katkısı oldukça düşük. Diğer yeni niteliklerde de benzer yorumlar yapılması mümkün. Diğer yandan bir nolu boyut üzerindeki Explained Variance 1’e oldukça yakın. Bu da aslında ilgili boyutun temsil kabiliyetinin oldukça yüksek olduğunu, 4 yerine 1 boyutlu PCA dönüşümü yapmanın bilgi açısından yüksek bir kayıp yaratmayacağını söylüyor. Diğer yandan sadece “ash” niteliğinin veri setinin tamamını temsil kabiliyetinin oldukça yüksek olduğu sonucuna varabiliriz.

Elbetteki PCA dönüşümü yüksek ilişki (korelasyon) gösteren verilerden yararlanarak boyut düşürerek fayda sağlıyor olsa da bazı durumlarda yüksek ilişki gösteren niteliklerin nadiren farklılık gösterdiği durumları yakalamak istiyor olabiliriz. Bu durumda PCA kullanmanın tehlikeli olacağını belirtmek gerekir. Örneğin birbiri ile uyumlu veri sağlamasını beklediğimiz üç sensör verisi uyumlu olmadığında bir probleme işaret ediyor olabilir. Böyle bir durumda PCA dönüşümüne bu üç sensörden gelen veriyi dahil etmemek gerekir.

Github reposu için tıklayın.

Keyifli öğrenmeler 🙂

İlk Yorumu Siz Yapın

Bir Cevap Yazın

Translate »
%d blogcu bunu beğendi: