Makine Öğrenmesi - I-Doğrusal İlişkiler (Linear Relationships)

Temel Bileşen Regresyonu (PCR)

Yayın tarihi :28-Ara-21
Bölüm kodlarını ve/veya veri setlerini indir.

Temel Bileşen Regresyonu Nedir?

Temel Bileşen Regresyonu (Principal Component Regression) (PCR), makine öğrenimi alanında yapılan çalışmalarda boyut azaltmak için kullanılan ve iki aşamadan oluşan bir çeşit denetimsiz öğrenme algoritması olarak tanımlanmaktadır. (Denetimsiz olmasının nedeni; tahmin (hedef) değişkeni hakkında herhangi bir bilgi kullanmaz, sadece değişkenlerin kuvvet değerlerine göre işlem yapmaktadır.)

  • 1.Aşama: Temel Bileşen Analizi (PCA) kullanılarak mevcut veri seti değişken sayısında düşürme işlemi yapılır(Boyutsallık azaltılır).
  • 2.Aşama: PCA işlemi sonucunda oluşan veri setine herhangi bir regresyon işlemi uygulanarak model eğitilir.

Bu algoritmalar kullanılarak verisel çerçevede birbirleri ile ilişki gösteren özniteliksel analizlemeler, matematiksel uzantılar kullanılarak dikey dönüşüm(Ortogonalite) fonksiyonları yardımıyla doğrusal ve birbirleriyle ilişkisi bulunmayan özniteliksel formlara dönüşümü sağlanmaktadır. Ortogonalite dikey fonksiyonları kullanılarak gerçekleştirilen bu dönüşümün son ürün özellikleri "Ana / Temel Bileşen" olarak adlandırılmaktadır. Ayrıca, oluşturulan ana bileşenler kullanılacak değişkenlerin sahip oldukları varyans değerlerini tanımlayabilme kabiliyeti bulunmasına göre seçilmektedir.

Not: Oluşturulan ana bileşenlerin tamamı birbirlerine karşı diklik gösterir ve ana bileşenin bütün kümesel formlarında maksimum varyans birinci ana bileşende gözlenir.

Günümüzde PCR; Keşifsel Veri Analizi ve birtakım tahminsel süreçlere dayalı olarak meydana getirilen modelleme çalışmaları alanlarında oldukça sıklıkla kullanılan popüler bir regresyon tekniğidir. Ayrıca, bu teknikte kullanılan algoritmalar sayesinde varyans değerlerinde oldukça ciddi indirgemeler sağlanır ve bunun sonucunda çalışılmak istenilen veri kümesi referans alınarak oldukça yüksek performans gösteren desen çizimleri elde edilmektedir.

Bu bilgilerden hareketle temel bileşen regresyonunu, matematiksel bazı uzantıları kullandığından dolayı istatiksel bir çalışma olarak ifade edilebilir. Bu uzantılara örnek olarak;

  • Varyans
  • Kovaryans
  • Korelasyon
  • Özvektör
  • Özdeğer

gibi kavramlar verilebilir.

İfade edilen tanımlamalar dikkate alındığında temel bileşen regresyonu, oldukça yüksek boyutlu verileri kaynak olarak alır ve bu verilerin özelliklerini daha küçük boyutlarda nasıl ifade edilebileceğini saptamak için kullanılmaktadır.  

Ayrıca, yukarıda bahsedildiği üzere temel bileşen regresyonun genel işleyiş mekanızmaların görevleri arasında, veri kümesinde ait her bir özelliğin varyans oranları dikkate alınarak oransal indirgemeler yapıldığı ve küme içerisinde yüksek özellik gibi faktörlerin incelendiği ifade edilebilir. Bu incelemeye bağlı olarak üst tabakada bulunan verilerin birbirlerinden ayrımları tespit edilebilir ve boyutlulukta indirgemeler sağlanır.

Temel Bileşen Regresyonu Neden Kullanılır?

Temel bileşen regresyonu, birçok farklı alanda farklı amaçlar doğrultusunda iyileştirme ve geliştirme süreçleri için kullanılmaktadır. Spesifik olarak bazı kullanım amaçları;

  • Veri kümesinde bulunan değişken yapılarının birbirleri arasındaki ilişkilerin tespiti,
  • Çalışılmak istenilen veri kümelerinin yorumlanması,
  • Çalışılmak istenilen veri kümelerinin görselleştirilmesi,
  • Çalışmaları basitleştirmek, sonuçların doğruluk ve başarı oranlarını artırmak için değişkenlerin seyreltilmesi,

gibi örnekler ile ifade edilebilir.

Temel Bileşen Regresyonunda Ana/Temel Bileşenler Nedir?

