KTÜ · Yapay Öğrenme Dönem Projesi

Bir arabanın CO₂'sini, hiç sürmeden tahmin etmek.

7.385 aracın teknik bilgileriyle eğitilen yapay öğrenme modelleri. Ve modelleri kandıran gizli bir tuzak: veri sızıntısı.

Projeyi keşfet
Semih ÖzdaşKaradeniz Teknik ÜniversitesiKasım 2026Python · scikit-learn · XGBoost
0araç, Kanada hükümeti ölçümleri
0tekrar eden satır bulundu ve silindi
0R², yakıt tüketimi modele verilince (sahte başarı)
0R², dürüst senaryoda en iyi model (XGBoost)
Veri seti

Her satır bir araç. Hepsi burada.

Kaggle'daki "CO2 Emission by Vehicles" verisi, Kanada hükümetinin resmî yakıt tüketimi ölçümlerinden derlenmiş. Dosya indirildiği haliyle kullanıldı. Aşağıda ham verinin tamamını arayıp süzebilirsin.

Engine Size (L)Motor hacmi, litre. Sayısal.
CylindersSilindir sayısı (3–16). Sayısal.
TransmissionŞanzıman kodu, ör. AS6 = seçmeli otomatik, 6 vites. Tip ve vites diye ikiye ayrıldı.
Fuel TypeX normal benzin, Z premium benzin, D dizel, E etanol (E85).
Vehicle Class16 araç sınıfı: kompakt, SUV, pikap, minivan…
Make · Model42 marka. Model adı modele girmiyor, yalnızca tanımlama için.
Fuel Consumption ×4 (sızıntı)Şehir içi, şehir dışı, birleşik tüketim. CO₂'yi neredeyse doğrudan veriyor.
CO₂ Emissions (g/km) · hedefTahmin edilen değer. Ortalama 251, en düşük 96, en yüksek 522.
Aşamalar

Ham veriden güvenilir bir tahmine.

Proje altı aşamada ilerledi. Her aşamada ne yapıldığı ve nelere bakıldığı sade bir dille anlatılıyor.

01
Veriyi bulmak
Yöntemler

Kullanılan her yöntem, basitçe.

Bir yöntemin ne olduğu, bu projede nasıl kullanıldığı, neye bakıldığı ve ne sonuç verdiği.

Sonuçlar

Sızıntı gidince gerçek ortaya çıkıyor.

Python'da 5 katlı çapraz doğrulamayla ölçülen R² değerleri. Kırmızı çubuklar tüketim dahil, yeşiller dürüst senaryo.

A · yakıt tüketimi varB · yakıt tüketimi yokEksen 0,80'den başlar
Ana bulgu

Hata 5 katına çıktı

XGBoost'un RMSE'si 2,6'dan 13,3 g/km'ye yükseldi. A senaryosundaki 0,998 iyi bir modelin değil, sızıntının işareti.

Doğrusal modeller

En çok onlar düştü

R² 0,993'ten 0,873'e indi. Tüketim olmadan ilişki doğrusal değil; ağaç modelleri etkileşimleri yakalıyor.

Sınıflandırma

Makro F1 0,879

Random Forest. Düşük ile Yüksek hiç karışmıyor; hatalar eşiğe yakın komşu sınıflarda.

Bu grafik nasıl okunur?

Her model için iki çubuk var. Kırmızı çubuk modelin yakıt tüketimini de gördüğü, yeşil çubuk görmediği durum. Çubuk sağa uzadıkça R² 1’e yaklaşır, yani tahmin iyileşir. Ne görüyoruz? Kırmızıların hepsi neredeyse en sağda (0,99): tüketim verilince her model, en basiti bile, "kusursuz" görünüyor. Yeşillerde modeller ayrışıyor: doğrusal modeller 0,87’de kalırken ağaç tabanlı modeller 0,94–0,95’e çıkıyor. Sonuç: Kırmızı çubuklar modelin başarısını değil sızıntıyı ölçüyor; asıl karşılaştırma yeşil çubuklarla yapılmalı ve orada en iyisi XGBoost.

Grafikler ve yorumları

Her grafik ne anlatıyor?

Projedeki grafiklerin her biri için: ne gösterdiği, nasıl okunacağı, ne gördüğümüz ve sınavda söylenecek tek cümlelik sonuç.

Canlı simülasyon

Yapay zekâ şimdi, senin tarayıcında çalışıyor.

Başlat'a bas: 7.385 aracın ham verisi gerçekten temizlenir, bölünür ve model sıfırdan eğitilir. Her adımı sağdaki kartta sade bir dille anlatıyorum; sonuçlar çıktıkça altında yorumları beliriyor.

