Özellik Mühendisliği Uygulaması: Ham Veriden Model Girdisine
Beceri rehberi

Özellik Mühendisliği Uygulaması: Ham Veriden Model Girdisine

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Özellik mühendisliğinde sayısal dönüşüm, kategorik kodlama, tarih ve metin özellikleri, özellik seçimi ve veri sızıntısından kaçınma, Python örnekleriyle.

Özellik mühendisliğinde ilk adım: problemi ve veriyi anlamak

Özellik mühendisliği, ham veriden modelin öğrenebileceği anlamlı girdiler üretme işidir. Teknik dönüşümlerden önce şu sorulara yanıt arayın: tahmin edilen şey nedir ve tahmin anında hangi bilgiye gerçekten sahip olunacak? İkinci soru, özellik mühendisliğinin en önemli kuralının kaynağıdır. Bir özellik, tahmin yapılacağı anda bilinemeyecek bir bilgiyi içeriyorsa, model eğitimde başarılı görünür, üretimde başarısız olur. Buna veri sızıntısı denir.

Sonra veriyi tanıyın: sütun türleri, eksik değer dağılımı, aykırı değerler, kategorik değişkenin kaç farklı değer taşıdığı, zamansal bir sıra olup olmadığı. Alan bilgisi burada belirleyicidir; örneğin bir perakende satış verisinde hafta sonu, tatil, kampanya dönemi gibi kavramlar, ham tarih sütunundan modelin kendi başına çıkarmakta zorlanacağı sinyallerdir. Bu yüzden alan uzmanlarıyla kısa bir görüşme çoğu zaman bir saatlik kodlamadan daha çok kazandırır.

Sayısal değişkenleri dönüştürmek

Sayısal özelliklerin dağılımı, modelin davranışını etkiler. Doğrusal modeller, mesafe tabanlı yöntemler ve sinir ağları ölçeğe duyarlıdır; ağaç tabanlı modeller genellikle değildir.

  • Ölçekleme: standartlaştırma (ortalama çıkarıp standart sapmaya bölme) ya da min-maks ölçekleme. Ölçekleyici yalnızca eğitim verisine uydurulur, sonra doğrulama ve test verisine uygulanır.
  • Çarpık dağılım: gelir, fiyat gibi sağa çarpık değişkenlerde logaritma dönüşümü dağılımı dengeler.
  • Aralıklara bölme: yaş ya da gelir gibi değişkenlerde anlamlı dilimler oluşturmak, doğrusal olmayan ilişkiyi yakalamaya yardım eder.
  • Aykırı değer: silmek yerine kırpmak (belirli bir yüzdelik sınırda) ya da ayrı bir işaret sütunu eklemek bilgiyi korur.
  • Etkileşim: değişkenlerin çarpımı ya da oranı yeni bilgi taşıyabilir; örneğin harcama miktarının işlem sayısına oranı ortalama sepet tutarını verir.

Örnek bir kod parçası:

df["ort_sepet"] = df["toplam_tutar"] / df["islem_sayisi"] df["gelir_log"] = np.log(df["gelir"])

Oran türetirken sıfıra bölme ve eksik değer durumunu mutlaka düşünün.

Kategorik değişkenleri kodlamak

Modeller metin etiketlerini doğrudan işleyemez; kategorik değişkenler sayıya çevrilir. Yöntem, değişkenin yapısına bağlıdır.

Tek-sıcak kodlama (one-hot): Her kategori için ayrı bir ikili sütun üretir. Az sayıda farklı değeri olan değişkenler için uygundur. Çok sayıda farklı değer (örneğin ilçe, ürün kodu) taşıyan değişkende sütun sayısı patlar.

Sıralı kodlama: Kategoriler doğal bir sırayı taşıyorsa (düşük, orta, yüksek) bu sırayı koruyan tam sayılara çevrilir. Sırasız kategoride bu yöntem modele var olmayan bir sıra öğretir.

Sıklık kodlaması: Kategoriyi görülme sıklığıyla temsil eder; sütun sayısını artırmaz.

Hedef kodlaması: Her kategoriyi, hedef değişkenin o kategorideki ortalamasıyla değiştirir. Güçlüdür ama sızıntı riski taşır; hesabı yalnız eğitim kıvrımları içinde, çapraz doğrulamayla yapmak gerekir.

Yeni ve görülmemiş kategorilerle karşılaşıldığında ne olacağını da tasarlayın: bilinmeyen kategoriyi yok sayan ya da ayrı bir 'diğer' sınıfına atan bir kural ekleyin. Üretimde kodlayıcının hata vermesi sık görülen bir kesinti sebebidir.

Tarih, zaman serisi ve metin özellikleri

Tarih sütunu ham hâliyle çoğu modele anlamsızdır; ondan türetilen bileşenler değerlidir: haftanın günü, ayın günü, ay, mevsim, hafta sonu mu, resmî tatil mi, ay sonuna kalan gün. Döngüsel nitelikteki değişkenlerde (saat, ay) sinüs ve kosinüs dönüşümü, aralık sonu ile başlangıcın yakın olduğunu modele gösterir.

Zaman serilerinde geçmişe bakan özellikler çok güçlüdür: gecikmeli değerler (dün, geçen hafta aynı gün), kayan ortalama ve kayan standart sapma, kümülatif toplamlar. Örnek:

df["lagged_sales"] = df.groupby("product")["sales"].shift(lag) df["rolling_mean"] = df.groupby("product")["sales"].transform(lambda s: s.shift(lag).rolling(window).mean())

Burada kayan pencerenin öncesinde bir kaydırma yapılması kritiktir; yapılmazsa pencere tahmin edilecek günü de içerir ve sızıntı oluşur. Ayrıca zaman serilerinde eğitim ve doğrulama bölünmesi rastgele değil, zamana göre yapılmalıdır.

