Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Sarmal (Wrapper) Yöntemler ve Python Kodları

Yiğit Şener
6 min readNov 7, 2020

--

Değişken seçimi (feature selection) serisinin bu üçüncü yazısında wrapper yöntemlerini ele alacağız. Türkçe bu konuda yayınlanan farklı kaynaklarda wrapper kelimesi Türkçeye sarmal, sarıcı, örtü gibi ifadeler ile çevrildiğini gördüm. Ancak bu sözcükler wrapper kelimesinin karşılığını tam olarak yansıtmadığı için bu yazıda İngilizcesini kullanmaya devam edeceğim. Ancak yazının sonunda bu konuda naçizane fikrimi dile getireceğim.

Serinin Diğer Yazıları:

  1. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Genel Bakış
  2. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Filtreleme Yöntemleri ve Python Kodları
  3. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Sarmal (Wrapper) Yöntemler ve Python Kodları
  4. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Gömülü (Embedded) Yöntemler ve Python Kodları
  • Girdi değişken: Bağımsız değişken, öznitelik, input, predictor, yordayan, feature, attribute
  • Çıktı değişken: Bağımlı değişken, hedef değişken, output, target, yordanan

Girdi değişkenler ile çıktı değişkenler arasında kurulan ilişkinin model için anlamlı olup olmadığına istatistiksel yöntemler ile karar verebildiğimiz filtreleme yöntemlerinden bir önceki yazıda bahsetmiştim. O yazıda temel olarak vurgu yapılan nokta filtreleme yöntemlerinde değişkenin türüne göre seçilecek olan yöntemin belirlenmesidir. Yani girdi ya da çıktı değişkeninin kategorik ya da sayısal (sürekli) olması uygulanacak yöntemi farklılaştırmaktadır. Dolayısıyla modelleme öncesi yapılan bir işlem olup modelleme aşamasından farklı yürütülen bir süreçtir.

Wrapper Yöntemlerinin Aslı Nedir?

Aslında istatistik alanında bilgi sahibi olan herkesin bildiği gerçeğin makine öğrenmesi alanında da sanki hiç daha önce yokmuş gibi servis edilmesi ile canlandırılan bir yöntemler dizidir.

Burada fark olabilecek tek bir nokta belki eskiden yani henüz makineler bu kadar öğrenmeye aç olmadığı ya da yeterince güçlü olmadığı zamanlarda istatistikçiler bu işlemleri elle yapılmaktaydı. Ancak makine öğrenmesindeki döngüler içerisine bu yöntemlerin girmesi ile çok yüksek sayıdaki değişkenlerin seçimi makinelere kalmış oldu.

Wrapper Yöntemlerinin Çalışma Mantığı Nedir?

Bu yöntemler temel olarak modelleme aşmasında kullanılırlar. Model değişkenlerin seçimine göre tekrar ve tekrar kurulabilir. Ta ki en iyi sonuç veren model için de — ğişkenler seçilene kadar.ii-

Yukarıdaki modelleme adımlarından yola çıkarak numaralandırılmış yerleri açıklayarak wrapper yöntemlerinin mantığını anlamaya çalışalım:

  1. Modelleme için kullanacağımız veri setinin ham hali.
  2. Bu aşamada veri seti ile ilgili çeşitli işlemler yapılabilir. Bunlar betimleyici istatistikleri yorumlamak, kukla (dummy) değişken üretmek, kayıp (missing) değerleri doldurmak ya da kaldırmak gibi yöntemlerin yanı sıra değişken seçiminin bir diğer türü olan filtreleme yöntemleri de bu aşamada kullanılabilirler.
  3. Tüm bu ön hazırlık aşamasından sonra makine öğrenmesinde seçilen algoritma ile modelleme çalışması yapılır.
  4. Bu aşamada oluşturulan model performansı değerlendirilir. Öyle ki buradaki değerleme veri setinde yer alan değişkenlerin model üzerindeki etkisi göz önünde bulundurulur.
  5. Beşinci aşamada performansı iyi/kötü etkileyen değişkenler seçilir ya da çıkarılır. Böylece 3. aşamaya yeni seçilen/eksiltilen değişkenlerin yer aldığı veri seti ile devam edilir. Performansı en iyi yansıtan değişken seçimi olana kadar üçüncü, dördüncü ve beşinci aşamalar kendini tekrar eder.
  6. Son aşamada en iyi performans ile sonuçlandığı düşünülen, döngüden çıkan (3-4-5) model kesinleşmiş olur.

