FEATURE ENGINEERING NEDİR?

Ham veri tablosundan dönüşüm okuyla model girdisine hazır feature sütunlarına geçişi anlatan infografik

Aynı veri seti, aynı problem, iki farklı ekip. Birinci ekip XGBoost'u 18 hiperparametre üzerinde aylarca ayarlayarak %72 doğruluğa ulaşıyor. İkinci ekip varsayılan ayarlarda XGBoost'u bırakıp veriyi yeniden tasarlıyor — %89'a çıkıyor. Fark modelin kendisinde değil, modele giren verinin hazırlanışında. Kaggle yarışmalarında, kurumsal projelerde, akademik çalışmalarda aynı sonuç tekrar tekrar gözleniyor: feature engineering, makine öğrenmesi pipeline'ının en çok atlanan ama sonucu en belirleyici aşamasıdır.

Bu yazı feature engineering'in ne olduğunu, hangi tekniklerle yapıldığını ve gerçek projelerde nerede kritik fark yarattığını sıfırdan açıklar. Veri bilimine yeni başlayanlar için temel bir harita, ileri seviyede çalışanlar için zayıf noktaları görmek üzere kontrol listesi niteliğindedir.

Feature Engineering Tam Olarak Nedir?

Feature engineering, ham veriyi makine öğrenmesi modelinin daha iyi öğreneceği özelliklere (feature) dönüştürme sürecidir. Türkçesi özellik mühendisliği veya öznitelik mühendisliği. Bir model satır satır veriyi olduğu gibi yutmaz; her satır, modelin anlayacağı sayısal vektörlere indirgenmek zorundadır. Bu indirgeme süreci aynı zamanda verinin içine gömülü iş bilgisini de modele aktarma fırsatıdır.

Basit bir örnek: müşteri terk (churn) tahmin modeli kuruyorsun. Veri tabanında "üyelik başlangıç tarihi" sütunu var. Bu sütunu doğrudan modele verirsen anlam taşımaz — bir tarih dizgisi. Ama bunu "üyelik kıdemi (gün)" gibi sayısal bir feature'a dönüştürürsen model artık "yeni üyeler mi daha sık ayrılıyor, eski mi?" sorusuna cevap arayabilir. İşte feature engineering bu dönüşümü sistematik olarak yapma sanatıdır.

Neden Bu Kadar Belirleyici?

Modern derin öğrenme modelleri görüntü ve dil işlemede feature'ları kendileri öğreniyor (representation learning). Ama yapısal/tablo verisinde — finans, perakende, telekom, sağlık — feature engineering hâlâ ana sahnedir. Sebebi basit: tablo verisinde sinyal genellikle satır içinde değil, satırlar arası ilişki ve türetilmiş istatistiklerde gizlidir. Bir kredi başvurusunda "son 3 ayda kaç kez gecikti?" feature'ı, ham işlem listesinden çok daha güçlü bir sinyaldir.

Veri bilimi anketleri bir veri bilimcisinin zamanının yaklaşık %60-%70'inin veri hazırlama ve özellik mühendisliğine harcandığını gösterir. Şikayet konusu gibi anlatılsa da işin doğası budur — değer model seçiminde değil, modele girenin kalitesindedir. Kavramın tarihsel arka planı ve farklı uygulama alanları için feature engineering konu sayfası iyi bir genel referanstır.

Eksik değer doldurma kategorik kodlama ölçekleme ve yeni feature türetme adımlarının sıralı işlem hattı diyagramı

Temel Feature Engineering Teknikleri

Pratikte feature engineering bir kaç temel teknik kümesinden oluşur. Her veri seti farklı kombinasyonu gerektirir; ancak temel araç çantası aşağı yukarı sabittir.

Eksik Veri Doldurma (Imputation)

Gerçek dünyada hiçbir veri seti tam değildir. Eksik değerleri silmek çoğu zaman lüks — özellikle eksiklik rastgele değilse (örneğin gelir bilgisini paylaşmayan müşteriler belirli bir segment olabilir). Yaygın yaklaşımlar:

  • Ortalama/Medyan/Mod ile doldurma: Hızlı ama bilgi kaybı yüksek. Sayısal değişkenler için medyan aykırı değerlere karşı daha sağlam.
  • İleri/Geri doldurma (forward/backward fill): Zaman serilerinde bir önceki ya da bir sonraki gözlemden değer kopyalanır.
  • Model tabanlı doldurma: Eksik değeri tahmin etmek için ayrı bir model kurulur (KNN imputer, MICE).
  • "Missing" işaretçi feature ekleme: Eksikliğin kendisi bilgi taşıyabilir. Yeni bir ikili sütun (var/yok) modele bu sinyali verir.

Kategorik Veri Kodlama

Modeller sayı yer; "Ankara", "İstanbul", "İzmir" gibi metin değerlerini doğrudan anlamaz. Üç yaygın yöntem var:

  • Label encoding: Her kategoriye bir tamsayı verir (Ankara=1, İstanbul=2). Ağaç tabanlı modellerde uygun ama lineer modellerde sahte sıralama yaratır.
  • One-hot encoding: Her kategori için ayrı bir ikili sütun. Kategori sayısı yüksekse veri matrisi seyrelir.
  • Target encoding (mean encoding): Her kategoriyi o kategorinin hedef değişken ortalamasıyla değiştirir. Güçlüdür ama eğitim setinden sızıntıya açıktır; çapraz doğrulama içinde uygulanmalıdır.

Ölçekleme ve Normalizasyon

