21 Haziran 2026
Öneri Sistemleri Nasıl Ölçülür? Precision@k'dan nDCG'ye
Bir öneri sistemi kurdunuz; ilk 10 sonuç fena görünmüyor. Peki sistem gerçekten iyi mi, yoksa siz mi iyimsersiniz? Tez çalışmamda makale öneri sistemini değerlendirirken kullandığım metrikleri, sezgileriyle birlikte özetlemek istiyorum. Bu metrikler yalnızca akademik öneri için değil, arama, e-ticaret ve içerik önerisi gibi her sıralama probleminde geçerli.
Çalışılmış bir örnek
Aşağıdaki senaryoyu ele alalım: sistem 5 öneri döndürdü, evrende toplam 4 ilgili öğe var ve bunların 3'ü listeye girdi (1., 3. ve 4. sıralarda):
Yazının geri kalanında bu örnekteki sayıların nereden geldiğini adım adım göreceğiz.
Kesim noktalı metrikler: Precision@k ve Recall@k
Kullanıcı genellikle yalnızca ilk k sonuca bakar; bu yüzden metrikler de listeyi k'da keser.
- Precision@k: İlk k öneriden kaçı isabetli? Örnekte ilk 5'in 3'ü ilgili → 3/5 = 0,60. "Gösterdiklerimin ne kadarı doğruydu?"
- Recall@k: Tüm ilgili öğelerin ne kadarını ilk k'ya sokabildim? Örnekte 4 ilgili öğenin 3'ü listede → 3/4 = 0,75. "Doğruların ne kadarını gösterebildim?"
İkisi arasında doğal bir gerilim vardır: k büyüdükçe recall artar, precision genellikle düşer. Tek başına biri yeterli değildir — ikisini birlikte raporlamak gerekir.
Sıralamayı hesaba katmak: MAP ve MRR
Precision@k, ilk k içindeki sıralamaya duyarsızdır: doğru cevap 1. sırada da olsa 5. sırada da olsa aynı puanı verir. Oysa kullanıcı için fark büyüktür.
- MRR (Mean Reciprocal Rank): İlk doğru cevabın sırasının tersini alır. Örnekte ilk isabet 1. sırada → 1/1 = 1,00. İlk isabet 4. sırada olsaydı 0,25 olurdu. "Kullanıcı ilk doğru sonuca ne kadar çabuk ulaşıyor?"
- MAP (Mean Average Precision): Her doğru cevap için o noktaya kadarki precision'ı hesaplayıp ortalar. Örnekte: 1. sıradaki isabet için P=1/1, 3. sıradaki için P=2/3, 4. sıradaki için P=3/4 → AP = (1 + 0,667 + 0,75) / 4 ilgili öğe ≈ 0,60. Birden fazla doğru cevabın tamamının sıralamasını tek sayıda özetler.
Dereceli ilgililik: nDCG
Gerçek dünyada ilgililik ikili değildir — bir makale "çok ilgili", "kısmen ilgili" ya da "alakasız" olabilir. nDCG (normalized Discounted Cumulative Gain) iki fikri birleştirir:
- Daha ilgili öğe daha çok puan getirir (dereceli kazanç).
- Aynı öğe listenin altındaysa katkısı logaritmik olarak azalır — diyagramdaki azalan sütunlar tam olarak bu konum indirimi: 1. sıranın ağırlığı 1,00 iken 5. sıranınki 0,39.
Sonuç, ideal sıralamaya bölünerek 0–1 aralığına normalize edilir. Böylece farklı sorgular arasında karşılaştırma yapılabilir.
Çevrimdışı ölçüm her şey değil
Bu metriklerin hepsi çevrimdışı değerlendirmedir: elde bir ground truth kümesi vardır, sistem ona karşı puanlanır. Üretimdeki sistemlerde bunun üstüne çevrimiçi sinyaller gelir — tıklama, kaydetme, geri dönme oranı, A/B testleri. Çevrimdışı metriklerde kazanan bir model çevrimiçi kaybedebilir; çünkü ground truth, kullanıcının gerçekte ne isteyeceğinin kusurlu bir yaklaşımıdır. Akademik çalışmada çevrimiçi test lüksü çoğu zaman yoktur; bu yüzden çevrimdışı protokolün dürüstlüğü (bölme stratejisi, sızıntı kontrolü, çoklu metrik raporlama) daha da önem kazanır.
Sahadan birkaç ders
- Tek metrikle karar vermeyin. Benim deneylerimde bazı yapılandırmalar MRR'ı yükseltirken MAP'i düşürüyor — sistem ilk doğruyu öne çekiyor ama kuyruktaki doğruları kaybediyor demektir.
- Ground truth'un kalitesi metrikten önemlidir. Atıf tabanlı değerlendirmede "ilgili" saydığınız küme eksikse, sisteminiz aslında iyi önerileri "yanlış" diye cezalandırılır.
- k'yı kullanım senaryosuna göre seçin. Bir araştırmacı ilk 10 öneriye bakıyorsa Precision@100'ün pratik anlamı azdır.
Metrikler pusula gibidir: yönü gösterirler ama yolu yürümezler. Asıl iş, metriğin yükseldiği değişikliğin kullanıcı için de daha iyi olduğundan emin olmakta.