İçeriğe geç

Problem Tipolojisi: Rating Prediction vs. Ranking vs. Top-N Retrieval vs. Sequential

Bir recommender problem 4 farklı şekilde formüle edilebilir — ve doğru formülasyonu seçmek çoğu zaman doğru algoritmayı seçmekten önemlidir. Her birinin matematiksel tanımı, ne zaman seçilir, hangi metrikle ölçülür ve hangi gerçek senaryolar yaşar.

Şükrü Yusuf KAYA
24 dakikalık okuma
Orta
Problem Tipolojisi: Rating Prediction vs. Ranking vs. Top-N Retrieval vs. Sequential
⚠️ Bu derste bir paradigma kırılması var
Çoğu kişi 'recommender = rating prediction' sanır — bu yanılgı sana 5 yıl maliyete mal olabilir. Modern endüstride rating prediction azınlık problem türüdür. Bu derste 4 farklı problem formülasyonunu, hangi durumda hangisini seçmen gerektiğini ve neden farklı metrikler kullandıklarını görüyoruz.

4 Problem Formülasyonu — Genel Bakış#

Recommender problem'leri matematiksel olarak 4 ana familyada toplanır:
#FormülasyonSoruÇıktıTipik Metrik
1Rating Prediction"User u, item i'ye kaç puan verir?"Skor (1-5)RMSE, MAE
2Learning-to-Rank"u için item i, j, k'dan hangisi daha iyi?"SıralamaNDCG, MAP
3Top-N Retrieval"u için en iyi 10 item nedir?"Top-N listePrecision@K, Recall@K, HR@K
4Sequential"u'nun şu ana kadarki davranış zinciri verildi, sıradaki item ne?"Bir veya N itemHR@K, MRR

Anahtar Gözlem#

Bu dört problem aynı veriyi farklı şekillerde tanımlar. Aynı MovieLens-1M dataset'inde dört yaklaşımı da uygulayabilirsin — ve farklı sonuçlar alırsın. Çünkü her formülasyon farklı bir soruya cevap arıyor.

1) Rating Prediction — "Sayıyı Tahmin Et"#

Matematiksel Tanım#

Veri:
{(u, i, r) : u ∈ U, i ∈ I, r ∈ {1,2,3,4,5}}
— kullanıcı u, item i için r puan vermiş.
Hedef:
f(u, i) → r̂
— gerçek r'ye yakın bir r̂ tahmin et.
Loss: Mean Squared Error
L = (1/|D|) Σ (r_ui - r̂_ui)²

Metrik: RMSE#

RMSE = √( (1/|D_test|) Σ (r_ui - r̂_ui)² )
Önemli: Netflix Prize bu problemdi. 0.9525 → 0.8567 RMSE iyileşmesi $1M ödüllüydü. Bu rekabet 2009'da bitti.

Nasıl Çözülür?#

  • Naive: kullanıcının ortalaması, item'ın ortalaması, global ortalama → ~1.0 RMSE
  • Bias model:
    μ + b_u + b_i
    → ~0.95 RMSE
  • Matrix Factorization (Funk SVD):
    μ + b_u + b_i + p_u · q_i
    → ~0.87 RMSE
  • BiasedMF + Adam → ~0.85 RMSE
  • Ensemble (en iyi 2009 sonucu) → 0.857 RMSE

Bu Formülasyon Ne Zaman Kullanılır?#

Use case: Kullanıcının gerçekten yıldız verdiği sistemler.
  • IMDb (1-10 puan)
  • Amazon ürün incelemeleri (1-5 yıldız)
  • Goodreads kitap puanları
  • Letterboxd film puanları
Use case değildir:
  • Netflix (artık rating yerine thumbs up/down kullanıyor — explicit rating ölmüş gibi)
  • YouTube (zaten rating yok — sadece like/dislike + watch-time)
  • E-ticaret (kullanıcı genelde rating vermez, satın alır)
  • Müzik streaming (skip/listen, rating yok)

