Makine Öğrenmesinde Değişken Seçimi (Feature Selection) Yazı Serisi: Genel Bakış

Yiğit Şener
5 min readOct 24, 2020

--

Bu yazı serisinde makine öğrenmesinde kullanılan özellik/değişken seçimi (feature selection) konusunu uçtan uca ele alacağız. Bu ilk yazıda genel hatları ile feature selection konusundan bahsedeceğim. Serinin diğer yazılarında ise uygulamalı olarak feature selection tiplerini anlatacağım. Yazılar eklendikçe aşağıdaki başlıklara linkleri ekleyeceğ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ı

Bir veri bilimi projesinde ilk veri seti ile karşılaştığımızda kendimizi keşfedilmeyi bekleyen bir adada hissederiz. Datada bulunan değişken/özellik sayısı ne kadar fazla ise aslında adanın büyüklüğü de bizim gözümüzde o denli genişlemiş olur. Belki 3-5 tane değişken olsa modeli kurmak bizim için zor gelmeyebilir. Ancak onlarca değişkenin arasından modelde en gerekli olanlarını seçmek hayli uzun ve karmaşık süreç haline gelmektedir. Bu anlamda örneğin bir makine öğrenmesi sürecinde hedef (target) değişkenimize bağlı olarak girdi (input) değişkenlerin seçim (feature selection) adımı önem kazanmaktadır.

Değişken seçimi, öncelikle açıklayıcı olmayan veya gereksiz tahmin unsurlarını modelden kaldırmaya odaklanır.

Neden Değişken Seçimi Yapılır?

  1. Basitlik iyidir. Gereğinden fazla değişkenin olduğu bir modelin açıklanması ve yorumlanması oldukça karmaşık bir hal alabilir. Bu yüzden değişken seçimi ile modeli daha kolay anlaşılabilir bir biçime dönüştürebiliriz.
  2. Değişken seçimi ile modelde oluşabilecek overfitting durumunun önüne geçilebilir. Gereğinden fazla değişkenli bir modelde eğitim performansı son derece iyi çıkabilir. Ancak test ettiğimizde durum tam tersine dönmüş ise orada bir yerde aşırı öğrenmeye (overfitting) sebep olan değişkenler bulunabilir. Bunları elersek modelin gerçek doğruluk oranını artırmış oluruz.
  3. Bir veri setinde değişkenlerin bazıları kendi aralarında yüksek bir ilişkiye sahip olabilir (Multicollinearity). Bu durumda iki değişkeninde modelde çıktı değişken (target) üzerinde aynı açıklayıcılığı sağlayacağını biliyoruz. Dolayısı ile bunlardan birisini silmemiz demek gereksiz bir değişkenden kurtulmamız anlamına gelirken model başarısını da artırmış oluruz.
  4. Değişkenlerin seçimi ile azalan girdi değişken sayısı sayesinde makine öğrenmesi süreci içinde veri seti eğitim (train) aşamasının daha hızlı gerçekleşebilmesi sağlanabilir. Örneğin 100 adet girdi değişkenin çalıştığı bir modelin eğitim süresi ile 50 değişkenin çalışacağı modelin eğitim süresi farklı olacaktır. Belki bu süre 1,000 satırlık veriler için anlamlı olmayabilir ancak milyarlarca satırdaki bir data için epeyce bir zaman kazanımı anlamına gelmektedir.
  5. Doğru değişken seçimi ile model başarı oranı (accuracy, recall, RMSE vs.) artırılabilir (Regresyon modellerinin başarı ölçütleri için bu linkteki yazımı, sınıflandırma başarı ölçme yöntemleri için ise bu linkteki yazımı inceleyebilirsiniz).

Daha önceki makine öğrenmesi projelerimden yola çıkarak şunu söyleyebilirim ki örneğin %71 ile başlayan model performans skoru, değişken seçimi sonrasında %80'lere kadar çıkabilir.

Değişken Seçimi ve Dimensionality Reduction Arasındaki Fark Nedir?

Dimensionlity reduction, boyut indirgeme/düşürme anlamına gelmektedir. Değişken seçimi bir model içerisinde hangi değişkenlerin olup olmayacağını belirleyen yöntemlerden oluşur. Dimensionlity reduction ise bir çok değişkeni dönüştürerek farklı bir değişken formunda yaratabilir.

Dimensionality reduction yöntemlerine örnek olarak PCA (temel bileşenler analizi), Tekil Değer Ayrışımı (Singular Value Decomposition) ve Sammon’s Mapping verilebilir.

Değişken Seçimi ve Feature Engineering Arasındaki Fark Nedir?

