PCA
PCA, “Principal Component Analysis”ın kısaltmasıdır ve temel olarak veri analizi ve boyut indirgeme tekniklerinden biridir. PCA, çok boyutlu veri setlerini daha düşük boyutlu bir forma dönüştürmek için kullanılırken, verinin en önemli özelliklerini korumayı amaçlar. İşte PCA’nın temel prensipleri:
- Değişkenleri Dönüştürme: PCA, başlangıçta çok sayıda değişken içeren bir veri setini daha az sayıda değişken içeren bir forma dönüştürmek için kullanılır. Bu, veri setinin karmaşıklığını azaltabilir.
- Temel Bileşenlerin (Principal Components) Bulunması: PCA, veri setindeki varyansı maksimize etmeye çalışan yeni değişkenler veya “temel bileşenler” oluşturur. Bu temel bileşenler, veri setinin en fazla varyansını içeren doğrultulardır.
- Boyut Azaltma: PCA, en yüksek varyansa sahip temel bileşenleri seçerek veya sıralayarak, veri setini daha düşük boyutlu bir forma indirger. Bu, veriyi daha anlaşılır ve işlenebilir hale getirir.
- Bilgi Kaybı: Boyut indirgeme işlemi sırasında bazı bilgi kaybı olabilir, çünkü daha az sayıda değişkenle orijinal veri setinin tüm ayrıntılarını korumak mümkün olmayabilir. Ancak, önemli varyansı korumak için en yüksek varyanslı temel bileşenler seçilir.
PCA, özellikle büyük boyutlu veri setleri üzerinde çalışırken kullanışlı bir araçtır. Veri madenciliği, özellik mühendisliği, görüntü işleme, ve veri sıkıştırma gibi birçok uygulama alanında kullanılmaktadır. Temel olarak veriyi daha basit bir hale getirmek ve önemli bilgileri korumak için kullanılır. Bende PCA için çeşitli kaynaklardan edindiğim bilgileri, bu yazıda toplamaya çalıştım umarım faydalı olur.
Bu grubun fotoğrafını çekmek istiyoruz hangi açıdan çekersek fotoğraftaki kişiler en iyi şekilde çıkar? PCA yani boyut azaltma işlemi de budur aslında verileri tek bir veriye indirerek olabildiğince en belirgin resmi çekmek gibi düşünebiliriz.
verilerimizi bu iki çizgi üzerine yansıttığımızı düşünelim hangisi daha iyi görünüyor sizce?
ikinci çizgimiz verileri daha iyi, daha belirgin bir şekilde yansıtmış.
Elimizde bu 2 özellikten oluşan veri setimiz olduğunu düşünelim. Bu 2 özellikte Boyut ile alakalı özellikler.Büyük bir m² ‘ye sahip eviniz varsa büyük ihtimal daha fazla odaya sahipsinizdir. o yüzden bu iki özelliği tek bir özellikte, boyut özelliğinde toplayabiliriz. İdeali, bu işlemi yapmak için PCA (Principal Component Analysis) gibi bir teknik kullanmaktır. İşte bizde bu yöntem sayesinde veriyi daha basit bir şekilde temsil edebiliyoruz.”
Şimdi, veri setimiz sadece bir boyuta indi, yani artık her ev için yalnızca bir sayıya sahibiz. iki boyuttan, yani odaların sayısı ve evin büyüklüğü bilgisinden, yalnızca “boyut” özelliğine sahip olan bir boyuta geçiş yaptık. Bu sayede veri setimiz daha basit hale geldi. iki sütunlu bir tablodan, yalnızca bir sütunlu bir tabloya dönüştü.
şimdi iki boyutlu veriler üzerinden yavaş yavaş PCA adımlarına ve hesaplamalarına bakalım.
PCA Adımları
- Veri Merkezileştirme
- Kovaryans Matrisinin Hesaplanması:
- Özdeğer ve Özvektörlerin Hesaplanması
- Özdeğerlerin Sıralanması
- Bileşenlerin Seçimi:
- Yeni Veri Matrisinin Oluşturulması
ilk önce verilerimizi merkezileştirmeden ve kovaryans matrisini oluşturmadan önce varyans nedir ona bakalım.
Varyans Nedir?
Varyans, veri kümesindeki verilerin ne kadar dağıldığını veya dağılımının ne kadar değişken olduğunu ölçen istatistiksel bir terimdir. Varyans, bir veri kümesindeki her verinin ortalama değerden ne kadar uzakta olduğunu gösterir. Daha düşük bir varyans, verilerin ortalama etrafında daha yoğun bir şekilde toplandığı anlamına gelirken, daha yüksek bir varyans, verilerin ortalama etrafında daha yayıldığı veya dağıldığı anlamına gelir.
Varyans, aşağıdaki formülle hesaplanabilir:
- Veri Dağılımını Ölçme: Varyans, verilerin ne kadar dağıldığını veya değişken olduğunu ölçer.
- Değişkenlik Derecesini Belirleme: Düşük varyans, verilerin ortalama etrafında daha sıkı toplandığını, yüksek varyans ise daha yaygın dağıldığını gösterir.
- Veri Karşılaştırma: Farklı veri kümesi veya grupları arasındaki değişkenliği karşılaştırmada kullanılır.
- Hata Analizi: İstatistiksel tahminlerin güvenilirliğini değerlendirirken önemlidir.
Veri Setinin Örneği:
Diyelim ki elimizde şu 2 boyutlu veri seti var:
- X ve Y Değerlerinin Ortalaması Hesaplama: İlk olarak, x ve y değerlerinin ortalamalarını hesaplayın.
Ortalama(x) = (1 + 2 + 3 + 4) / 4 = 2.5
Ortalama(y) = (3 + 4 + 5 + 6) / 4 = 4.5
2. Varyans Hesaplama: Her x ve y değeri için, ortalama değerden ne kadar uzakta olduğunu hesaplayın, karesini alın ve bu değerleri toplayarak varyansı hesaplayın.
Varyans(x) = [(1–2.5)² + (2–2.5)² + (3–2.5)² + (4–2.5)²] / 4 = 1.25
Varyans(y) = [(3–4.5)² + (4–4.5)² + (5–4.5)² + (6–4.5)²] / 4 = 1.25
Ancak, iki değişken arasındaki ilişkinin yönünü ve büyüklüğünü anlamak için kovaryansı kullanırız. Kovaryans, iki değişkenin birlikte nasıl değiştiğini ölçer. Bu tür ilişkileri ölçmek için kovaryansa ihtiyacımız var.
Aşağıdaki görselde iki farklı veri kümesi bulunuyor ilk veri kümesinin negatif bir eğimi, ikincinin pozitif bir eğimi bulunuyor yani farklı bilgiler taşıyorlar ama bu iki veri kümesininin x varyansı ve y varyansları eşit. Ama dediğimiz gibi aslında ikiside farklı iki veri kümesi peki bu iki veri kümesini nasıl birbirinden ayırabiliriz. İşte burda kovaryans devreye giriyor.
Kovaryans
- İlişki Belirleme: Kovaryans, iki farklı değişken arasındaki ilişkinin durumunu belirler.
- İlişki Yönü: Pozitif kovaryans, değişkenlerin birlikte arttığını gösterir; negatif kovaryans ise biri artarken diğerinin azaldığını ifade eder .
- Değişkenlerin Birlikte Değişimi: Kovaryans, değişkenlerin birlikte nasıl değiştiğini gösterir. Büyük pozitif kovaryans, değişkenlerin büyük ölçüde birlikte değiştiğini, büyük negatif kovaryans ise birinin büyüdüğü ve diğerinin küçüldüğünü gösterir.
Peki, tekrardan asıl sorumuza geri dönelim görseldeki kırmızıyla çizilen yeri ayrı,turkuazla çizilen yeri ayrı veri kümeleri olarak düşünelim aşağıdaki örneğimiz gibi peki bunları nasıl birbirinden ayırabiliriz
Cevap kordinatların çarpımıyla, kordinatların çarpımının toplamının veri adedine bölünmesi bize kovaryansı verir.
mavi noktaları ayrı kırmızı noktaları ayrı değerlendirdiğimizde görüyoruz ki 2. ve 4. bölgelerden eksi değerler elde ediyoruz yani bu bize burda negatif bir eğim olduğunu söyler kırmızı noktalarda ki 1 ve 4. bölgeler için ise pozitif değerler elde ediyoruz burda pozitif bir eğim olduğundan da söz edebiliriz yani ilişkinin yönü hakkında bilgi edinmiş oluyoruz böylece
Yani, bu iki kümedeki her bir noktanın koordinatlarını alın ve bu koordinatları çarparsanız, bir sonuç elde edersiniz. Örneğin, ortadaki nokta için, 0 ile 0'ı çarparsınız ve sonuç 0 olur. Sağ üst köşedeki ve sol alt köşedeki noktalar için, 2 ile 1'i çarparsınız ve sonuç 2 olur. Ancak eksi işareti olan iki nokta için, -2 ile -1'i çarparsınız ve sonuç yine 2 olur. Bu nedenle, koordinatların çarpımı, bu iki noktada pozitif ve diğer iki noktada negatif olur ve bu noktaları birbirinden ayırmamıza yardımcı olur.
Varyans değerlerimizi bulduktan sonra şimdi sıra bir 2x2 matris oluşturmada.
Bu 2x2 matris, sadece bu veri kümesinin iki varyansı ve kovaryansı tarafından oluşturulacaktır. Sol üst köşeye X varyansını koyacağız yatay yöndeki verilerden elde ettiğimiz ,Sağ alt köşeye Y varyansını, yani dikey yöndeki verilerden elde ettğimiz varyansı koyacağız ve diğer iki noktaya ise XY nin kovaryansının sonucunu iki kez koyacağız.
Şimdi aşağıdaki gibi bir kovaryans matrisimiz olsunBurada 9, X varyansını, 4 ise Y varyansını temsil ediyor, 4'ler ise kovaryansı gösteriyor.
Bu matris, X yönünde oldukça yayılmış gibi görünüyor, ancak Y yönünde pek yayılmamış gibi görünüyor.
Lineer Dönüşüm
Lineer dönüşüm veya lineer transformasyon, bir vektör uzayındaki vektörleri başka bir vektör uzayındaki vektörlere dönüştüren matematiksel bir işlemdir. Lineer dönüşümler genellikle matrislerle temsil edilir ve bir vektörün lineer bir dönüşüme tabi tutulması sonucunda yeni bir vektör elde edilir.
Örnek olarak aşağıdaki gibi bir 3 e 1 ve 1 e 2 bir matrisin -1 e 2 ye bir matrisle girdiği dönüşüm bize -1 e 3 çıktısını verir
PCA (Principal Component Analysis) sırasında lineer dönüşüm, verinin boyutunu azaltmak ve önemli bilgileri korumak için kullanılır. Tekrardan PCA’nın ana adımlarını ve nerde olduğumuz hatırlayalım:
- Veri Merkezileştirme
- Kovaryans Matrisinin Hesaplanması:
- Özdeğer ve Özvektörlerin Hesaplanması:
- Özdeğerlerin Sıralanması:
- Bileşenlerin Seçimi:
- Yeni Veri Matrisinin Oluşturulması: Seçilen özvektörler kullanılarak, orijinal veri matrisi yeni bir boyutlu dönüşüm geçirir. Bu yeni matris, orijinal verinin daha düşük boyutlu bir temsilini içerir.
Lineer dönüşüm, aslında adım 6'da kullanılır. Seçilen özvektörler, yeni veri matrisini oluşturmak için kullanılır ve bu matris, orijinal verinin boyutunu azaltırken, önemli bilgileri koruyacak şekilde dönüştürülür. Bu, veri sıkıştırma, görselleştirme veya analiz gibi birçok uygulamada kullanılır.
Şimdi ise oluşturduğumuz bu kovarayans matrisinin özdeğer ve özvektölerini buluyoruz Özdeğerler, bu özvektörlerin ne kadar uzatıldığını veya sıkıştırıldığını belirler.
Bu matris için özvektörlerimiz (2,1) ve (-1,2) dir özdeğerlerimiz ise 11 ve 1 dir.
ilk olarak eigenvalues bulunur sonra o bulunan değerlerle eigenvectör bulunur.
Burdak işlemler biraz karışık gelmiş olabilir o yüzden bu hesaplamaların nasıl yapıldığıyla ilgili yazımada bakabilirsiniz.
Bulduğumuz 11 ve 1 özdeğerleri için öz vektörlerimizi 2,1 ve -1,2 dir
PCA’nın temel adımları:
- Veri Merkezileştirme (Centering): İlk adım, veriyi merkezileştirmektir. Bu, her özellikten ortalama değeri çıkartarak yapılır. Veri matrisi, bu merkezlenmiş değerlerle oluşturulur.
- Kovaryans Matrisinin Hesaplanması: Merkezlenmiş veri matrisi kullanılarak, veri özelliklerinin kovaryans matrisi hesaplanır. Kovaryans matrisi, veri özelliklerinin birbirleriyle nasıl ilişkilendiğini gösterir.
3. Özdeğer ve Özvektörlerin Hesaplanması: Kovaryans matrisinin özdeğerleri ve özvektörleri hesaplanır. Bu matematiksel işlem, özdeğer ve özvektörlerin bulunmasını içerir. Özdeğerler, verinin farklı yönlerdeki varyansını temsil ederken, özvektörler, bu yönleri gösterir.
4. Özdeğerlerin Sıralanması: Özdeğerler genellikle büyükten küçüğe sıralanır. Bu, verinin hangi bileşenlerinin daha fazla varyans taşıdığını belirler.
5. Bileşenlerin Seçimi: Özdeğerlerin sıralanmasına dayanarak, en yüksek özdeğerlere karşılık gelen özvektörler seçilir. Bu özvektörler, verinin en fazla bilgiyi taşıyan yönlerini temsil eder ve yeni temsilcilerin bileşenleri olarak kullanılır.
6. Yeni Veri Matrisinin Oluşturulması: Seçilen özvektörler kullanılarak, orijinal veri matrisi yeni bir boyutlu dönüşüm geçirir. Bu yeni matris, orijinal verinin daha düşük boyutlu bir temsilini içerir.
Son kısımda:
- Özdeğerler ve Özvektörler: PCA’da, verilerinizin kovaryans matrisini doğru bir şekilde hesaplar ve bu matristeki özdeğerleri ve özvektörleri bulursunuz. Her özvektör, verilerinizi temsil eden boyutların bir kombinasyonunu temsil eder ve özdeğerler, bu boyutların varyanslarını ifade eder. Özdeğerler büyükten küçüğe sıralanır.
- Özdeğerlerin Seçimi: Şimdi, büyük özdeğerlerin kaçını seçeceğinize karar vermelisiniz. Bu, verinin boyut azaltma seviyesine veya hangi boyutlara ulaşmak istediğinize bağlıdır. Örneğin, en büyük iki özdeğeri seçebilir ve geriye kalan üçünü atabilirsiniz.
- İki Boyutlu Gösterim: Seçilen özvektörleri ve özdeğerleri kullanarak, boyut azaltılmış bir uzay oluşturulur. Bu durumda, bir düzlem oluşturulur. Verilerinizi bu düzleme göre yansıtarak veya bir resim gibi bu düzlemde çizerek iki boyutlu bir gösterim elde edersiniz. Bu iki boyutlu gösterim, beş boyutlu verilerinizin oldukça iyi yansıtan bir temsilidir.
- İki Boyutlu Veri Tablosu: Bu iki boyutlu gösterim, daha küçük bir veri tablosu ile sonuçlanır. Bu tablo, verilerinizi olabildiğince iyi yakalar.
PCA, verilerin boyutunu azaltarak verilerin temsilini iyileştirmeye yardımcı olan güçlü bir araçtır. Bu, veri analizi ve özellik mühendisliği gibi birçok uygulamada kullanılır.
Bir de bir regresyon problemi için kod uygulamasının nasıl olduğuna bakalım.
- Bu kısımda verimizi ingirdiyoruz.
- son satırda ise görüldüğü üzere bileşen sayımız arttıkça bileşenlerin veri setini daha doğru temsil etme oranı da artıyor.
Bizim PCA kullanmamızda ki temel amaç büyük boyutlu veri setlerini acaba daha az boyutlarda daha iyi bir başarıyla temsil edebilir miyiz sorusuna cevap bulmak içindi.
- Burda sorumuzun cevabına ulaşmış oluyoruz.
- Grafiktende Görüldüğü üzere 19 boyutlu veri setimizi 6 boyuta indirdiğimizde hem veri setimizin %88 lik bir kısmını açıklamış oluyoruz hem de daha az hatası olan yeni bir model elde etmiş oluyoruz
Kodun tamamına burdan ulaşabilirsiniz:
PCA’ ı anlamada bilinmesi gereken temel konular için önceki paylaşımlarımada bakabilirsiniz.