Peki ya bu yöntemler neler diye sormadan önce aşağıdaki notuma aklınızda tutmanızda fayda var.

Düşük etkisi görünen bir girdi değişkeninin modelden çıkarılması her zaman model performansının artacağı anlamına gelmez. Bu değişkenin başka bir girdi değişken ile olan ilişkisinden dolayı çıktı değişken etkileniyor olabilir. Bu yüzden farklı alt kümeler ile denemeler yapılmaktadır.

Wrapper Yöntemleri Nelerdir?

Regresyon ya da sınıflandırma algoritmalarında kullanılan temelde üç tip wrapper yöntemi bulunmaktadır bunlar:

  • İleri Doğru Seçim = Step Forward Selection
  • Geriye doğru seçim = Step Backwards Selection
  • Adımsal Seçim = Stepwise (Exhaustive) Selection

Bu yöntemleri açıklamadan önce örnek bir veri seti üzerinden model performansını gözlemleyebileceğimiz kodları yazalım. Kullanılan veri seti ülkelere göre cinayet oranlarını vermektedir. Data doğrudan statsmodels kütüphanesinden çağırılmış olup veri setindeki değişkenlerin anlamlarına buradan erişebilirsiniz.

Yukarıdaki kodda görüldüğü üzere veri setinden yola çıkarak bir regresyon modeli oluşturuyoruz. Çıkan modelin sonuçlarını aşağıdaki tabloya bakarak analiz edebiliriz.

Tablodan yola çıkarak yöntemlerimizi açıklayalım

İleri Doğru Seçim (Step Forward Selection)

Bu yöntem ile modelin performansına en iyi katkıda bulunan değişken seçilerek süreç başlatılır. İlk seçilen değişken sonrası ikinci değişken de aynı yöntemle ile seçilir. Ve döngü belirlenen performans ölçüsünün sınırına kadar devam edere.

Bizim örneğimizde regresyon modeli sonucu tabloda yer alan değişkenleri seçerken anlamlılık düzeylerini (p-value) modele etki olarak kabul edebiliriz. Dolayısıyla ileri doğru seçim yöntemini kullanırsak eğer ilk önce değişkenler içerisinden single değişkenini seçerek işe başlamamız gerekiyor. Ancak burada olan değişken sayısı az ve bunu elle yapmak mümkün ancak onlarca, yüzlerce değişken geldiğinde ise aşağıdaki fonksiyonu kullanabilirsiniz.

Yukarıdaki fonksiyonun içerisine yerleştirdiğim ara bildirimler ile aşağıdaki sonuçlardan ileri doğru seçim yönteminin nasıl işlediğini anlayabilirsiniz.

=======================================
1. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['single', 'white', 'violent', 'hs_grad', 'urban', 'poverty']
0.05'ten küçük olmak şartı ile
En küçük p değerine sahip
Değişkenin adı: single
P-value: 3.106296543792836e-17 < 0.05
güncellenen en iyi değişkenler listesi
['single']
=======================================
2. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['hs_grad', 'poverty', 'urban', 'white', 'violent']
0.05'ten küçük olmak şartı ile
En küçük p değerine sahip
Değişkenin adı: violent
P-value: 2.166661657089671e-05 < 0.05
güncellenen en iyi değişkenler listesi
['single', 'violent']
=======================================
3. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['poverty', 'white', 'hs_grad', 'urban']
0.05'ten küçük olmak şartı ile
En küçük p değerine sahip
Değişkenin adı: poverty
P-value: 0.010000464005827573 < 0.05
güncellenen en iyi değişkenler listesi
['single', 'violent', 'poverty']
=======================================
4. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['white', 'hs_grad', 'urban']
0.05'ten küçük olmak şartı ile
En küçük p değerine sahip
Değişkenin adı: hs_grad
P-value: 0.01815625398891185 < 0.05
güncellenen en iyi değişkenler listesi
['single', 'violent', 'poverty', 'hs_grad']
=======================================
5. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['white', 'urban']
Mininum P değeri 0.05'ten büyük olduğu için
Döngümüz sona ermiştir kemerlerinizi çözebilirsiniz
================================
Seçilen en iyi değişkenler
['single', 'violent', 'poverty', 'hs_grad']

