FEATURE ENGİNEERİNG NEDİR? MODEL KALİTESİNİ ARTIRAN TEKNİKLER VE TUZAKLAR
Bir makine öğrenmesi modelinin “zekâsı” çoğu zaman algoritmanın kendisinden değil, modele verdiğiniz özelliklerin kalitesinden gelir. Aynı veri setinde iki ekip düşünün: biri ham sütunlarla modele giriyor, diğeri veri dağılımını anlayıp doğru dönüşümler, kodlamalar ve etkileşimler ekliyor. Aradaki fark; daha yüksek doğruluk, daha stabil tahminler ve üretimde daha az sürpriz demektir.
İşte bu farkı yaratan disiplin feature engineering (özellik mühendisliği). Ama işin bir de karanlık tarafı var: yanlış bir dönüşüm, veri sızıntısı, hatalı hedef kodlama veya yanlış split stratejisi; offline metrikleri uçururken gerçek hayatta modeli yerle bir edebilir.
Bu rehberde feature engineering nedir sorusunu netleştirip, model kalitesini artıran teknikleri, uygulama örneklerini ve en sık düşülen tuzakları anlatacağız. Ayrıca üretime giden yolda pipeline kurulumunu ve değerlendirme pratiklerini de ele alacağız.
Feature Engineering Nedir ve Neden Bu Kadar Etkilidir?
Feature engineering, ham veriyi (tablo, log, metin, zaman serisi, görsel vb.) modelin daha kolay öğrenebileceği sayısal temsillere dönüştürme sürecidir. Amaç, hedef değişkenle ilişkili sinyali güçlendirirken gürültüyü azaltmak ve genelleme kabiliyetini artırmaktır.
Özellik mühendisliği; veri anlama, dönüşüm tasarımı, doğrulama ve izleme adımlarından oluşan iteratif bir döngüdür. “Bir kere yap biter” değil; model davranışına göre sürekli iyileştirilen bir süreçtir.
Algoritma değil, sinyal kazanır
Güçlü algoritmalar bile zayıf temsil ile sınırlanır. Örneğin ham fiyat sütunu yerine log-fiyat, gelir dilimi, son 30 gün ortalaması gibi özellikler; modelin doğrusal olmayan ilişkileri daha kolay yakalamasını sağlar.
İş problemine bağ kurma
En iyi özellikler genellikle alan bilgisinden gelir: e-ticarette “sepete ekleme sonrası ilk satın alma süresi”, bankacılıkta “son 90 gün gecikme sayısı”, SaaS’ta “aktif gün oranı” gibi metrikler hedefle doğrudan ilişkilidir.