Yukarıda bahsedildiği üzere Ortogonalite dikey fonksiyonları kullanılarak gerçekleştirilen dönüşümün son ürün özellikleri "Ana Bileşen" olarak adlandırılmaktadır. Dönüşüm sonucunda meydana gelen ana bileşenlerin oranı ise temel olarak iki farklı kategoride incelenebilir. Bunlar;

  • Veri seti içerisinde bulunan veri özelliklerine gerçek oranda eşitlik,
  • Veya daha azlık

olarak ifade edilebilir. Genel anlamda ana bileşenlerin bazı temel özellikleri ise;

  1. Dönüşüm sonucunda oluşan ana bileşenler, gerçek ve orijinal özelliklerin doğrusal bir birleşimi olmak zorundadır,
  2. Bu bileşenlerin dönüşümü için Ortogonalite dikey fonksiyonları kullanıldığından dolayı değişkenler birbirlerine diktir ve bunun sonucunda korelasyon sıfırdır,
  3. Bu bileşenler temel olarak "+1'den +n'ye " doğru ilerlemektedir. "+n'ye" her ne kadar büyürse ana bileşenlerin değerlerinde azalmalar meydana gelir. Bu durumdan dolayı en iyi değer "+1" olarak ifade edilebilir. 

Temel Bileşen Regresyonunda Kullanılan Matrisler Nelerdir?

Temel bileşen regresyonun genel olarak çalışma eylemleri transpoz değerinin kendisine eş olduğu "kare-simetrik matris "kullanılarak gerçekleştirilir. Bunun haricinde amaca göre korelasyon matrisi veya kovaryans matrisi kullanılmaktadır. 

Temel Bileşen Regresyonunda Algoritma Oluşturma Adımları Nelerdir?

  1. İstenilen veri kümelerinin elde edinilmesi: Daha önceki derslerde de bahsedildiği üzere, eğer ki makine öğrenimi alanında bir çalışma yapılmak istenirse, öncelikli olarak veri kümesi içerisinde bulunan istenilen değişkenler "X" ve "Y" olarak iki farklı kategoriye ayrılır. Bu noktada ifade edilen "X" temel olarak eğitim seti(training set), "Y" ise test seti(test set) olarak ifade edilebilir.
  2. Verileri herhangi bir yapı üzerinde ifade etmek: Makine öğreniminde yapılmak istenilen hemen hemen her çalışmada olduğu gibi verisel öğeler satırlarda, verisel özelikler ise sütunlarda tanımlanır.
  3. Verilerin standartlaştırılması: Veriler belirlenmiş standartlaştırma teknikleri kullanılarak standartlaştırılır. 
  4. Kovaryans hesaplaması: Bu adımda kovaryans hesaplaması için uygun matris yapısı seçilir. Bu adımda seçilen matris değeri devrikleştirilir, daha sonra meydana gelen devrik değer tekrardan seçilen matris ile çarpılır ve tüm bu sürecin sonucunda seçilen matris teriminde kovaryans matrisi elde edilmiş olunur. 
  5. Özdeğer ve Özvektör hesaplamaları: Bir önceki adımda elde edilen seçilen matrisin, kovaryans matrisi baz alınarak özdeğer ve özvektör hesaplamaları gerçekleştirilir. Temel bileşen regresyonunda bu adım oldukça önem arz etmektedir. Çünkü, özvektör terimi yüksek oranlarda bilgiye sahiptir ve bu vektörün katsayılarıda özdeğer terimlerini ifade etmektedir. 
  6. Özvektörlerin sıralanması: Bu adımda oldukça yüksek oranlarda bilgiyi bünyesinde barındıran özvektörler büyükten küçüğe doğru sıralanır. Bu işlem gerçekleştirildiği esnada eş zamanlı olarak özdeğer terimleri P matrisi(karmaşık kare matris türüdür) kullanılarak sıralanır. Bu işlemler sonucunda yeni oluşan yapı "P* " olarak ifade edilir.
  7. Temel bileşen hesaplaması: Bu adımda, bir önceki adımlda oluşturulan P* matrisi ile dördüncü adımda seçilecek matris çarpılır. Bu çarpım sonucunda (örneğin Z matrisini seçelim)  "Z* " olarak ifade edilen matris oluşturulur. Oluşturulan Z* matris yapısında gerçekleştirilen bütün gözlemler gerçek özelliklerin doğrusal bir formda birleşimine neden olmaktadır. 
  8. Veri kümesi seyreltilmesi: Son olarak oluşturulan yeni veri kümesi analizlenir ve çalışmalarda kullanılmayacak veriler kümeden uzaklaştırılır. 

Temel Bileşen Regresyonu Hangi Alanlarda Kullanılır?

Günümüzde temel bileşen regresyonu temel olarak yapay zeka çalışmalarında kullanılacak veri kümelerinin boyutsal küçültülmesi için yaygın bir şekilde kullanım görmektedir. Bu ifadeden anlaşılacağı üzere hemen hemen her çalışmada başarılı bir şekilde kullanım görmektedir. Örneğin;

  • Bilgisayar görmesi,
  • Görüntülerin sıkıştırılması,
  • Finansal alanda kaynak olarak kullanılacak oldukça yüksek verilerin küçültülmesi,