"Yaş" 0-100, "gelir" 0-1.000.000 aralığındaysa mesafeye dayalı algoritmalar (KNN, SVM, k-means) ve gradyan inişli modeller (lojistik regresyon, sinir ağları) gelir değişkenine boğulur. StandardScaler ortalamayı 0, standart sapmayı 1 yapar; MinMaxScaler [0,1] aralığına sıkıştırır. Ağaç tabanlı modeller (Random Forest, XGBoost) ölçeklemeden etkilenmez; bu durumlarda işlem atlanabilir.

Yeni Feature Türetme

En yaratıcı kısım buradadır. Mevcut sütunları birleştirerek, oranlayarak veya gruplandırarak yeni bilgi çıkarılır:

  • İki tarih sütunundan "gün farkı" üretmek
  • "Toplam harcama" ve "işlem sayısı"ndan "işlem başına ortalama" hesaplamak
  • Müşteri için "son 30 günde alışveriş sayısı", "son 90 gün ortalama sepet tutarı" gibi pencere bazlı agregasyonlar
  • İki sayısal değişkenin çarpımı veya oranı (etkileşim feature'ları)

Bu türetmeler iş bilgisinin modele aktarıldığı asıl noktadır. Bir e-ticaret veri bilimcisinin "sepet doluluğu / kullanıcı kıdemi" gibi bir feature'ı önermesi, model değiştirmekten çok daha büyük bir sıçrama yaratabilir.

Tarih ve Zaman Feature'ları

Zaman damgası tek başına işe yaramaz; modelin anlayacağı parçalara bölünmelidir: yıl, ay, ay-içi-gün, hafta-içi-gün, saat, çeyrek, yılbaşından gün sayısı, tatil günü mü değil mi, ay sonu mu, ay başı mı. Mevsimsel desenleri yakalamak için sin/cos dönüşümleri ile döngüsel kodlama yapılır — özellikle saat ve ay için 23→0 geçişinin "yakın" olduğunu modele anlatmak gerekir.

Feature Selection — Hangi Özellikler Kalsın?

Yüzlerce feature türettin; hepsi modele faydalı değil. Gereksiz feature'lar gürültü ekler, overfitting riskini artırır, eğitim süresini uzatır. Feature seçimi üç ana yaklaşımla yapılır:

  • Filtre yöntemleri: İstatistiksel testlerle (chi-kare, korelasyon, ANOVA) hedeften bağımsız ön eleme.
  • Wrapper yöntemleri: Recursive Feature Elimination (RFE) gibi tekrar tekrar model eğitip değerlendirme.
  • Embedded yöntemler: Modelin kendi öğrenme sürecinde feature önemini ölçer (Lasso katsayıları, Random Forest feature importance).

Pratikte üçü birlikte kullanılır: önce filtreyle açık çöp atılır, sonra modelin verdiği önem skorlarına bakılır, sonunda dropping testleriyle gerçek katkı doğrulanır. Bu döngünün pratik uygulamasını derinleştirmek isteyenler için makine öğrenmesi eğitimi hem teorik altyapıyı hem scikit-learn ile uygulamayı birlikte ele alır.

Otomatik Feature Engineering Araçları

Manuel feature türetme zaman alıcıdır. Son yıllarda yardımcı kütüphaneler olgunlaştı: Featuretools ilişkisel veri tablolarından otomatik feature üretir (deep feature synthesis). tsfresh zaman serilerinden yüzlerce istatistiksel feature çıkarır. scikit-learn'ün preprocessing modülü temel dönüşümler için referans araçtır; resmi scikit-learn ön işleme kılavuzu referans dokümandır. AutoML çatıları (H2O, AutoGluon) feature engineering adımını kısmen otomatize eder.

Otomatik araçlar başlangıç için iyidir ancak domain bilgisinin yerini tutmazlar. Bir uzman insanın "müşteri kategorisi A ise ortalama sipariş tutarı B'den farklı davranır" sezgisi, hiçbir otomatik aracın türetemediği feature'a yol açabilir.

Üç şehir kategorisini ayrı sütunlu 0 ve 1 ikili matrisine çeviren one-hot encoding görselleştirmesi

Yaygın Hatalar

Feature engineering basit göründüğü için tuzakları sıkça atlanır. En sık yapılan hatalar:

  • Data leakage (veri sızıntısı): Hedef değişken bilgisinin feature'a sızması. Target encoding'i tüm veride hesaplayıp sonra eğitim/test ayırmak klasik örnek. Performans patlar; gerçekte modelin işe yaramadığı production'da anlaşılır.
  • Test setine fit yapmak: Scaler veya imputer test verisinde fit edilirse eğitim/test dağılım izolasyonu bozulur. Her dönüşüm sadece eğitim setinde fit, test setinde transform.
  • Zaman serilerinde geleceği görmek: Pencere bazlı agregasyonlarda yanlışlıkla gelecek değerleri dahil etmek. Tahmin anındaki bilgiyle sınırlı kalmak şart.
  • Aşırı kategori encoding: 10.000 farklı şehir adına one-hot uygulayıp matrisi şişirmek. Yüksek-kardinaliteli alanlar için frequency veya target encoding daha mantıklıdır.
  • Domain ile konuşmamak: Veri bilimcisi tek başına oturup feature türetir, sonra iş tarafı "bu kullanıcılar zaten farklı kanaldan gelir" der. Erken işbirliği yapılmayan projelerde ay kaybedilir.

Feature engineering bir kez yapılıp bitirilen bir aşama değil, iterasyonla olgunlaşan bir döngüdür. İlk feature setinle bir baseline kur, modelin nerede yanıldığını incele, yanlış sınıflandırdığı örneklerden yeni feature fikirleri çıkar, döngüyü tekrarla. Modelin tavanı çoğu zaman algoritma değiştirmekle değil, daha iyi feature bulmakla yükselir.