Veriyi Tanımadan Özellik Üretme: EDA ile Başlayan Yol
Özellik mühendisliğinin ilk adımı EDA (Exploratory Data Analysis) ile veriyi tanımaktır. Dağılım, eksik değer, aykırı değer, sınıf dengesizliği, veri tipleri ve hedefle olan ilişkiler incelenmeden yapılan dönüşümler çoğu zaman rastgele sonuç verir.
EDA sırasında özellikle şu sorulara cevap arayın: Hangi sütunlar hedefle anlamlı korelasyon taşıyor? Hangi sütunlar yüksek kardinaliteye sahip? Zaman boyutu var mı? Ölçüm hatası veya uç değerler yoğun mu? Bu sorular, hangi feature engineering stratejisinin işe yarayacağını belirler.
Eksik değerler bir sinyal olabilir
Eksik değerleri sadece doldurmak yerine “eksik mi?” bayrağı eklemek çoğu problemde performansı artırır. Özellikle eksiklik rastgele değilse (MNAR), eksiklik durumu hedefle ilişkili bir ipucu taşır.
Aykırı değerleri önce anlamlandırın
Aykırı değerler her zaman hata değildir; bazen nadir ama kritik davranışları temsil eder. Winsorization, clipping veya robust ölçekleme uygulamadan önce uç değerlerin kaynağını (kampanya, sistem hatası, özel müşteri grubu) anlamaya çalışın.
Sayısal Değişken Dönüşümleri: Ölçekleme, Log, Box-Cox ve Robust Yaklaşımlar
Sayısal özelliklerde dönüşüm seçimi; model türüne ve dağılım karakterine bağlıdır. Ağaç tabanlı modeller ölçekten daha az etkilenirken, lineer modeller ve mesafe tabanlı yöntemler (KNN, SVM) ölçeklemeye duyarlıdır.
StandardScaler, MinMaxScaler ne zaman?
Normal dağılıma yakın özelliklerde standardizasyon (ortalama 0, std 1) genellikle iyi çalışır. Özelliklerin sınırları belli ve karşılaştırılabilir olmalıysa MinMax tercih edilebilir. Ancak uç değerler varsa her ikisi de sorun çıkarabilir; robust ölçekleme daha güvenli olur.
Log dönüşümü ile çarpıklığı azaltma
Gelir, fiyat, süre, sayım gibi değişkenler sağa çarpık dağılım gösterir. Log1p dönüşümü (log(1+x)) hem çarpıklığı azaltır hem de büyük değerlerin baskınlığını düşürür. Bu dönüşüm, lineer modellerde katsayıların daha anlamlı hale gelmesine de yardımcı olur.
Oranlar ve normalize edilmiş metrikler
Ham sayımlar yerine oranlar ve yoğunluklar daha genellenebilir sinyaller taşır: “son 7 gün tıklama sayısı” yerine “tıklama / gösterim” veya “aktif gün / toplam gün” gibi. Bu tür özellikler, kullanıcı büyüklüğünden bağımsız bir davranış ölçümü sağlar.
Kategorik Değişkenler: One-Hot, Target Encoding ve Yüksek Kardinalite Yönetimi
Kategorik değişkenler feature engineering’in en kritik alanlarından biridir. Kodlama yaklaşımı, hem metrikleri hem de modelin kararlılığını ciddi biçimde etkiler. Ayrıca yanlış hedef kodlama veri sızıntısına çok açık bir noktadır.
One-hot encoding: Basit ama maliyetli
Düşük kardinaliteli kategorilerde one-hot encoding etkili ve güvenlidir. Fakat binlerce kategori olduğunda boyut patlar; bellek kullanımı artar ve seyrek matrislerin yönetimi zorlaşır. Bu durumda hashing veya düzenlenmiş hedef kodlama seçenekleri düşünülür.
Target encoding: Güçlü ama riskli
Hedef kodlama, kategorileri hedef ortalaması gibi istatistiklerle sayısallaştırır. Doğru yapıldığında güçlü bir sinyal üretir; yanlış yapıldığında ise eğitim verisindeki hedef bilgisi doğrudan modele sızar. Bu yüzden K-fold target encoding ve smoothing (düzgünleştirme) kritik önemdedir.
Nadir kategorileri gruplama
Çok nadir görülen kategoriler hem gürültü üretir hem de genelleme zayıflığı yaratır. Belirli bir frekans eşiğinin altındaki kategorileri “other” altında birleştirmek, daha stabil bir temsil sağlar. Bu gruplama eşiğini doğrulama setinde test etmek önemlidir.

