layout | title | slug | author | categories | references | thumbnail | ||||
---|---|---|---|---|---|---|---|---|---|---|
post |
Temel Bilesen Analizi |
principal-component-analysis |
Bahri ABACI |
|
/assets/post_resources/principal_component_analysis/thumbnail.png |
Temel Bileşen Analizi (Principal Component Analysis), bir veri setinin en küçük karesel ortalama hata ile bir alt uzaya (genelde daha küçük boyutlu) izdüşümünü sağlayan dönüşüm matrisini bulmamıza yarayan bir analiz yöntemidir. Temel Bileşen Analizi (TBA) yüksek boyutlu verilerin daha düşük boyutlara indirilerek görselleştirilmesinde, veri setinin gürültüden arındırılmasında, izdüşüm sonrası elde edilen değerlerin bir araya getirilerek kullanılması durumunda ise yüz tanıma, karakter tanıma gibi uygulamalarda öznitelik olarak kullanılabilmektedir. Bu yazımızda TBA' nin matematiksel olarak nasıl hesaplanacağı ispatlandıktan sonra, eğitimcisiz boyut indirgeme yöntemi olarak nasıl çalıştığı incelenecektir.
[Özdeğer ve Özvektörler]({% post_url 2019-03-26-ozdeger-ve-ozvektorler %}) yazımızda büyük bir veri setinin kovaryans matrisinin özdeğer ve özvektör analizi yapıldığında, özvektörlerin verinin en yüksek değişintiyi gösterdiği düzlemi/ekseni, özdeğerlerin ise bu düzlemdeki değişinti miktarını gösterdiğini söylemiştik. Şimdi bu söylemimizi TBA' nin yazımızda verilen tanımını, "bir veri setinin en küçük karesel ortalama hata ile daha küçük boyutlu bir alt uzaya izdüşümünü sağlayan dönüşüm matrisini bulmamıza yarayan bir analiz yöntemidir", kullanarak ispatlayalım.
Yukarıda verilen şekilde verilen
Bu durumda Pisagor teoremi yardımı ile izdüşüm hatasının karesi aşağıdaki formül ile hesaplanabilir.
Elimizde
$$\mathcal{L}\left (\mathbf{p} \right )=\frac{1}{N}\sum_{n=1}^{N}\left\lVert\mathbf{y_n}-\mathbf{x_n}\right\lVert ^2 = \underbrace{\frac{1}{N}\sum_{n=1}^{N}{\mathbf{x_n}^\intercal\mathbf{x_n}}}{2a} - \underbrace{\frac{1}{N}\sum{n=1}^{N}{\mathbf{p}^\intercal \mathbf{x_n}\mathbf{x_n}^\intercal\mathbf{p}}}_{\text{2b}} \tag{2}$$
Amacımız hatanın en küçük olduğu
Denklem
Denklem
Denklem
bulunur. Denklem
İfadede yer alan
[Özdeğer ve Özvektörler]({% post_url 2019-03-26-ozdeger-ve-ozvektorler %}) yazımızda özdeğer ve özvektörlerin IMLAB içerisinde yer alan eig
fonksiyonu yardımıyla hesaplanabileceğini görmüştük. Kovaryans hesaplamak için de kütüphanede yer alan covariance
fonksiyonu kullanılarak Temel Bileşen Analizi aşağıdaki verilen kod parçassı ile hesaplanabilmektedir.
// compute the PCA of the input
void pca(matrix_t *input, matrix_t *eigValues, matrix_t *eigVectors)
{
// input: DxN features where N is the number of sample and D is the dimension of the data
int i, j;
// allocate covariance matrix
matrix_t *cov = matrix_create(float, rows(input), rows(input), 1);
// find covariance matrix of the input matrix
for (i = 0; i < rows(input); i++)
{
for(j = 0; j < rows(input); j++)
{
atf(cov, i, j) = covariance(data(float, input, i, 0, 0), data(float, input, j, 0, 0), cols(input));
}
}
// compute the principal components of the input
eig(cov, eigValues, eigVectors);
// remove unused covariance matrix
matrix_free(&cov);
}
Kod parçası girdi olarak verilen sıfır ortalamalı (ortalaması çıkartılmış)
Büyük veri işlemede ve veri madenciliğinde verinin görselleştirilebilmesi ve veri hakkında çıkarımların yapılabilmesi için
TBA sonucu bulunan özvektörlere karşı gelen özdeğerler, verinin o özvektör eksenindeki değişinti miktarını göstermektedir.
- özdeğer ve karşı gelen özvektörleri (
$\lambda_i$ ) büyükten küçüğe sıralanır -
$\mathcal{t}= \tau\sum_i{\lambda_i}$ ihtiyaç duyulan toplam değişinti hesaplanır -
$\min_{K} \sum_{i=1}^{K}{\lambda_i} > \mathcal{t}$ şartını sağlayan$K$ değeri bulunur
Bu işlem sonrasında bulunan
Mor İris Çiçeği veri seti üzerinde TBA yapıldığında özdeğer vektörü
Grafikten de görüldüğü gibi veri setinin değişintisinin çok büyük bir kısmı birinci temel bileşen doğrultusunda gerçekleşmektedir. Böyle bir veri seti için sadece birinci temel bileşen doğrultusundaki izdüşümler (
Temel Bileşen Analizi her ne kadar eğitimcisiz boyut indirgeme yöntemleri arasında akla gelen ilk yöntem olsa da sınıfların en büyük değişintinin bulunduğu eksen yönünde dağılmadığı durumlarda (çok nadir) boyut indirgeme amacı ile kullanılamamaktadır. Aşağıda oluşturulan kasıtlı örnekte bu durum görselleştirilmiştir. A ve B sınıflarını ayırmak için yapılan iki öznitelikli ölçümler soldaki grafikte verilmiştir.
Bu ölçümlere ait TBA sonucu ise sağdaki grafikte verilmiştir. Dikkat edilecek olursa A ve B sınıfı birinci temel bileşen doğrultusunda en yüksek değişintiyi göstermesine rağmen bu doğrultuda (
Yazıda yer alan analizlerin yapıldığı kod parçaları, görseller ve kullanılan veri setlerine cescript_blog_principal_component_analysis GitHub sayfası üzerinden erişilebilir.
Referanslar
- Jolliffe, Ian. Principal component analysis. Springer Berlin Heidelberg, 2011.
- Iris çiçeği veriseti wikipedia sayfası
- Python scikit kütüphanesinde yer alan eğitimcisiz boyut indirgeme yöntemleri