Hazır 00.0 sn
    Düşük CO₂OrtaYüksekSilinenTest (kilitli)7.385 araç
    00Şu an ne oluyor?

    Başlamaya hazır

    Başlat'a bastığında 8 adım sırayla çalışacak. Soldaki her kare bir araç; rengi CO₂ sınıfını gösteriyor. Her adımı burada anlatacağım.

    İpucu: "Hızlı" seçeneğiyle süreyi kısaltabilirsin.
    7.385araç seni bekliyor

    ① Öğrenme eğrisi ağaç 0 / 300

    eğitim hatasıtest hatası

    Her yeni ağaçla hatanın nasıl düştüğünü gösterir. Çizgi aşağı indikçe model öğreniyor.

    ② Sızıntılı ve dürüst skor R², test kümesi

    R² 1'e ne kadar yakınsa tahmin o kadar iyi. Kırmızı çubuklar yakıt tüketimini gören (sızıntılı) modeller.

    ③ Gerçek ve tahmin –

    Her nokta test kümesinden bir araç. Kesikli çizgiye yakın noktalar doğru tahmin.

    ④ Karbon sınıfı tahmini –

    Satır gerçek sınıf, sütun tahmin. Köşegendeki yeşil kutular doğru tahminler.

    ⑤ Model neye bakıyor? özellik önemi

    Modelin kararlarında hangi bilginin ne kadar pay aldığı.

    🔒 Simülasyon bitince az önce eğitilen modelle kendi aracını tahmin ettirebilirsin.

    ⑥ Kendi aracını tahmin et dürüst (B) model

    Tahmini emisyon– g/km
    96200300522

    Bir araç seç.

    Teknik günlük (arka planda olanların kaydı)

    Not: Tarayıcıdaki ağaç modeli, Python'daki XGBoost'un temel fikrini (art arda eklenen karar ağaçları) sıfırdan uygulayan hafif bir sürüm. Bölme rastgeleliği farklı olduğundan skorlar Python sonuçlarına yakın ama birebir aynı değil.

    Proje durumu

    Ara rapor teslime hazır.

    Önerideki yedi adımdan üçü bitti; şu an SMOTE karşılaştırması üzerinde çalışıyorum.

    %0tamamlandı
    • ✓
      Veri hazırlığı ve keşifsel analizTekrar temizliği, şanzıman ayrıştırma, sızıntı kanıtı
      Tamamlandı
    • ✓
      7 model × 2 senaryoGridSearchCV + 5 katlı CV; MAE, RMSE, R²
      Tamamlandı
    • ✓
      Temel sınıflandırmaSMOTE'suz lojistik regresyon ve Random Forest
      Tamamlandı
    • 4
      SMOTE karşılaştırmasıAz örnekli "Yüksek" sınıfı için yapay örnek üretimi
      Şu an
    • 5
      SHAP ile yorumlamaModel hangi özelliğe ne kadar bakıyor?
      Planlandı
    • 6
      Benzinli → hibrit tasarrufYılda 15.000 km için CO₂ farkı
      Planlandı
    • 7
      Değerlendirmeyi sıkılaştırmaNested CV ve marka-model gruplu doğrulama
      Planlandı
    Kazanımlar

    Bu proje bana neler kattı?

    Bu aşamaya kadar öğrendiklerim. Bir kısmı teknik, bir kısmı düşünme biçimi.

    01

    Yüksek skora şüpheyle bakmak

    0,998'lik R² ilk bakışta harika görünüyordu. Bunun bir başarı değil, bir uyarı işareti olduğunu fark etmeyi öğrendim. Artık "neden bu kadar iyi?" diye sormadan sonuca güvenmiyorum.

    02

    Veri sızıntısını tanımak

    Sızıntının yalnız açık sütunlardan değil, tekrar eden satırlardan ve yanlış yapılan ölçeklemeden de gelebileceğini gördüm. Pipeline kullanmanın nedenini artık ezbere değil, yaşayarak biliyorum.

    03

    Adil değerlendirme kurmak

    Test kümesini sona kadar kilitlemek, çapraz doğrulama yapmak ve katlar arası sapmaya bakmak. Bir modeli tek bir sayıyla değil, kararlılığıyla değerlendirmeyi öğrendim.

    04

    Doğru metriği seçmek

    Dengesiz sınıflarda %60 doğruluğun hiçbir şey ifade etmeyebileceğini gördüm. Makro F1, RMSE ve MAE'nin her birinin neyi ölçtüğünü ve ne zaman yanılttığını kavradım.

    05

    Alan bilgisinin gücü

    1 litre benzinin yaklaşık 2,3 kg CO₂ ürettiğini bilmek, sızıntıyı grafiğe bakar bakmaz fark etmemi sağladı. Makine öğrenmesi, problemin fiziğini anlamadan eksik kalıyor.

    06

    Tekrar üretilebilir çalışmak

    Sabit rastgelelik tohumu, numaralı betikler, koddan otomatik üretilen rapor ve site. Aynı kodu kim çalıştırırsa aynı sonucu alıyor. Bilimsel çalışmanın temeli bu.

    "Bir modelin ne kadar iyi olduğunu değil, neden o kadar iyi olduğunu sormayı öğrendim."