Etkileşimler ve Türetilmiş Özellikler: Modelin Görmediğini Görünür Kılmak
Bazı sinyaller tek bir sütunda değil, sütunların etkileşiminde gizlidir. Özellikle lineer modellerde etkileşim terimleri, ağaç tabanlı modellerde ise uygun türetimler performansı artırabilir. Ancak her etkileşim eklemek iyi değildir; gürültü ve çoklu doğrusal bağlantı sorunlarını tetikleyebilir.
Çarpım, oran, fark gibi basit etkileşimler
“fiyat / gelir”, “kullanım_süresi - kayıt_süresi”, “indirim_oranı * sepet_tutarı” gibi etkileşimler iş mantığıyla uyumlu olduğunda güçlü olur. Bu özellikler, hedefin ekonomik veya davranışsal dinamiklerini yakalamaya yardımcı olur.
Gruplama istatistikleri (aggregation features)
Bir varlığın ait olduğu grup üzerinden istatistik üretmek sık kullanılan bir taktiktir: kullanıcı başına ortalama sipariş, ürün kategorisi başına iade oranı, şehir bazında dönüşüm gibi. Burada kritik nokta: bu istatistikleri yalnızca eğitim penceresi ile üretmek ve zaman sızıntısını engellemektir.
Zaman serilerinde pencere özellikleri
Zaman serisi veya zamana bağlı olaylarda hareketli ortalama, hareketli medyan, gecikmeli değer (lag), trend ve mevsimsellik özellikleri iş görür. “Son 7 gün”, “son 30 gün” gibi pencereler, problem bağlamına göre seçilmeli ve validasyon split’i zamana saygılı olmalıdır.
Feature Selection ve Düzenleme: Daha Azıyla Daha İyi Genelleme
Her eklenen özellik performansı artırmaz. Gereksiz özellikler; aşırı öğrenmeyi, eğitim süresini ve üretim karmaşıklığını artırır. Bu yüzden feature selection, feature engineering’in ayrılmaz parçasıdır.
Filtre yöntemleri: hızlı eleme
Varyansı çok düşük olan sütunları kaldırmak, yüksek korelasyonlu sütunları birleştirmek veya tekil değer oranı yüksek kategorileri sadeleştirmek hızlı kazanımlar sağlar. Bu aşama, modelden bağımsız temizleme adımı gibi düşünülebilir.
Wrapper/embedded yöntemler: model tabanlı seçim
L1 regularization (Lasso), ağaç tabanlı önem skorları, permutation importance veya SHAP gibi yöntemler; hangi özelliklerin gerçekten katkı verdiğini görmenize yardımcı olur. Ancak önem skorları, yüksek kardinalite ve sızıntı problemlerinden etkilenebilir; yorumlarken dikkatli olun.
Pipeline ve Üretim Odaklı Feature Engineering: Tekrarlanabilirlik Şart
Offline başarıyı üretime taşımak için dönüşümlerin tekrarlanabilir olması gerekir. Eğitimde yaptığınız doldurma, ölçekleme, kodlama ve türetim adımları; üretimde aynı şekilde uygulanmıyorsa model performansı hızla bozulur. Bu yüzden pipeline yaklaşımı standarttır.
Sklearn Pipeline ile güvenli akış
Aşağıdaki örnek, sayısal ve kategorik özellikleri ayrı yollarla işleyip tek bir model akışında birleştirir. Bu yapı; veri sızıntısı riskini azaltır ve eğitim-üretim tutarlılığını artırır.
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LogisticRegression
df = pd.read_csv("data.csv")
y = df["target"]
X = df.drop(columns=["target"])
num_cols = ["age", "income", "days_since_last_login"]
cat_cols = ["city", "device_type", "plan"]
numeric_pipe = Pipeline(steps=[
("imputer", SimpleImputer(strategy="median")),
("scaler", StandardScaler())
])
categorical_pipe = Pipeline(steps=[
("imputer", SimpleImputer(strategy="most_frequent")),
("ohe", OneHotEncoder(handle_unknown="ignore"))
])
preprocess = ColumnTransformer(
transformers=[
("num", numeric_pipe, num_cols),
("cat", categorical_pipe, cat_cols)
],
remainder="drop"
)
model = LogisticRegression(max_iter=1000)
clf = Pipeline(steps=[
("preprocess", preprocess),
("model", model)
])
X_train, X_val, y_train, y_val = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_val)[:, 1]
print("AUC:", roc_auc_score(y_val, pred))Feature store ve versiyonlama düşüncesi
Büyüyen ekiplerde aynı özelliğin farklı ekiplerce tekrar üretilmesi yaygın bir sorundur. Özelliklerin tanımını, hesaplama mantığını, zaman penceresini ve veri kaynağını versiyonlamak; analitik borcu azaltır. Bu noktada feature store yaklaşımı veya en azından iyi dokümantasyon ve test stratejisi değer katar.
Eğer ekip içinde bu disiplinleri sistematik öğrenmek istiyorsanız, pratik uygulamalarla ilerleyen Machine Learning Eğitimi içeriği, pipeline ve değerlendirme alışkanlıklarını oturtmak için iyi bir başlangıç olabilir.
En Büyük Tuzaklar: Veri Sızıntısı, Yanlış Split ve “Metrik Sarhoşluğu”
Feature engineering’de en pahalı hatalar, modeli gerçekte olduğundan iyi gösteren hatalardır. Bu hatalar genellikle değerlendirme tasarımından veya özelliklerin yanlış zamanda hesaplanmasından doğar. Sonuç: harika görünen bir AUC, ama üretimde hızla düşen performans.
Veri sızıntısı (data leakage) nasıl olur?
Sızıntı, hedefle ilişkili bilgilerin (doğrudan ya da dolaylı) modele eğitim aşamasında “gelecekten” taşınmasıdır. Örneğin churn tahmini yaparken “abonelik iptal tarihi”nden türeyen bir özellik eklemek barizdir. Daha sinsi olanı ise global istatistiklerin split öncesi hesaplanmasıdır.
Zaman serilerinde rastgele split yapmayın
Zamansal bağımlılık varsa, rastgele train/test ayrımı geleceği geçmişe karıştırır. Bunun yerine zaman tabanlı ayrım (ör. son 2 ay test), rolling window validasyon veya backtesting yaklaşımı gerekir.
import pandas as pd
from sklearn.model_selection import TimeSeriesSplit
from sklearn.metrics import mean_absolute_error
from sklearn.ensemble import RandomForestRegressor
df = pd.read_csv("timeseries.csv")
df["date"] = pd.to_datetime(df["date"])
df = df.sort_values("date")
y = df["target"]
X = df.drop(columns=["target", "date"])
tscv = TimeSeriesSplit(n_splits=5)
model = RandomForestRegressor(random_state=42)
scores = []
for train_idx, val_idx in tscv.split(X):
X_train, X_val = X.iloc[train_idx], X.iloc[val_idx]
y_train, y_val = y.iloc[train_idx], y.iloc[val_idx]
model.fit(X_train, y_train)
pred = model.predict(X_val)
scores.append(mean_absolute_error(y_val, pred))
print("MAE avg:", sum(scores) / len(scores))Target encoding’de K-fold zorunluluğu
Target encoding’i tüm eğitim verisinde tek seferde hesaplayıp aynı veriye uygularsanız, model kategorilerin hedef ortalamalarını ezberler. Çözüm; her fold’da kategorilerin istatistiğini sadece fold dışı veriden hesaplayıp fold içindeki satırlara uygulamaktır. Ayrıca global ortalamaya doğru smoothing yapmak, az örnekli kategorilerin aşırı oynamasını engeller.