gibi alanlarda oldukça yaygın ve başarılı bir şekilde kullanım görmektedir.  

Örnek-1: "Cars" veri seti üzerinden, Price sütununa ilk olarak Lasso regresyon algoritmasını uygulayalım ve daha sonra da PCR aşamalarını uygulayarak elde edilen regresyon sonuçlarına bakıp karşılaştırma yapalım. Veri setimiz araba özelliklerini ve bu özelliklere göre fiyatının ortaya çıktığı 804 satırlık bir veri setidir.

import pandas as pd
import warnings
warnings.filterwarnings("ignore")
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error,r2_score, mean_absolute_error
from sklearn.linear_model import Lasso
from sklearn.decomposition import PCA
#Veri setini içe aktaralım
df=pd.read_excel("cars.xls")
df.head()

Çıktı:

PCR modeli kullanılmadan;

#x ve y değerlerine atama yapıldı
x,y=df.drop("Price",axis=1),df[["Price"]]
#veri setinde object değerler olduğu için get_dummies işlemi uygulanır    
x=pd.get_dummies(x,drop_first=True)
#test ve train verileri oluşturuldu
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=.2,random_state=13)

Lasso Regresyon modülünü kullanarak Modeli eğitelim  

#Lasso Regrasyon
L=Lasso()
#Model öğrendi
L.fit(x_train,y_train)
#Tahminleme yapıldı
predict_L=L.predict(x_test)
print("MSE: {}".format(mean_squared_error(y_test,predict_L)))
print("RMSE: {}".format((mean_squared_error(y_test,predict_L))**.5))
print("MAE: {}".format(mean_absolute_error(y_test,predict_L)))
print("r2_score: {}".format(r2_score(y_test,predict_L)*100))

Çıktı:

MSE: 1297318.7148462872
RMSE: 1138.9989968592101
MAE: 738.0510074426261
r2_score: 98.902040987547

PCR modeli kullanarak;

İlk aşamada Temel Bileşen Analizi (PCA) ile boyutsallık azaltılır ve daha sonra da hernagi bir regresyon modeli ile veri seti eğitilir. 

#Object sütunları ayıralım
df_object=df.select_dtypes("object")
df_object.head()

Çıktı:

#sayısal sütunları listeleyelim
df_number=df.select_dtypes("number")
df_number.head()

Çıktı:

#Hedef sütunumuz olan "Price"yi df_number veri setinden ayıralım
df_number,df_Price=df_number.drop("Price",axis=1),df_number[["Price"]]
df_number.head()

Çıktı:

df_Price.head()

Çıktı:

#df_number veri setine PCA işlemi uygulayarak 1 sütuna indirelim
pca=PCA(n_components=1)
df_number=pca.fit_transform(df_number)
df_number=pd.DataFrame(df_number,columns=["7 Sutuna PCA Uygulandi"])
df_number.head()

Çıktı:

#Yukarda ayırdığımız object sütunları ile son oluşturduğumuz df_number sütunlarını birleştirelim
df_PCR=pd.concat([df_Price,df_number,df_object],axis=1)
df_PCR.head()
#veri seti 6 sütuna düşürülmüş oldu

Çıktı:

Lasso Regresyon modülünü kullanarak modeli tekrar eğitelim.  

#x ve y değerlerine atama yapıldı
x,y=df_PCR.drop("Price",axis=1),df_PCR[["Price"]]
#veri setinde object değerler olduğu için get_dummies işlemi uygulanır    
x=pd.get_dummies(x,drop_first=True)
#test ve train verileri oluşturuldu
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=.2,random_state=13)
#Lasso Regrasyon
L=Lasso()
#Model öğrendi
L.fit(x_train,y_train)
#Tahminleme yapıldı
predict_L=L.predict(x_test)
print("MSE: {}".format(mean_squared_error(y_test,predict_L)))
print("RMSE: {}".format((mean_squared_error(y_test,predict_L))**.5))
print("MAE: {}".format(mean_absolute_error(y_test,predict_L)))
print("r2_score: {}".format(r2_score(y_test,predict_L)*100))

Çıktı:

MSE: 1298130.6276783452
RMSE: 1139.355356189782
MAE: 746.2916646893096
r2_score: 98.90135384182013

Sonuç olarak;

  • PCR modülü uygulamadan Lasso regresyon modeli %98.902 doğruluk değeri ile tahmin etti.
  • 7 sütun değeri PCA modülü ile 1 sütuna düşürüldü ve daha sonra yine doğrusal regresyon işlemi yapıldı. Lasso regresyon modeli bu defa da %98.901 doğruluk oranı ile tahmin etmiş oldu.
  • PCA işlemi ile sütun sayılarını düşürmek veri setini etkilemedi sadece çok küçük bir farka (neredeyse 10.000'de 1) sebep oldu.
Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.