Bu Formülasyonun Sınırları#

Rating prediction sadece görülen item'lar için çalışır. Test set'te user-item pair olmalı. Ama gerçek hayatta:
  • Kullanıcı milyonlarca item'ı görmedi bile.
  • "Bu kullanıcı bu item'ı görmeli mi?" sorusu daha pratiktir → bu retrieval/ranking problem.

Tarihsel Önemi#

Netflix Prize bu disiplini doğurdu. Ama Netflix yarışmadan sonra bile bu yaklaşımı production'da çok kullanmadı — çünkü ranking daha önemli olduğunu fark ettiler. Bu farkındalık endüstrinin 2010-2015 arası ranking'e geçişini tetikledi.

2) Learning-to-Rank — "Sırala, Sayıya Gerek Yok"#

Matematiksel Tanım#

Veri:
{(u, i, j) : u, i'yi j'den 'daha çok beğendi'}
— pairwise preference data.
Hedef:
f(u, i) > f(u, j)
olacak şekilde skoring fonksiyonu öğren.
Loss (BPR — Bayesian Personalized Ranking):
L = -Σ log σ(f(u, i) - f(u, j))
Burada i kullanıcının etkileşim ettiği item, j etkileşim etmediği rastgele seçilen item (negative sample).

Üç Tür Learning-to-Rank#

TürYaklaşımÖrnek Algoritma
PointwiseHer item bağımsız skorlanırXGBoost regressor
Pairwiseİki item karşılaştırılırBPR, RankNet, LambdaRank
ListwiseTüm liste birlikte değerlendirilirLambdaMART, ListNet

Metrik: NDCG (Normalized Discounted Cumulative Gain)#

DCG@K = Σ (rel_i / log₂(i+1)) i=1..K IDCG@K = ideal sıralamadaki DCG NDCG@K = DCG@K / IDCG@K
NDCG, sırada doğru item'ı erken yerleştirmeyi ödüllendirir. İlk 1'de doğruysa NDCG@10 = 1.0; 10. sıradaysa ~0.36.

Nasıl Çözülür?#

  • BPR-MF (Rendle 2009) — pairwise loss + matrix factorization
  • LambdaMART (Burges 2010) — gradient boosting + listwise
  • DeepRank / DCN-v2 (Modül 14) — modern deep ranking

Bu Formülasyon Ne Zaman Kullanılır?#

Use case: Sıranın önemli olduğu her durum. Yani — neredeyse her recommender problemi.
  • Arama motoru sonuçları (Google, Amazon search)
  • E-ticaret arama (Trendyol "ekrana çıkan ürünler" sırası)
  • News feed ranking (Facebook, Twitter timeline)
  • Job recommendations (LinkedIn)

Önemli Detay: Negatif Örnekleme#

BPR'da
j
(negative) nasıl seçilir? Üç strateji:
  1. Uniform random — tüm item'lardan rastgele. Basit ama dengesiz (popüler item ile az popüler arasında).
  2. Popularity-based — daha popüler item'ları daha sık negatif seç. Popularity bias düzeltir.
  3. Hard negative mining — modelin yanlış skoladığı (yanlış yere yakın) negatifleri seç. Daha verimli ama dikkatli kullanılmazsa overfitting.
Modül 7'de bu üç stratejinin MovieLens-1M üstünde nasıl farklı sonuç verdiğini elinle göreceksin.

3) Top-N Retrieval — "En İyi 10'u Getir"#

Matematiksel Tanım#

Veri: Kullanıcı u'nun pozitif etkileşim seti
P_u ⊆ I
.
Hedef:
R_u = TopN(f(u, i) : i ∈ I)
— kullanıcıya gösterilmemiş item'lar arasından en iyi N tanesini seç.

Niçin "Retrieval" Diyoruz?#