Feature Engineering yani özellik mühendisliği örneğin bir makine öğrenimi sürecinde veri setindeki değişkenlerin ya formunu değiştirir ya da yeni ve farklı değişkenler türetmeye yarar. Örneğin bir değişken içerisinde metin alanında yer alan değerleri yorumlayarak yeni bir değişken türetebilir.

Daha farklı bir örnek verecek olursak; değişkenleri bir elbise dolabındaki kıyafetlere benzetirsek; değişken seçim (feature selection) yönteminde bir kıyafet alıp diğerini bırakabilirsiniz, özellik mühendisliğinde ise örneğin bir takım elbiseyi alıp gömlek, pantolon ve ceket olmak üzere farklı değişkenler olarak dolaba koyabilirsiniz.

Değişken Seçiminde Yöntemler

Genel olarak ayrıştırılmış üç tür değişken seçim yöntemi bulunmaktadır. Bunlar filtreleme (filter), sarmal (wrapper) ve gömülü (embedded) yöntemleridir.

Filtreleme (filter) Yöntemleri

Filtre değişken seçimi yöntemleri, her bir girdi değişken ile hedef değişken arasındaki ilişkiyi değerlendirmek için istatistiksel teknikler kullanır ve bunları skorlar. En temel ve uygulaması kolay değişken seçim yöntemleri arasında yer alırlar. Bu yöntemler, sarmalayıcı (wrapper) yöntemlere göre zaman açısından daha hızlı ve hesaplama olarak daha az maliyeti bulunur. Yüksek boyutlu verilerle uğraşırken, filtre yöntemlerinin kullanmasının kolay ve basit olması sebebi ile avantajlı olduğu söylenebilir.

Filtreleme yöntemleri, modelde yer alan değişkenlerin, hedef değişken ile olan alaka düzeyini değerlendirir ve daha sonra bu değişkenleri modele alabilir ya da çıkarabilir.

Sarmal (Wrapper) Yöntemleri

Sarmal yöntemleri, veri setindeki girdi değişkenlerden yola çıkarak seçilen farklı alt kümeler ile birçok model oluşturur. Böylece en iyi performans gösteren modeli seçilen alt kümedeki değişkenleri ile birlikte belirler. Örneğin 10 girdi (bağımsız) ve bir çıktı (bağımlı) değişkenimiz olsun. Sarmal yöntemlerinden birisini kullanarak 10 girdi için farklı olabilecek değişken setlerinin kombinasyonları oluşturulur. Ve her değişken kümesinin kombinasyonu için model çalıştırılır. Bu yöntem tahmin edeceğiniz üzere zaman ve maliyet açısından filtreleme yöntemine göre dezavantajlıdır.

Sarmal yöntemleri, model içindeki değişkenleri modele dahil ederek ya da hariç bırakarak deneme yanılma usulü en uygun veri desenini yakalamaya çalışır.

Gömülü (Embedded) Yöntemler

Bu yöntemler, değişkenlerin etkileşimlerini dahil ederek ve aynı zamanda makul hesaplama maliyetini koruyarak hem sarmal hem de filtreleme yöntemlerinin faydalarını kapsar. Gömülü yöntemler, model eğitim sürecinin her yinelemesini ele alan ve belirli bir döngü içinde eğitime en çok katkıda bulunan değişkenleri dikkatli bir şekilde ortaya çıkaran makine öğrenmesi algoritmalarıdır. Lasso regresyon veya karar ağaçları bazındaki algoritmalar bu yöntemlere örnek verilebilir.

Bazı modeller varoluşları sebebi ile değişken seçimi yapabilirler, bu da modelin yalnızca doğruluğu en üst düzeye çıkarmaya yardımcı olan en iyi değişkenleri seçeceği anlamına gelir.

Hangi Yöntemi Seçmeliyiz?

En iyi değişkenlerin yer aldığı veri seti veya en mükemmel makine öğrenimi algoritması olmadığı gibi, en iyi değişken seçim yöntemi diye bir şey de söz konusu değildir. En azından evrensel olarak. Bunun yerine, dikkatli sistematik deneyler uygulayarak probleme özgü doğru olan yöntemi keşfetmelisiniz.

Sonuç

İşe yarar bir değişken seçimi için farklı istatistiksel ölçütlerle seçilen farklı veri alt kümelerine uyan bir dizi değişik modeli deneyebilirsiniz. Probleminiz için en uygun yöntemi bulmak araştırma ve çeşitli yöntemleri deneyerek uygulama sürecini beraberinde getirmektedir. Bu şekilde çabalamak en başta biraz zaman alacaktır. Ancak tecrübe kazandıkça hangi veri setinde hangi yöntemin kullanılması gerektiğine sezgisel olarak karar verebileceksiniz.

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ı

--

--