Explicit and Implicit Feedback: A Complete Guide from 1-5 Stars to Click-Skip Behavior
Two fundamental data types in recommender systems: explicit (intentionally given stars/likes) vs implicit (click, dwell time, completion, skip). Differences, loss function impact, bias sources, hybrid usage, real-world labeling strategies.
Şükrü Yusuf KAYA
22 min read
Intermediate📋 Bu dersin amacı
Recommender sistemde her şey veri etiketinden başlar. Yanlış etiketlerle çalışırsan, en iyi model dahi yanlış sonuç verir. Bu derste iki ana veri türünü — explicit ve implicit feedback — detaylıca, gerçek senaryolarla, etiketleme stratejileriyle ve bias riskleriyle inceleyeceğiz.
Tanımlar#
Explicit Feedback#
Kullanıcının bilerek, niyetli olarak verdiği veri.
- 1-5 yıldız puanlama
- Like / Dislike (binary)
- Thumbs up/down
- Yorumlar (yazılı içerik)
- Anketler ("Bu ürünü beğendiniz mi?")
Implicit Feedback#
Kullanıcının davranışından çıkarsanmış veri — kullanıcı niyetli vermez.
- Click (tıklama)
- View / Impression (görüntüleme)
- Dwell time (sayfada kalma süresi)
- Watch percentage (video tamamlama oranı)
- Add to cart (sepete ekleme)
- Purchase (satın alma)
- Skip (geçme)
- Share (paylaşma)
- Scroll depth (kaydırma derinliği)
Karşılaştırma: Explicit vs Implicit#
| Özellik | Explicit | Implicit |
|---|---|---|
| Sinyal kalitesi | Yüksek (kullanıcı niyetli) | Düşük (gürültülü) |
| Hacim | Düşük (kullanıcı az verir) | Yüksek (her aksiyon log) |
| Bias kaynakları | Self-selection (sadece kıymet verenler yıldız verir) | Position bias, popularity bias, exposure bias |
| Eksik veri yorumu | "Bilmiyoruz" (NA) | "Negatif" (görüldü, etkileşmedi) |
| Negative örnek | Açık (1 yıldız = negatif) | Belirsiz (görmeden mi geçti, ilgilenmediği için mi?) |
| Loss fonksiyonu | Regression (RMSE) | Classification veya ranking (BPR, logistic) |
| Modern endüstride payı | ~%10 | ~%90 |
🔄 2010'lardan beri kayma
2009 Netflix Prize'da herkesin geliştirdiği algoritmalar explicit feedback üzerineydi. Ama Netflix 2017'de 1-5 yıldızı kaldırdı, thumbs up/down'a geçti. Sebep: kullanıcılar yıldız vermiyor (low volume), verdiklerinde de kalıba uygun davranmıyor (5★'lar enflasyon yaşıyor). Modern recommender'lar implicit feedback dünyasına çoktan geçti.
Explicit Feedback Derinlemesine#
"1-5 Yıldız" Aldatmacası#
5'li puanlama görünür ölçekli ama aslında muazzam bias'lara sahip:
Bias 1: J-Curve Distribution
Çoğu rating dataset'te dağılım şöyledir:
- 5★: %50-60
- 4★: %20-25
- 3★: %5-10
- 2★: %3-5
- 1★: %5-10
Bu J şeklinde bir dağılım — orta yok, uçlar var. İnsanlar genelde ya çok severlerse ya da çok kızgınlarsa rating verir. Bu durumda 1-5 ölçeği aslında "0/1 + intensity" — sadece sayı gibi görünmüyor.
Bias 2: Self-Selection Bias
Bir item'a rating veren kullanıcılar, rastgele bir örneklem değildir — onlar zaten "rating vermek isteyen" özel bir grup. MovieLens üyeleri tipik internet kullanıcısından çok farklı bir profil sergiler.
Bias 3: Anchoring
Kullanıcı önceki rating'ini hatırlar — "geçen film 4★ verdim, bu daha kötüydü, 3★ vereyim" gibi. Rating'ler birbirinden bağımsız değil.
Explicit Feedback ile Çalışma Stratejisi#
Strateji 1: Bias Çıkarma
r̂_ui = μ + b_u + b_i + p_u · q_i
- μ: global mean
- b_u: kullanıcı bias (bazıları sürekli yüksek, bazıları düşük verir)
- b_i: item bias (bazı item'lar herkesçe sevilir)
- p_u · q_i: interaction term
Bu "BiasedMF" (Koren et al., 2008) — Netflix Prize'ın en güçlü modellerinden biriydi. Modül 6.3'te detaylı.
Strateji 2: Threshold ile Binary'e Çevirme
y_ui = 1 if r_ui ≥ 4 else 0
Bu yaklaşımla rating prediction'ı implicit feedback problemine dönüştürürsün. Daha az bilgi içerir ama daha robust.
Strateji 3: Ordinal Regression
Rating'i sayı yerine sıralı kategori olarak ele al. Cross-entropy + ordinal loss. Niş ama bazı durumlarda iyi çalışır.
Implicit Feedback Derinlemesine#
Implicit Feedback Niçin Modern Standart?#
- Hacim — Netflix Prize 100M rating'ti (yıllarca toplandı). Bir orta-ölçek e-ticaret sitesinin 1 günlük click log'u bundan büyük.
- Otomatik — kullanıcı niyetli yapmaz, log dosyasında zaten var.
- Davranışa dayalı — rating "bence güzeldi" demek; click "fiilen ilgilendim" demek. Davranış sözden daha güçlü sinyaldir.
Implicit Feedback'in Üç Sınıfı#
| Sınıf | Örnekler | Sinyal Gücü |
|---|---|---|
| Pasif gözlem | Impression (sayfada gördü, geçti) | Çok zayıf |
| Aktif ilgi | Click, view detail, hover | Orta |
| Niyet | Add to cart, save, share, watch >50% | Güçlü |
| Dönüşüm | Purchase, watch >90%, subscribe | Çok güçlü |
Implicit Feedback'in Büyük Problemi: Negative Belirsizliği#
Explicit'te negatif açıktır — 1★ negatif. Implicit'te:
Kullanıcı A item X'i tıklamadı. Çünkü: (a) X'i görmedi (impression bile değil) (b) X'i gördü, ilgilenmedi (negatif sinyal!) (c) X'i gördü, beğendi ama daha sonra geri dönecekti (gizli pozitif) (d) X'i gördü, beğendi ama başka şey için geldiği için tıklamadı
Bu belirsizlik, implicit feedback'i çalışmanın en büyük zorluğu.
Konfidans (Confidence) Yaklaşımı: Hu, Koren, Volinsky 2008#
Çığır açan paper. Önerileri:
- "Etkileşim var" = positif (rating 1 olarak işaretle)
- "Etkileşim yok" = negatif ama düşük confidence ile
- Loss fonksiyonu confidence-weighted:
L = Σ c_ui (r_ui - p_u · q_i)² c_ui = 1 + α · (interaction_count)
Bu mantık implicit ALS'ın temelidir. Modül 6'da kodla göreceğiz.
Negative Sampling Stratejileri#
Tüm "no-interaction" pairs'i negatif saymak çok pahalı (milyonlarca x milyonlarca). Bu yüzden örnekleme:
1. Uniform Random Sampling
Tüm item'lardan rastgele bir negative çek. Basit, hızlı, gürültülü.
2. Popularity-Based Sampling
Daha popüler item'ları daha sık negative olarak çek. Mantık: popüler item'lar eminiz kullanıcının gördüğü ve geçtiği item'lardır. Bu exposure proxy.
3. In-Batch Negative
Two-tower modellerinde: aynı mini-batch'teki diğer kullanıcıların pozitif item'larını mevcut kullanıcı için negative al. (Modül 12'de derinlemesine.)
4. Hard Negative Mining
Modelin yanlış skorladığı (negatife pozitif gibi puan veren) item'ları seç. En etkili ama dikkat ister.
Dwell Time ve Watch Percentage — Modern Implicit Sinyaller#
Modern recommender'lar "click" sinyalinin ötesine geçti. Çünkü:
Kullanıcı A: clickbait makaleyi tıkladı, 3 saniyede çıktı → değer kaybetti Kullanıcı B: makaleyi tıkladı, 8 dakika okudu → değer kazandı
Bu ikisi sinyal olarak aynı değildir. YouTube'un 2012-2013'te "watch-time" optimizasyonuna geçişi recommender literatürünün en önemli endüstri kararlarından biriydi.
Dwell Time Sinyalini Etiket Olarak Kullanma#
Yaklaşım 1: Binary threshold
y_ui = 1 if dwell_time > 30s else 0
Basit. Threshold ürün başına ayarlanmalı (haberde 30s, videoda 60s, e-ticaret ürün sayfasında 10s).
Yaklaşım 2: Continuous reward
y_ui = min(dwell_time / expected_dwell, 1.0)
0-1 arası sürekli değer. YouTube watch-time prediction bu mantığa benzer.
Yaklaşım 3: Multi-level label
0: hiç click yok 1: click, çok hızlı çıktı (skip) 2: click, orta dwell 3: click, completion 4: click + completion + ek aksiyon (like/share/follow)
Daha zengin ama ordinal regression veya multi-task loss gerektirir.
Hibrit: Explicit + Implicit Aynı Anda#
Modern endüstri sistemleri genelde ikisini birden kullanır:
Pozitif sinyaller (artan ağırlık sırasıyla): 1. Impression (zayıf — gördü) 2. Click (orta) 3. Dwell > 30s (güçlü) 4. Save/Bookmark (çok güçlü) 5. Add to cart (çok güçlü) 6. Purchase (en güçlü) 7. Repeat purchase (en güçlü+) 8. Explicit 5★ (çok güçlü) Negatif sinyaller: -1. Impressed but not clicked -2. Click, immediate skip (< 3s) -3. Explicit 1★ -4. Unsubscribe / unfollow
Bu sinyalleri multi-task ranking model (Modül 15) ile birlikte optimize ediyorsun. YouTube, TikTok, Trendyol — hepsi böyle çalışıyor.
Multi-Task Loss Örneği#
L_total = w_click · L_click + w_dwell · L_dwell + w_purchase · L_purchase
w_click=0.1, w_dwell=0.3, w_purchase=0.6 gibi.
Ağırlıkları tune etmek ayrı bir bilim. Pareto-optimal noktayı bulmak için Bayesian optimization ve multi-objective bandits kullanılır (Modül 15).
🎯 En önemli takeaway
Modern recommender mühendisi olarak işin %30'u model, %70'i veri etiketlemedir. Doğru sinyal hiyerarşisi (impression < click < dwell < add-to-cart < purchase) sana en iyi modelden daha çok kazanım verir. Bir model değişikliği NDCG +%2 verir, doğru etiket revizyonu +%10 verebilir.
Pratik Örnek: E-ticaret İçin Etiket Tasarımı#
Bir e-ticaret platformu için typical sinyal şeması:
# Sinyal ağırlıkları (örnek) SIGNAL_WEIGHTS = { "impression": 0.0, # nötr, sadece exposure bilgisi "click": 1.0, # zayıf pozitif "dwell_30s": 2.0, # ilgi gösterdi "image_zoom": 1.5, # ek mikro-aksiyon "add_to_wishlist": 3.0, # niyet "add_to_cart": 5.0, # güçlü niyet "purchase": 10.0, # konversiyon "repeat_purchase_7d": 15.0, # sadakat sinyali "return_within_30d": -5.0, # negatif (geri iade) "review_5star": 8.0, # explicit pozitif "review_1star": -10.0, # explicit negatif } # Tek bir interaction için toplam sinyal def interaction_score(events): return sum(SIGNAL_WEIGHTS[e] for e in events)
Bu Ağırlıkları Nasıl Belirlersin?#
- Domain expertise — sektör bilgisiyle başlangıç.
- Correlation analysis — hangi sinyal long-term LTV ile en çok korele?
- A/B testing — production'da farklı ağırlık konfigürasyonlarını test et.
- Counterfactual learning — IPS düzeltmeli offline evaluation (Modül 19).
Bu ağırlık seti statik değildir. 6 ayda bir gözden geçirmek standart pratiktir.
Sıradakİ Ders#
Bir sonraki derste (1.4 — Modül 1'in sonuncusu) cold-start probleminin üç yüzünü inceleyeceğiz: yeni user, yeni item, yeni system. Her birinin neden zor olduğunu, hangi tekniklerle çözüldüğünü ve kursun ilerleyen modüllerinde nereye karşı geleceğini göreceksin. 🧊
Frequently Asked Questions
Hiç sorun değil — modern recommender'ların %90'ı sadece implicit ile çalışıyor. Modül 6 (Implicit ALS), Modül 7 (BPR), Modül 8-12 (deep models) hepsi implicit feedback için tasarlandı. Explicit feedback eklemek bir 'bonus' — yokluğu engel değil.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
Module 0: Course Framework & Workshop Setup
Why Do Recommender Systems Matter? Birth, Present, and Future of a Discipline
Start LearningModule 0: Course Framework & Workshop Setup
Who Is a Recommender Engineer? Skill Atlas and Junior → Staff Career Map
Start LearningModule 0: Course Framework & Workshop Setup