Makine Öğreniminde Öznitelik Mühendisliği Teknikleri ve Örnekleri
Makine öğreniminde öznitelik mühendisliği teknikleri ve örnekleri, bir veri setindeki ham sütunları, tahmin modellerinin performansını artıracak şekilde işleme, temizleme ve yeni değişkenler oluşturma sanatını ifade eder. Veri biliminde “çöp girerse çöp çıkar” (garbage in, garbage out) prensibi gereği, en gelişmiş algoritmalar bile kötü yapılandırılmış verilerle başarılı sonuçlar üretemez; bu nedenle öznitelik mühendisliği, modern yapay zeka çalışmalarının temel taşıdır. Günlük hayatta kullandığımız öneri sistemlerinden hava durumu tahminlerine kadar her dijital çözümün arkasında, karmaşık verileri anlamlı hale getiren titiz bir mühendislik süreci yatmaktadır.
- Öznitelik Mühendisliği Nedir: Temel kavramları ve makine öğrenimi süreçlerindeki yerini kavrayacaksınız.
- Veri Temizleme Teknikleri: Eksik veriler ve aykırı değerlerle nasıl başa çıkacağınızı öğreneceksiniz.
- Dönüştürme Yöntemleri: Kategorik verileri sayısal formatlara çevirmeyi ve veri ölçeklendirmeyi keşfedeceksiniz.
- Yeni Öznitelik Türetme: Mevcut verilerden modelin başarısını artıracak yeni bilgiler üretmeyi öğreneceksiniz.
- Pratik Uygulamalar: Gerçek hayat senaryoları üzerinden tekniklerin nasıl uygulandığını göreceksiniz.
- Öznitelik mühendisliği, model performansını algoritma seçiminden daha fazla etkileyebilir.
- Veri setindeki her sütun bir “öznitelik” (feature) olarak adlandırılır.
- Eksik verileri silmek her zaman en iyi çözüm değildir; doldurma (imputation) yöntemleri daha etkilidir.
- Makine öğrenimi modelleri genellikle sadece sayısal verilerle çalışabilir, bu yüzden metin tabanlı veriler kodlanmalıdır.
Öznitelik Mühendisliği Nedir ve Neden Önemlidir?
Öznitelik mühendisliği (Feature Engineering), ham verilerden alan bilgisini (domain knowledge) kullanarak makine öğrenimi algoritmalarının daha iyi çalışmasını sağlayan özellikler çıkarma sürecidir. Bir veri bilimcinin zamanının yaklaşık %80’ini veriyi hazırlamakla geçirdiği söylenir. Bunun nedeni, gerçek dünyadaki verilerin genellikle kirli, eksik ve düzensiz olmasıdır.
Makine öğrenimi modelleri matematiksel denklemlere dayanır. Bu nedenle, verilerin bu denklemlere girebilecek kadar düzenli ve modelin örüntüleri yakalayabileceği kadar açıklayıcı olması gerekir. Örneğin, bir evin fiyatını tahmin ederken sadece “oda sayısı” bilgisini kullanmak yerine, “oda başına düşen metrekare” gibi türetilmiş bir öznitelik kullanmak, modelin çok daha isabetli tahminler yapmasını sağlayabilir.
Eksik Verilerin Yönetimi (Handling Missing Values)
Veri toplama süreçlerinde sensör hataları, anketlerde boş bırakılan sorular veya sistemsel hatalar nedeniyle veri setinde boşluklar (NaN veya Null) oluşabilir. Bu eksiklikler modelin hata vermesine veya yanlış sonuçlar üretmesine neden olur. Eksik verilerle başa çıkmak için şu teknikler kullanılır:
- Silme (Deletion): Eğer eksik veri miktarı çok azsa ve veri seti çok genişse, eksik satırlar veya sütunlar silinebilir. Ancak bu, değerli bilgilerin kaybına yol açabilir.
- İstatistiksel Doldurma (Imputation): Eksik değerler; ilgili sütunun ortalaması (mean), medyanı (median) veya en sık tekrar eden değeri (mode) ile doldurulur.
- Tahmine Dayalı Doldurma: Diğer değişkenler kullanılarak eksik değerin ne olabileceği bir başka makine öğrenimi modeli ile tahmin edilir.
Kategorik Değişkenlerin Kodlanması (Categorical Encoding)
Makine öğrenimi algoritmaları metinleri doğrudan işleyemez; her şeyin sayısal bir karşılığı olmalıdır. Şehir isimleri, renkler veya eğitim durumu gibi kategorik verilerin sayılara dönüştürülmesi gerekir. En popüler iki yöntem şunlardır:
Label Encoding (Etiket Kodlama)
Her kategoriye benzersiz bir sayı atanır. Örneğin: İlkokul=1, Ortaokul=2, Lise=3. Bu yöntem, veriler arasında doğal bir sıralama (ordinal) varsa uygundur. Ancak şehirler gibi bir sıralamanın olmadığı durumlarda model, “İstanbul (3) büyüktür Ankara (1)” gibi yanlış bir matematiksel anlam çıkarabilir.
One-Hot Encoding
Her kategori için yeni bir sütun oluşturulur ve o kategoriye ait olan satıra “1”, diğerlerine “0” yazılır. Bu, kategoriler arasında bir üstünlük ilişkisi kurulmasını engeller. Ancak çok fazla kategori olduğunda veri setinin boyutunu (sütun sayısını) aşırı artırabilir.
Elimizde “Renk” sütunu olsun ve değerleri “Kırmızı”, “Mavi”, “Yeşil” olsun. One-Hot Encoding uygulandığında 3 yeni sütun oluşur: Renk_Kırmızı, Renk_Mavi, Renk_Yeşil. Eğer bir satır Kırmızı ise, Renk_Kırmızı sütunu 1, diğerleri 0 olur.
Ölçeklendirme ve Normalleştirme (Feature Scaling)
Veri setindeki farklı özniteliklerin değer aralıkları birbirinden çok farklı olabilir. Örneğin, bir kişinin yaşı (0-100) ile yıllık geliri (10.000-500.000) aynı modelde kullanıldığında, büyük sayılar modeli domine edebilir. Bunu engellemek için ölçeklendirme yapılır.
| Yöntem | Açıklama | Hangi Durumda Kullanılır? |
|---|---|---|
| Min-Max Scaling | Değerleri 0 ile 1 arasına sıkıştırır. | Sınırları belli verilerde (Görüntü işleme vb.) |
| Standardizasyon | Ortalamayı 0, standart sapmayı 1 yapar. | Aykırı değerlerin olduğu ve normal dağılım beklenen verilerde. |
| Robust Scaling | Medyan ve çeyrekliklere göre ölçekler. | Çok fazla aykırı değer (outlier) varsa. |
Yeni Öznitelik Türetme ve Dönüştürme
Mevcut verileri matematiksel işlemlerden geçirerek daha anlamlı bilgiler üretmek, modelin doğruluğunu ciddi oranda artırabilir. Bu işleme “Feature Extraction” veya “Feature Creation” denir. Yaygın teknikler şunlardır:
- Zaman Verileri: Bir tarih bilgisinden “haftanın hangi günü”, “hafta sonu mu”, “yılın hangi çeyreği” gibi yeni özellikler çıkarılabilir.
- Gruplandırma (Binning): Sürekli sayısal verileri aralıklara bölerek kategorize etmektir. Örneğin, yaş verisini 0-18 (Çocuk), 19-64 (Yetişkin), 65+ (Yaşlı) olarak gruplamak.
- Logaritmik Dönüştürme: Veri dağılımı sağa veya sola çok çarpıksa, logaritma alarak dağılımın normale yaklaştırılması sağlanır. Bu, özellikle gelir dağılımı gibi verilerde etkilidir.
Aykırı Değerlerin (Outliers) Tespiti ve Tedavisi
Aykırı değerler, verinin genel eğiliminden çok uzak olan uç noktalardır. Bu değerler modelin öğrenme sürecini saptırabilir. Aykırı değerleri tespit etmek için Z-skoru veya IQR (Çeyrekler Açıklığı) yöntemleri kullanılır. Tespit edilen aykırı değerler ya silinir, ya belirli bir eşik değerine baskılanır (winsorization) ya da ayrı bir kategori olarak işaretlenir.
Pratik Bir Senaryo: Emlak Fiyat Tahmini
Bir emlak veri setimiz olduğunu düşünelim. Ham verilerimiz şunlar: İlan Tarihi, Oda Sayısı, Salon Sayısı, Metrekare, Bulunduğu Kat, Şehir. Öznitelik mühendisliği ile neler yapabiliriz?
- Yeni Öznitelik: Oda ve salon sayısını toplayarak “Toplam Oda Sayısı” oluşturabiliriz.
- Zaman Mühendisliği: İlan tarihinden “Evin kaç aydır yayında olduğu” bilgisini türetebiliriz.
- Oranlama: Fiyatı metrekareye bölerek “Birim Metrekare Fiyatı” elde edebiliriz.
- Kodlama: Şehir isimlerini One-Hot Encoding ile sayısallaştırabiliriz.
Öğrendiklerinizi Pekiştirin ve Uygulayın
Öznitelik mühendisliği, teorik bilgiden ziyade deneme-yanılma ve pratikle gelişen bir beceridir. Bir veri setiyle çalışırken kendinize şu soruyu sormalısınız: “Bu veriyi bir insana anlatsaydım, hangi ek bilgileri verirdim?” İşte bu ek bilgiler, sizin türeteceğiniz özniteliklerdir. Python’daki Pandas ve Scikit-Learn kütüphaneleri, yukarıda bahsettiğimiz tüm teknikleri uygulamak için harika araçlar sunar.
- Kategorik verilerde neden her zaman Label Encoding kullanamayız?
- Bir veri setinde boy ve kilo bilgisi varsa, bu ikisinden türetilebilecek en anlamlı yeni öznitelik ne olabilir?
- Eksik verileri doldururken hangi durumlarda ortalama (mean) yerine medyan (median) tercih edilmelidir?
- Standardizasyon ve Min-Max ölçeklendirme arasındaki temel fark nedir?
- Öznitelik mühendisliği, ham veriyi modele uygun hale getirme sürecidir.
- Eksik veriler silinmeli veya uygun istatistiksel yöntemlerle doldurulur.
- Kategorik veriler sayısal değerlere (One-Hot, Label vb.) dönüştürülmelidir.
- Ölçeklendirme, farklı aralıktaki verilerin birbirini ezmesini önler.
- Yeni öznitelik türetmek, modelin karmaşık ilişkileri anlamasını sağlar.

