Kazanimlar:
- Problem tipini (sınıflandırma, regresyon, kümeleme) ve başarı kriterini işin gerçek maliyetine göre tanımlayabilme
- Veriyi dürüstçe bölüp (test setine dokunmadan; zaman serisinde kronolojik) sızıntısız bir değerlendirme zemini kurabilme
- Basit bir baseline ile başlayıp karmaşıklığı ancak hak ettiğinde ekleyerek yorumlanabilir model seçebilme
Şimdiye kadar veriyi topladık, temizledik, keşfettik ve özellikler ürettik. Artık asıl işe, model kurmaya geldik. Model, veriden bir örüntü öğrenip yeni durumlar için tahmin üreten matematiksel bir yapıdır. Ama model kurmanın en kritik kısmı kodun kendisi değil, ondan önceki iki karardır: doğru problemi tanımlamak ve veriyi doğru bölmek. Yapay zeka, algoritma seçmede, kod yazmada ve parametre ayarında güçlü bir danışmandır; ama neyi tahmin edeceğinize ve başarının ne demek olduğuna insan karar verir. Yanlış tanımlanmış bir problem, mükemmel yazılmış bir modelle bile işe yaramaz.
Önce problem tanımı: ne tahmin ediyoruz
Her modelleme işi bir soruyla başlar ve bu soru modelin tipini belirler. Sınıflandırma (İngilizcesiyle classification — çıktı bir kategoridir): "Bu müşteri gidecek mi, kalacak mı?", "Bu işlem sahte mi?". Regresyon (İngilizcesiyle regression — çıktı bir sayıdır): "Bu ev kaç TL eder?", "Gelecek ay kaç sipariş gelir?". Kümeleme (İngilizcesiyle clustering — etiketsiz veriyi doğal gruplara ayırma): "Müşterilerim kaç doğal segmente ayrılıyor?".
Problem tanımının ikinci parçası başarı kriteridir: bu modelin "iyi" olması ne demek? Bir sahtekârlık modelinde bir dolandırıcıyı kaçırmak, dürüst bir müşteriyi yanlışlıkla engellemekten çok daha pahalıdır; dolayısıyla "genel doğruluk" değil, "dolandırıcıları yakalama oranı" öne çıkar. Bu kriteri baştan, iş sahibiyle birlikte tanımlamazsanız, sonradan "yüksek doğruluk" gösteren ama işe yaramayan bir model çıkarırsınız (metrikleri Ünite 7'de derinleştireceğiz).
Dikkat: "Doğruluk" (accuracy) yanıltıcı olabilir. 1000 işlemin 10'u sahteyse, "hiçbiri sahte değil" diyen aptal bir model %99 doğruluk verir ama tek bir dolandırıcı bile yakalamaz. Başarı kriterini problemin gerçek maliyetine göre seçin.
Eğitim/test bölme: modelin dürüst sınavı
Bir modeli, öğrendiği veriyle sınamak, öğrenciye sınavda çalıştığı soruların aynısını sormak gibidir; yüksek not alır ama gerçekte ne bildiğini göstermez. Bu yüzden veriyi ikiye (çoğu zaman üçe) böleriz:
- Eğitim seti (İngilizcesiyle training set, genellikle %70-80): Model bunun üzerinde öğrenir.
- Test seti (İngilizcesiyle test set, genellikle %20-30): Model bunu hiç görmez; gerçek performans burada ölçülür.
- Doğrulama seti (İngilizcesiyle validation set): Model ayarı (hangi parametre daha iyi) için kullanılan ara set; test setini "temiz" tutmak için.
En temel kural: test setine eğitim sırasında asla dokunulmaz. Ölçekleme, kodlama, özellik seçimi — hepsi yalnızca eğitim setinden öğrenilir, sonra teste uygulanır (Ünite 5'teki sızıntı ilkesi). Test seti, modelin gerçek dünyayı ilk kez gördüğü andır; onu erken açarsanız gerçek performansı asla bilemezsiniz.
Zaman serisi istisnası: Eğer veriniz zamana bağlıysa (satış, borsa, talep), rastgele bölme yapılmaz. Çünkü rastgele bölme modelin geleceği görüp geçmişi tahmin etmesine yol açar — bu sızıntıdır. Bunun yerine kronolojik böl: eski dönemle eğit, yeni dönemle test et.
Algoritma seçimi: basitten karmaşığa
Yeni başlayanların en sık hatası, en karmaşık modelle başlamaktır. Doğru yaklaşım tersidir: önce basit bir baseline (temel kıyas modeli) kur. Bir sınıflandırmada "her zaman çoğunluk sınıfını tahmin et"; bir regresyonda "her zaman ortalamayı tahmin et". Bu aptal model bir taban çizgisi verir; gerçek modeliniz bunu geçemiyorsa bir sorun var demektir. Sonra basit ve yorumlanabilir modellere geçin.
Model
Problem tipi
Güçlü yanı
Zayıf yanı
Baseline (çoğunluk/ortalama)
Her ikisi
Kıyas noktası verir
Öğrenmez
Lojistik regresyon
Sınıflandırma
Basit, yorumlanabilir
Yalnız doğrusal ilişki
Doğrusal regresyon
Regresyon
Basit, hızlı
Doğrusal varsayım
Karar ağacı
Her ikisi
Yorumlanabilir
Kolay ezberler
Random forest
Her ikisi
Güçlü, dayanıklı
Az yorumlanabilir
Gradyan artırma (XGBoost vb.)
Her ikisi
Çok güçlü
Ayarı zor, ezber riski
Kural: en basit "yeterince iyi" modeli seçin. Yorumlanabilirlik çoğu iş bağlamında güçten daha değerlidir; bir kredi reddini "çünkü borç/gelir oranınız yüksek" diye açıklayabilmek, "çünkü kara kutu öyle dedi" demekten iyidir.
Üç mini vaka
Vaka 1 — Yanlış problem tanımı. Bir ekip, "müşteri memnun mu" diye sınıflandırma modeli kurdu ama başarı kriterini "doğruluk" seçti. Veride müşterilerin %88'i memnundu; model herkese "memnun" deyip %88 doğruluk aldı ve memnuniyetsizleri hiç yakalayamadı — oysa asıl amaç onları bulmaktı. Ders: başarı kriterini gerçek amaca göre seçin.
Vaka 2 — Zaman sızıntısı bölmede. Bir talep tahmini projesinde veri rastgele bölündü. Model %93 doğruluk verdi ama üretimde çöktü, çünkü eğitimde Aralık verisiyle Ocak'ı, sonra Kasım'ı tahmin etmişti — geleceği görmüştü. Kronolojik bölmeye geçilince gerçek performans %74 çıktı. Ders: zaman serisinde kronolojik böl.
Vaka 3 — Gereksiz karmaşıklık. Bir analist doğrudan derin sinir ağıyla başladı, haftalarca ayarladı, %81 doğruluk aldı. Sonra bir meslektaşı 20 satırlık lojistik regresyonla %80 aldı — çok daha hızlı, yorumlanabilir ve bakımı kolay. Ders: baseline ve basit modelle başla, karmaşıklığı hak ettiğinde ekle.
Dört kopyalanabilir şablon
1) Problem tanımı netleştirme:
Rolün: modelleme danışmanı. Şu işi tanımlamama yardım et: "Müşterikaybını azaltmak istiyorum." Bana şunları sor ve netleştir: (1) bu birsınıflandırma mı regresyon mu, (2) hedef değişken tam olarak ne ve nasıltanımlanmalı, (3) başarı kriteri ne olmalı ve neden. Karar bende;sen soruları ve seçenekleri sun.
2) Güvenli eğitim/test bölme:
df'imi eğitim/test olarak %80/%20 böl. Sınıf dağılımını koru (stratify).random_state=42. Bu ZAMAN SERİSİ DEĞİL (bağımsız gözlemler). Bölmesonrası her setin sınıf oranını yazdır. Test setine hiçbir dönüşümuygulamadan, sadece bölme kodunu ver.
3) Zaman serisi kronolojik bölme:
Veri zamana bağlı (tarih sütunu: siparis_tarihi). Rastgele DEĞİL,kronolojik böl: en eski %80 eğitim, en yeni %20 test. Eğitim ve testtarih aralıklarını yazdır ki geleceğin sızmadığını doğrulayayım.
4) Baseline kurma:
Sınıflandırma problemim var (hedef: churn 0/1). Önce bir baseline kur:her zaman çoğunluk sınıfını tahmin eden DummyClassifier ile eğitim/testdoğruluğunu ölç. Sonra basit bir lojistik regresyon eğit ve baseline'ıgeçip geçmediğini karşılaştır. İkisinin metriklerini yan yana göster.
Zayıf prompt / Güçlü prompt
Zayıf prompt:
Bu veriyle en iyi modeli kur.
"En iyi" tanımsız; problem tipi, hedef, başarı kriteri ve bölme stratejisi yok. YZ rastgele bir model üretir, muhtemelen sızıntılı.
Güçlü prompt:
Rolün: modelleme asistanı. Problem: sınıflandırma, hedef "churn" (0/1),sınıf dengesizliği var (~%12 churn). Başarı kriteri: churn edenleriyakalama (recall) öncelikli. Veri bağımsız gözlem (zaman serisi değil).Görev: (1) %80/20 stratified bölme, (2) DummyClassifier baseline,(3) lojistik regresyon, tüm dönüşümler pipeline içinde ve sadeceeğitimden öğrenilsin. Test setine bölmeden önce dokunma.
Burada problem tipi, dengesizlik, kriter ve sızıntı önlemi açıktır.
Sık yapılan hatalar
- Başarı kriterini gerçek amaca göre seçmemek. Dengesiz veride "doğruluk" yanıltır; azınlık sınıfı yakalamak isteniyorsa recall öne çıkar.
- Test setine eğitim sırasında dokunmak. Ölçekleme/kodlamayı bölme öncesi yapmak sızıntıdır ve gerçek performansı gizler.
- Zaman serisinde rastgele bölmek. Model geleceği görür, üretimde çöker; kronolojik bölme şarttır.
- Baseline kurmadan karmaşık modele atlamak. Kıyas noktası olmadan bir modelin gerçekten iyi olup olmadığını bilemezsiniz.
- Yorumlanabilirliği göz ardı etmek. İş kararlarında açıklanabilir basit model, kara kutudan çoğu zaman daha değerlidir.
İpucu: Model kurmaya başlamadan önce tek bir cümle yazın: "Bu model _____ tahmin edecek, başarısı _____ metriğiyle ölçülecek, çünkü işin gerçek maliyeti _____." Bu cümleyi dolduramıyorsanız kod yazmaya henüz hazır değilsiniz.
Özetle
Model kurmanın en kritik kısmı kod değil, ondan önceki kararlardır: doğru problemi tanımlamak (sınıflandırma mı regresyon mu, hedef ne, başarı kriteri ne) ve veriyi dürüstçe bölmek (test setine dokunmadan; zaman serisinde kronolojik). Her zaman basit bir baseline'la başlayın ve karmaşıklığı ancak hak ettiğinde ekleyin; yorumlanabilirlik çoğu iş bağlamında güçten değerlidir. YZ algoritma seçimi ve kodda güçlü bir danışmandır, ama neyi neden tahmin ettiğinize insan karar verir.
Uygulama görevi
Bir tahmin problemi tanımlayın ve şu cümleyi yazılı doldurun: "Bu model ___ tahmin edecek (sınıflandırma/regresyon), hedef ___, başarı kriteri ___ çünkü ___." Sonra veriyi doğru stratejiyle bölün (zaman serisiyse kronolojik), bir baseline kurun ve basit bir modelin bu baseline'ı geçip geçmediğini ölçün.
Kontrol listesi
- [ ] Problem tipini (sınıflandırma/regresyon) ve hedefi net tanımladım mı?
- [ ] Başarı kriterini işin gerçek maliyetine göre seçtim mi?
- [ ] Test setine eğitim boyunca dokunmadım mı?
- [ ] Zaman serisiyse kronolojik böldüm mü?
- [ ] Karmaşık modele geçmeden önce bir baseline kurdum mu?