Beşinci döngüye gelene kadar her döngü içerisinde en iyi değişken seçilmiştir. Modelin belirlenen dört değişken için en optimum seviyede çalışacağı bu yöntem ile öngürülmektedir.

Geriye doğru seçim (Step Backwards Selection)

Geriye doğru seçim yöntemi ileri doğru seçim yönteminin tam tersi şekilde ilerler burada amaç tüm değişkenler arasında modeli en olumsuz etkileyenden eleme yaparak en iyi olanlarına ulaşmaktadır.

Bu yöntemde yukarıdaki örneği alacak olursak ilk adım P değeri 0.05'in üzerinde olmak şartı ile en yüksek olan değişken model veri setinden çıkarılır. Bu çıkarılma işlemi tüm veri setindeki P değerlerinin 0.05'in altında oluncaya kadar devam eder.

Fonksiyonun içindeki While döngüsü her çalıştığında çıkan sonuçları aşağıdaki gibidir.

=======================================
1. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['violent', 'hs_grad', 'poverty', 'single', 'white', 'urban']
0.05'ten büyük olmak şartı ile
En büyük p değerine sahip
Değişkenin adı: urban = listeden çıkarılıyor
P-value: 0.8897045039452716 > 0.05
Güncellenen en iyi değişkenler listesi
['violent', 'hs_grad', 'poverty', 'single', 'white']
=======================================
2. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['violent', 'hs_grad', 'poverty', 'single', 'white']
0.05'ten büyük olmak şartı ile
En büyük p değerine sahip
Değişkenin adı: white = listeden çıkarılıyor
P-value: 0.2861569650576575 > 0.05
Güncellenen en iyi değişkenler listesi
['violent', 'hs_grad', 'poverty', 'single']
=======================================
3. While döngüsü başlıyor...
Hesaplanacak değişkenler:
['violent', 'hs_grad', 'poverty', 'single']
Maksimum P değeri 0.05'ten büyük değişken olmadığından
Döngü sona erdi
================================
Seçilen en iyi değişkenler
['violent', 'hs_grad', 'poverty', 'single']

Görüldüğü üzere 3 iterasyon sonrasında model için değerli olabilecek dört değişkene ulaşıyoruz.

Adımsal Seçim (Stepwise/Exhaustive Selection)

Bu yöntem için her bir değişken diğer değişkenler ile birlikte değerlendiren bir yapıya sahiptir. Dolayısıyla bu yöntem hem ileri hem de geri seçim yapma yöntemlerinin bir sentezidir diyebiliriz.

Daha önceki fonksiyonların bir araya getirilmesi oluşturulan algoritma ileri ve geri yönde seçimler yaparak aşağıdaki değişkenleri seçmiştir.

['single', 'violent', 'poverty', 'hs_grad']

Sonuç

Her ne kadar sonuçlar aynı görünse bile çok fazla değişken veya değişkenlerdeki dinamiklerin birbirlerini etkilediği durumlarda her üç yöntem de farklı sonuçlar çıkaracaktır. Ancak unutulmaması gereken bu üç yönteminde ideal bir süreç olmadığıdır. Öyle ki bazı dezavantajları yer almaktadır. Bunların en başında şöyle bir soru gelmektedir; “gerçekten seçilen değişkenler kümesi bu model için en iyi olanları mıdır?

Bence Wrapper kelimesinin değişken seçimi alanındaki Türkçe karşılığı Doldur-Boşalt olabilir :).

Serinin Diğer Yazıları:

  1. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Genel Bakış
  2. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Filtreleme Yöntemleri ve Python Kodları
  3. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Sarmal (Wrapper) Yöntemler ve Python Kodları
  4. Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Gömülü (Embedded) Yöntemler ve Python Kodları

--

--