Metin için basit bir başlangıç sözcük sıklığı temelli vektörleştirmedir; daha ileri düzeyde önceden eğitilmiş gömme (embedding) vektörleri anlamı da yakalar. Metin uzunluğu, belirli anahtar kelimelerin varlığı gibi basit sayısal özellikler de çoğu zaman şaşırtıcı biçimde yararlıdır.

Özellik seçimi ve veri sızıntısından kaçınmak

Her türetilen özellik faydalı değildir. Çok sayıda özellik, aşırı öğrenmeye ve yavaş eğitime yol açar. Seçim için üç aile yöntem vardır: filtre yöntemleri (hedefle ilişki, korelasyon, varyans) hızlıdır ve ilk eleme için uygundur. Sarmalayıcı yöntemler (özellik alt kümelerini modelle deneme) pahalıdır ama etkilidir. Gömülü yöntemler (düzenlileştirme, ağaç modellerinin özellik önemleri) eğitim sırasında seçim yapar.

Her yöntemde dikkat edilecek kural, seçimin ve dönüşümün yalnız eğitim verisinden öğrenilmesidir. Ortalama, ölçek, kodlama haritası ve seçim kararı eğitim kümesinde hesaplanıp doğrulama ve test kümesine aynen uygulanmalıdır. Bunu tutarlı yapmanın en güvenli yolu, tüm dönüşümleri bir boru hattı (pipeline) içinde tanımlamaktır; böylece çapraz doğrulamada her kıvrım dönüşümleri kendi eğitim verisinden öğrenir ve üretimde aynı boru hattı çalışır.

Sızıntı belirtileri: doğrulama başarısı gerçek dışı yüksekse, bir özellik tek başına neredeyse mükemmel tahmin ediyorsa ya da üretimde performans keskin düşüyorsa özelliklerin zaman ve hedef bilgisini nereden aldığını yeniden inceleyin.

Sık yapılan hatalar ve çalışma sırası

  • Dönüşümü tüm veri üzerinde öğrenip sonra bölmek.
  • Hedef kodlamasını çapraz doğrulama dışında hesaplamak.
  • Zaman serisinde rastgele bölme yapmak.
  • Üretimde bulunmayan bir sütundan özellik türetmek.
  • Çok yüksek kardinaliteli kategoride one-hot kodlama kullanıp bellek sorunu yaşamak.
  • Alan bilgisini kullanmadan yalnızca otomatik dönüşümlere güvenmek.
  • Özelliklerin nasıl üretildiğini belgelememek; üretimde farklı hesaplama yapılması.

Pratik çalışma sırası: temel bir modelle başlayın, ham özelliklerle taban başarıyı ölçün, sonra özellikleri tek tek ya da küçük gruplar halinde ekleyip her eklemenin etkisini doğrulama kümesinde izleyin. Başarıya katkısı olmayan özelliği tutmayın. Üretime geçerken özellik hesaplamasının eğitimle aynı kodu paylaştığından emin olun; özellik deposu bu tutarlılığı sağlamak için kullanılan yaklaşımlardandır.

Mindset bağlamı

Özellik Mühendisliği (Feature Engineering) eğitimi, sayısal dönüşümler, kategorik kodlama, zaman serisi özellikleri, metin ve gömme özellikleri ile özellik seçimi ve otomasyonunu ayrı modüllerde ele alır. Veri bilimciler ve makine öğrenmesi mühendisleri için bu sayfadaki akışın uygulamalı karşılığıdır.

Makine Öğrenmesi (Uygulamalı) Programı ise veri ön işleme ve özellik mühendisliğini regresyon, sınıflandırma, model doğrulama ve üretime taşıma ile birlikte bir bütün olarak işler; bir ekipte modelleme sürecinin tamamını standartlaştırmak isteyenler için uygundur.

İlgili Mindset programı

Özellik Mühendisliği (Feature Engineering)

Sık sorulanlar

Sık sorulan sorular

Veri sızıntısı nedir, nasıl fark edilir?

Modelin eğitimde tahmin anında erişemeyeceği bir bilgiyi kullanmasıdır. Doğrulama başarısı gerçek dışı yüksekse ya da bir özellik tek başına neredeyse kusursuz tahmin yapıyorsa şüphelenin. Dönüşümleri bir boru hattında tanımlamak ve zaman serisinde zamana göre bölmek önleyici adımlardır.

Ağaç tabanlı modellerde ölçekleme gerekir mi?

Genellikle gerekmez, çünkü ağaçlar değerlerin sırasına göre bölünür, ölçeğe duyarlı değildir. Doğrusal modeller, mesafe tabanlı yöntemler ve sinir ağları ise ölçeklemeden fayda görür. Hangi modeli kullanacağınıza göre dönüşüm adımlarını belirleyin.

Çok sayıda farklı değeri olan kategoriyle ne yapmalıyım?

One-hot kodlama sütun sayısını çok artırır. Sıklık kodlaması, nadir kategorileri 'diğer' altında toplamak ya da çapraz doğrulama içinde hedef kodlaması daha uygun olur. Seçimde bellek, sızıntı riski ve yorumlanabilirlik dengesini gözetin.

Derin öğrenme özellik mühendisliğini gereksiz kılar mı?

Görüntü ve metin gibi yapılandırılmamış verilerde sinir ağları özellikleri kendisi öğrenir. Ancak yapılandırılmış tablo verisinde, alan bilgisine dayalı türetilmiş özellikler genellikle hâlâ belirleyicidir. Hangisinin gerektiğine veri türü ve problem karar verir.

Özellik Mühendisliği Nasıl Yapılır: Adım Adım Rehber