Principal Component Analysis (PCA) Algoritması-Makine Öğrenmesi-

M. Fatih Türkoğlu
2 min readJul 15, 2021

--

Bu yazımda denetimsiz öğrenme algoritmalarından Principal Component Analysis’ den (PCA, Temel Bileşenler Analizi, TBA) bahsedeceğim. TBA veri setini dönüştüren bir metottur. Dönüştürülen öznitelikler istatistiksel olarak birbirlerinden bağımsızdır. Böylece veri setinde temel bileşenler elde edilir. TBA istatistiksel bir tekniktir ve temel amacı yüksek boyutlu verilerde en yüksek varyans ile veri setini tutmak ve bunu yaparken de boyut indirgenmesini sağlayan bir tekniktir.

Image From Chris Albon

Makine Öğrenmesi problemleri binlerce hatta milyonlarca öznitelikten oluşabilir. Bu miktardaki öz nitelikle işlem yapmak, algoritmanın eğitilmesini güçleştirdiği gibi iyi bir tahmin yapmak da zor olur. Burada TBA algoritması sayesinde özniteliklerin miktarı indirgenebilir. TBA’nın ana kullanım amacı da budur aslında. TBA’nın diğer kullanım alanlarına bakacak olursak:

  • Veri görselleştirme
  • Parazitleri filtreleme
  • Önemli öznitelikleri çıkartmak
  • Yüz tanıma

gibi türlü kullanım alanlarının olduğunu görebiliriz.

TBA’nın kullanımına bir örnek verelim. Düşünelim ki 100.000 özniteliğe sahip bir veri setinde çalışıyorsunuz. Bu veri setini TBA algoritması kullanarak 20.000 özniteliğe kadar indirgediniz, bu noktada TBA size verilerinizin kaybolmama garantisini ne yazık ki vermez.

Üstteki figürde görüldüğü gibi 3 boyutlu olan veri seti 2 boyuta indirgenmiş yani öznitelik miktarı azaltılmış. Fakat 3 boyuttan 2 boyuta büyük veri setlerini indirgemek bazı verilerin üst üste çakışmasına sebep olabilir. Buda veri kaybına neden olacaktır.

Şimdi ise bu anlattıklarımızı python kodlaması üzerinde gösterelim.

import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline

X, y = datasets.load_wine(return_X_y=True)


X_df = pd.DataFrame(X)
X_df.corr(method='pearson')

correlation, pvalue = pearsonr(X[:, 5], X[:, 6])
print(correlation)

plt.scatter(X[:, 5], X[:, 6])
plt.show()

model = PCA()
transformed = model.fit_transform(X)

print(transformed.shape)

transformed_df = pd.DataFrame(transformed)
transformed_df.corr(method='pearson')

plt.scatter(transformed[:, 5], transformed[:, 6])
plt.show()

scaler = StandardScaler()
pipeline = make_pipeline(scaler, model)
pipeline.fit(X)

pca_features = PCA(n_components=3)
dimension_reduction_result = pca_features.fit_transform(X)
dimension_reduction_result.shape()

Yardımcı Kaynaklar:

https://aylablgn.medium.com/temel-bile%C5%9Fen-analizi-principal-component-analysis-pca-makine-%C3%B6%C4%9Frenmesi-4-be5dd634463b

https://www.youtube.com/watch?v=fqegK5IyfqU

https://www.youtube.com/watch?v=xJsNVzo_xAs

https://www.veribilimiokulu.com/makine-ogrenmesine-cok-degiskenli-istatistiksel-yaklasimlar-temel-bilesenler-analizi/2/

--

--