Bu problem teknik olarak arama problemi. Milyonlarca item arasından az sayıda aday bulmak — bilgisayar bilimi terminolojisinde retrieval.
Production'da bu genelde iki aşama:
  1. Candidate generation — milyonlarca → bin (latency-optimize)
  2. Ranking — bin → on (kalite-optimize)

Metrikler#

MetrikFormülYorumu
HR@K (Hit Rate)(1/U
Recall@K(1/U
Precision@K(1/U
MAP@K (Mean Average Precision)Pozisyon-ağırlıklı precisionSıra hassas precision
MRR (Mean Reciprocal Rank)(1/U

Nasıl Çözülür?#

  • Naive: Tüm item için skor hesapla, sırala, top-K al. — N item için O(N log K). Milyon item'da 10M-100M op. Anında olmaz.
  • ANN (Approximate Nearest Neighbor): Embedding'lerle FAISS/ScaNN — milyon item'da p99 < 10ms. Modül 23'te.
  • Two-Tower: User embedding'i ile item embedding'leri arasında dot product → ANN — endüstri standardı (Modül 12).

Bu Formülasyon Ne Zaman Kullanılır?#

Use case: Aslında çok büyük çoğunluk modern recommender'ı.
  • Netflix anasayfası (her satır N item gösterir)
  • YouTube home feed (10-20 video)
  • Spotify Discover Weekly (30 şarkı)
  • Trendyol "Senin İçin" satırı (8-12 ürün)
  • TikTok For You (1 video — N=1 özel hali)

En Yaygın Modern Mimari#

Aşama 1: Two-tower retrieval (Modül 12) - User encoder: user feature → 64d embedding - Item encoder: item feature → 64d embedding - FAISS ANN ile dot-product top-1000 Aşama 2: Deep ranking (Modül 14) - 100+ feature ile DCN-v2 / DLRM - Top-1000 → top-10

4) Sequential Recommendation — "Sıradaki Ne?"#

Matematiksel Tanım#

Veri: Kullanıcı u'nun zaman sırasında etkileşim sekansı
S_u = [i₁, i₂, ..., i_t]
.
Hedef:
P(i_{t+1} | S_u)
— bir sonraki item'ın olasılık dağılımı.

Niçin Sıra Önemli?#

Kullanıcı A: [iPhone, AirPods, iPhone Kılıf, Kablo, Şarj Cihazı] Kullanıcı B: [iPhone Kılıf, Kablo, Şarj Cihazı, iPhone, AirPods]
Klasik CF için bu iki kullanıcı özdeş (aynı item seti). Sequential modelleme için çok farklı:
  • A: Apple ekosistemi tamamlama yolu — sıradaki büyük olasılıkla Apple Watch.
  • B: iPhone aksesuarı bulduktan sonra iPhone almış (belki hediye?) — sıradaki çoğu zaman tamamen farklı kategori.
Bu fark sequential modellemenin değeridir.

Metrikler#

Top-N retrieval ile aynı (HR@K, NDCG@K, MRR) — ama test seti hazırlama farklı:
  • Leave-one-out: Her kullanıcının son item'ı test, geri kalanı train.
  • Time-split: Belirli bir T zamanından önceki tüm interaction train, sonrası test.
  • Next-basket: Bir alışveriş sepetindeki tüm item'ları birlikte tahmin et.

Nasıl Çözülür?#

Tarihsel evrim:
  1. Markov Chain (eski) —
    P(i_{t+1} | i_t)
  2. RNN-based — GRU4Rec (Hidasi 2016)
  3. CNN-based — Caser, NextItNet
  4. Attention-based — SASRec (Kang 2018) — Modül 10'da detaylı
  5. BERT-style — BERT4Rec (Sun 2019) — Modül 10'da detaylı
  6. Generative retrieval — TIGER (Rajput 2023) — Modül 18'de

Bu Formülasyon Ne Zaman Kullanılır?#

Use case: Davranış sırasının anlam taşıdığı durumlar.
  • E-ticaret session (browsing → product → cart → checkout)
  • Müzik playlist (şarkıların sırası kullanıcı zevkini gösterir)
  • News reading (bir haberden diğerine geçiş pattern'ı)
  • Online video (bir video sonrası ne izlenir)

Sequential vs. Top-N — Karışıklık#

Bu iki paradigma birbirini rakip değil, tamamlayıcı:
  • Top-N retrieval: "Bu kullanıcı için genel olarak ne iyi?"
  • Sequential: "Bu kullanıcı için şu anda, şimdi ne iyi?"
Production'da ikisi birlikte kullanılır:
  • Top-N retrieval → user'ın genel ilgi alanı (offline)
  • Sequential → şu anki session'ın context'i (real-time)
  • Ranking → ikisinin sinyallerini birleştirir

Karar Ağacı: Hangi Formülasyonu Seçmeliyim?#

Yeni bir problem geldiğinde şu soruları sor:
SORU 1: Kullanıcı explicit rating veriyor mu (1-5 yıldız)? ├─ Evet, ve rating'in kendisini tahmin etmem gerekiyor (IMDb tarzı) │ → Rating Prediction (Modül 6) └─ Hayır veya gerek yok ↓ SORU 2: Sıra önemli mi? Davranışın zaman içindeki gelişimi? ├─ Evet, ve son aksiyondan ileriye gitmek istiyorum │ → Sequential (Modül 10) └─ Hayır, durum genel olarak ilgi ↓ SORU 3: Çıktı bir liste mi (top-N) yoksa skoring mi? ├─ Liste (top-N öneri) │ → Top-N Retrieval (Modül 5-12) └─ Skoring (her itemın AUC/CTR'sini bilmem gerek) → Learning-to-Rank (Modül 7, 14)
🚨 Sık yapılan hata
Bir startup'ta yeni öneri sistemi kurarken 'Funk SVD ile rating prediction yapacağız' dedikleri için 4 ay zaman kaybettiler. Çünkü kullanıcılar rating vermiyordu — sadece click data vardı. Doğru formülasyon implicit feedback için top-N retrieval veya sequential'di. Bu farkı görmek bir mühendisin değerinin yarısıdır.

Metrik Hızlı Bakış Kartı#

MetrikFormülasyonYüksek = İyi?Tipik Değer (iyi sistem)
RMSERating PredictionDüşük = iyi0.85-0.95 (MovieLens)
MAERating PredictionDüşük = iyi0.65-0.75
Precision@10Top-NYüksek = iyi0.05-0.15
Recall@20Top-NYüksek = iyi0.10-0.25
HR@10Top-N / SeqYüksek = iyi0.20-0.50
NDCG@10Ranking / Top-NYüksek = iyi0.10-0.30
MAP@10RankingYüksek = iyi0.08-0.20
MRRSequentialYüksek = iyi0.05-0.20
CTROnline (production)Yüksek = iyi0.5%-5%
(Modül 3'te bu metriklerin her birini kağıt-kalem matematikle, NumPy ile sıfırdan göreceğiz.)

Sıradaki Ders#

Bir sonraki derste (1.3) explicit (yıldız) vs implicit (click/play/skip) feedback farkını derinlemesine işliyoruz. Bu fark teknik olarak modelin loss fonksiyonunu, eğitim stratejisini, metriklerini ve bias risklerini değiştirir. 🎯

Sık Sorulan Sorular

Pratikte sequential — çünkü 'sıralama' bilgisi ile birlikte 'temporal dynamics' (zamanla değişen ilgi) ve 'session vs cross-session' karmaşıklığı eklenir. SASRec, BERT4Rec ve daha modern TiSASRec/CL4SRec'i tam anlamak Modül 10'un tüm bandwidth'ini ister.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

İlgili İçerikler