DeepmineAI olarak, makine öğrenmesi modellerimizin performansını artırmak için farklı encoding yöntemlerini test ettik. Bu çalışmada, İstanbul’un ilçelerini içeren bir veri seti üzerinden Label Encoding, One-Hot Encoding, Frequency Encoding, Target Encoding ve Hibrit Yöntem gibi çeşitli yöntemleri uyguladık. Amacımız, kategorik değişkenleri sayısal değerlere dönüştürerek makine öğrenmesi modellerinin daha verimli çalışmasını sağlamaktı.
Bu süreçte, hangi encoding yönteminin hangi senaryolarda daha etkili olduğunu analiz ettik ve en iyi sonucu Target Encoding’in verdiğini tespit ettik.
Encoding Yöntemleri ve Örnekleri
Çalışmamızda İstanbul’un ilçelerini içeren bir veri seti kullandık. İlçeleri kategorik değişken olarak ele alıp farklı encoding teknikleriyle dönüştürdük.
Çalışmanın verisetini ve kodlarını GitHub’dan indirmek için tıklayınız…
1. Label Encoding
Label Encoding, kategorik değişkenleri basit bir şekilde sayısal değerlere dönüştüren bir yöntemdir. Ancak bu yöntem, ilçeler arasında yapay bir sıralama oluşturur ve modelin yanlış öğrenmesine neden olabilir.
| İlçe | Label Encoding |
|---|---|
| Adalar | 0 |
| Bakırköy | 1 |
| Kadıköy | 2 |
| Üsküdar | 3 |
| Beşiktaş | 4 |
Sorun: Model, Adalar’ın Bakırköy’den küçük olduğunu veya Kadıköy’ün Üsküdar’dan büyük olduğunu düşünebilir. Bu yüzden her zaman ideal değildir.
2. One-Hot Encoding
One-Hot Encoding, her kategorik değeri ayrı bir sütuna bölerek 0 ve 1 değerleriyle temsil eder. Bu yöntem, kategorik değişkenler arasındaki sıralama sorununu ortadan kaldırır ancak çok fazla yeni sütun ekleyerek bellek kullanımını artırabilir.
| İlçe | Adalar | Bakırköy | Kadıköy | Üsküdar | Beşiktaş |
|---|---|---|---|---|---|
| Adalar | 1 | 0 | 0 | 0 | 0 |
| Bakırköy | 0 | 1 | 0 | 0 | 0 |
| Kadıköy | 0 | 0 | 1 | 0 | 0 |
| Üsküdar | 0 | 0 | 0 | 1 | 0 |
| Beşiktaş | 0 | 0 | 0 | 0 | 1 |
Sorun: İlçe sayısı arttıkça, sütun sayısı da artar ve bellek tüketimi ciddi şekilde yükselir.
3. Frequency Encoding
Frequency Encoding, her kategoriye görülme sıklığına göre bir değer atar. Yani ilçelerin kaç kez geçtiğini baz alarak sayısal değerler oluşturur.
| İlçe | Frequency Encoding |
|---|---|
| Adalar | 0.05 |
| Bakırköy | 0.15 |
| Kadıköy | 0.25 |
| Üsküdar | 0.30 |
| Beşiktaş | 0.25 |
Avantaj: Düşük bellek tüketimi ile çalışır ve sıralama sorunu yaratmaz.
Sorun: Model, sadece kategorinin ne kadar sık geçtiğini öğrenir ama ilçelerin fiyat, nüfus gibi özellikleriyle ilişkisini anlayamaz.
4. Target Encoding (Mean Encoding)
Target Encoding, her kategoriyi hedef değişkenin (örneğin, konut fiyatlarının) ortalamasıyla eşleştirir.
Örneğin, ilçelere göre ortalama konut fiyatlarını baz alalım:
| İlçe | Ortalama Konut Fiyatı (₺) | Target Encoding |
|---|---|---|
| Adalar | 3.000.000 | 3.000.000 |
| Bakırköy | 2.500.000 | 2.500.000 |
| Kadıköy | 2.800.000 | 2.800.000 |
| Üsküdar | 2.700.000 | 2.700.000 |
| Beşiktaş | 3.200.000 | 3.200.000 |
Avantaj: Model, ilçelerin konut fiyatlarıyla olan ilişkisini öğrenebilir.
En iyi sonuç: Bu yöntemin model doğruluğunu en fazla artırdığını gözlemledik.
Sorun: Eğer veri seti küçükse veya dengeli değilse overfitting (aşırı öğrenme) riski vardır.
5. Hibrit Yöntem (Label Encoding + Frequency Encoding Kombinasyonu)
Bazı durumlarda, Label Encoding ve Frequency Encoding’in birleşimi daha iyi sonuçlar verebilir.
Örneğin, önce Label Encoding yapıp ardından Frequency Encoding değerlerini ekleyelim:
| İlçe | Label Encoding | Frequency Encoding |
|---|---|---|
| Adalar | 0 | 0.05 |
| Bakırköy | 1 | 0.15 |
| Kadıköy | 2 | 0.25 |
| Üsküdar | 3 | 0.30 |
| Beşiktaş | 4 | 0.25 |
Avantaj: Model, ilçeler arasındaki farkları daha iyi öğrenebilir.
Sorun: Hangi encoding’in daha fazla ağırlık taşıması gerektiği dikkatli ayarlanmalıdır.
Sonuç: En İyi Yöntem Hangisi?
Tüm yöntemleri inceledikten sonra, Target Encoding (Mean Encoding) en iyi sonucu verdi. Çünkü ilçeler arasındaki fiyat farklarını dikkate alarak modelin daha doğru tahminler yapmasını sağladı.
Ancak overfitting riski olduğundan, büyük veri setlerinde Cross-Validation (Çapraz Doğrulama) ile kullanılması gerektiğini unutmayın!
Özet: Encoding Yöntemlerinin Karşılaştırması
| Encoding Yöntemi | Avantajları | Dezavantajları |
|---|---|---|
| Label Encoding | Basit ve hızlı | Sıralama hatası yaratır |
| One-Hot Encoding | Sıralama sorunu yok | Fazla bellek tüketir |
| Frequency Encoding | Bellek dostu | Kategoriler arasındaki farkları anlayamaz |
| Target Encoding | En iyi tahmin doğruluğu | Overfitting riski var |
| Hibrit Yöntem | Dengeli bir yaklaşım | Hangi yöntemin ağırlıklı olması gerektiği iyi belirlenmeli |
Makine öğrenmesi modellerinizi geliştirmek için doğru encoding yöntemini seçmek büyük fark yaratabilir. DeepmineAI olarak, veri bilimi ve yapay zeka üzerine çalışmalarımızı paylaşmaya devam edeceğiz! 🚀