Pratik Kontrol Listesi: Güvenilir Özellik Mühendisliği İçin
Aşağıdaki kontrol listesi, hem başlangıç projelerinde hem de üretim sistemlerinde tekrar tekrar işe yarar. Amaç; özellik üretimini rastgele deneme-yanılmadan çıkarıp ölçülebilir ve güvenilir bir sürece dönüştürmektir.
- Özellik tanımı: Hangi sütundan, hangi kuralla, hangi zaman penceresiyle üretiliyor?
- Split stratejisi: Problem zamansal mı, kullanıcı bazlı mı, grup bazlı mı ayrım gerektiriyor?
- Leakage testi: Özellik “geleceği” dolaylı yoldan taşıyor mu, global istatistikler split öncesi mi hesaplanıyor?
- Baseline kıyas: Yeni özellik eklenince metrik artıyor mu, artış farklı validasyonlarda tutarlı mı?
- Özellik stabilitesi: Eğitim ve üretimde dağılım kayması (drift) var mı, izleniyor mu?
- İş mantığı: Özellik gerçekten bir davranışı mı temsil ediyor, yoksa veri koleksiyon hatasını mı?
- Karmaşıklık maliyeti: Üretimde hesaplama süresi, bağımlılıklar ve bakım yükü yönetilebilir mi?
Doğrulama ve İzleme: Feature Engineering Bitmez, Evrilir
Özellik mühendisliği bir “proje görevi” değil, yaşayan bir sistemdir. Üretime çıktıktan sonra kullanıcı davranışı, ürün akışları ve veri kaynakları değişir. Bu değişimler, özelliklerin dağılımını ve model performansını etkiler.
Drift ve veri kalitesi metrikleri
Özellik bazında dağılım takibi (ör. PSI, KS testi, ortalama/medyan kayması), eksik değer oranı, yeni kategori oranı gibi metrikler; sorunları erken yakalar. Özellikle yüksek kardinaliteli kategorilerde “yeni kategori akışı” üretim performansını hızlı düşürebilir.
A/B test ve çevrim içi metriklerle bağ kurma
Offline metrik artışı her zaman iş metriğine yansımaz. Bu yüzden mümkünse online değerlendirme (shadow mode, A/B test) ve gecikmeli etiket (delayed label) süreçleriyle gerçek etkiyi ölçmek gerekir. Böylece “metrik sarhoşluğu” yerine sürdürülebilir kazanım elde edilir.
Sonuç: Güçlü Modelin Temeli Doğru Temsildir
Feature engineering; doğru dönüşüm, doğru kodlama ve doğru değerlendirme tasarımıyla birleştiğinde model kalitesini dramatik biçimde artırır. Aynı zamanda en tehlikeli tuzakları da barındırır: veri sızıntısı, yanlış split ve kontrolsüz hedef kodlama gibi hatalar; kısa vadede parlak sonuçlar verip uzun vadede büyük maliyet doğurur.
Bu yüzden yaklaşımınız; sistematik EDA, tekrarlanabilir pipeline, sağlam validasyon ve üretim izleme dörtlüsüne dayanmalı. Böyle yaptığınızda yalnızca daha iyi metrikler değil, daha güvenilir ve yönetilebilir bir makine öğrenmesi sistemi de kurarsınız.


