Cold-Start Probleminin Üç Yüzü: User, Item, System — ve Pratik Çözümler
Recommender sistemlerin en sinir bozucu problemi: hakkında veri olmayan kullanıcı/item'a nasıl öneri yaparsın? User cold-start, item cold-start ve system cold-start için pratik strateji haritası — Netflix'in 5-film ekranından TikTok'un viral-loop'una.
Şükrü Yusuf KAYA
20 dakikalık okuma
Orta🧊 Bu dersin amacı
Cold-start, recommender sistemlerin en bilinen ve en şikayet edilen problemidir. Bu kursun farklı modüllerinde farklı tekniklerle defalarca cold-start'a geri döneceğiz. Bu derste — gelecek modüllerin temelini atıyoruz: probleminin üç yüzünü ayıracağız, her birinin pratik çözüm haritasını göreceksin.
Cold-Start'ın Üç Yüzü#
| Tip | Tanım | Örnek |
|---|---|---|
| User Cold-Start | Yeni veya az aktif kullanıcı | Yeni Netflix abonesi, ilk Spotify günü |
| Item Cold-Start | Yeni veya az gösterilmiş item | Bugün eklenmiş yeni film, dün uploaded YouTube video |
| System Cold-Start | Tüm sistem yeni — ne user ne item geçmişi | Bir startup'ın launch'ı, yeni bir vertical eklenmesi |
Üç sorun da "geçmiş veri yok → CF çalışmaz" probleminden doğar — ama çözümleri farklıdır. Her birini ayrı ayrı işleyelim.
1) User Cold-Start#
Problem Tanımı#
Yeni bir kullanıcı sisteme girdiğinde — hakkında 0 click, 0 like, 0 satın alma verisi var. CF (collaborative filtering) bu kullanıcı için hiçbir benzer kullanıcı bulamaz, dolayısıyla öneri yapamaz.
Severity Spektrumu#
User cold-start tam ya da çift kutuplu değildir — bir spektrum:
Day 0: Yeni kayıt → tam soğuk (0 interaction) Day 0 + 5 dakika → semi-cold (browse var, click yok) Day 0 + 1 saat → light-cold (5-10 click) Day 0 + 1 hafta → warm (CF artık çalışır) Day 0 + 1 ay → tam ısınmış
Bu spektrum boyunca farklı stratejiler işe yarar.
Çözüm Stratejileri#
1. Demografik / Sign-Up Bilgisi Kullanma
Yeni kullanıcı kayıtta bilgi verir:
- Yaş, cinsiyet (opsiyonel, regülasyona dikkat)
- Lokasyon (IP-based bile)
- Cihaz (mobile vs desktop)
- Trafik kaynağı (Google search, Instagram ad, vs.)
- Browser language
Bu sinyallerin her biri zayıf — ama birlikte regional + cohort-based öneri yapmaya yeter:
# Pseudokod cohort_segments = { ("TR", "iOS", "18-25"): top_items_for_segment, ("TR", "Android", "25-35"): top_items_for_segment, ... }
Bu yaklaşım "average-user model" olarak da bilinir. Yeni kullanıcılar için fallback.
2. Onboarding ile Explicit Preference Toplama
En meşhur örnek: Netflix'in 5-film seçim ekranı. Yeni üye 5 film seçer, sistem onları seed olarak kullanır.
Bu semi-cold start'a hızlı geçişin yoludur:
- Spotify: ilk girişte 5 favori sanatçı + 5 favori tür seçtirir.
- TikTok: ilk videolar gösterilirken kategori seçtirir.
- Tinder: ilk swipe'lardan profilini öğrenir.
3. Content-Based Fallback
Hatta hiçbir kullanıcı bilgisi olmasa bile, kullanıcı bir item'a tıkladığı an content-based recommender devreye girer:
Yeni kullanıcı → "Inception" tıkladı. Sistem → Content-based ile benzer filmler: Memento, Interstellar, Tenet.
İlk 5-10 click sonrası bu sinyaller mini-CF için yeterli olur. Modül 4'te (Content-based) detaylı.
4. Meta-Learning (MAML, Reptile, vs.)
Modern yaklaşım: bir model "hızlı uyum sağlamayı" öğrenir. Birkaç click sonrası birkaç gradient step'le kişiselleşmiş bir kullanıcı temsili çıkarır.
Pratik örnekler:
- MeLU (Lee et al., KDD 2019)
- MAMO (Dong et al., 2020)
- TransRec (Liu et al., 2022)
Bunlar niş ama hızla artan literatür.
5. Exploration / Bandit Stratejisi
İlk önerileri rastgele veya çeşitlilik için optimize ederek hızla bilgi topla. Sonra topladığın bilgiyle uyum sağla.
- ε-greedy: %90 popüler, %10 keşif.
- Thompson Sampling: olasılıkçı keşif.
- LinUCB: contextual bandit.
Modül 20'de detaylı işliyoruz.
Tipik Strateji Kombinasyonu#
Production'da genelde 3 katman:
- 0-5 interaction: Cohort-based (demografik segmentin popüleri) + onboarding seçimi.
- 5-50 interaction: Content-based + light CF + bandit exploration.
- 50+ interaction: Tam personalized CF.
2) Item Cold-Start#
Problem Tanımı#
Bugün eklenmiş bir item için 0 click, 0 rating, 0 satın alma. CF bu item için hiçbir kullanıcı verisi göremez — yeni filmi/ürünü kimseye öneremez.
Niçin Kritik?#
- E-ticaret: Yeni ürün stoklarsanız, hiç gösterilmezse stok zararı.
- İçerik platformları: YouTuber'lar yeni video yükler, viral olmazsa platform kaybeder.
- Müzik: Yeni şarkı çıkar, hiç çalmazsa sanatçı küser.
- Haber: Yeni haber dakikalarca güncel — geç verilirse haber değer kaybeder.
TikTok'un, YouTube'un, Spotify'ın item cold-start çözümleri tüm yarışmacı avantajı.
Çözüm Stratejileri#
1. Content/Side Information ile Embedding Üretme
Yeni item'ın kendi içeriğinden (metadata, text, image, audio) embedding üret. Sonra bu embedding'i mevcut item embedding uzayında "yakın" item'larla eşleştir.
Örnekler:
- Text: Ürün başlığı + açıklama → BERT/sentence-transformer → embedding.
- Image: Ürün fotoğrafı → CLIP/ResNet → embedding.
- Audio: Şarkı dosyası → Audio CNN (Spotify yaklaşımı) → embedding.
- Multimodal: Yukarıdakilerin kombinasyonu → joint embedding.
Modül 9 (Embedding Engineering) ve Modül 19 (Multimodal)'de derin işliyoruz.
2. Two-Tower Mimarisi ile Doğal Çözüm
Two-tower modelinde item tower sadece item feature'larından embedding üretir — interaction history'sine bağlı değildir. Bu sayede:
Yeni item geldi ↓ Item feature'ları (text, image, category, brand, price) → item tower → embedding ↓ Existing user embedding'leriyle dot product → ranking ↓ Hızlıca uygun kullanıcılara servis
Bu mimari doğal olarak cold-start friendly'dir. Modül 12'de.
3. Hybrid: CF + Content
LightFM (Kula 2015) — CF'in ilk başarılı içerik-eklenmiş versiyonu. Pure CF item embedding'i yerine:
item_emb = Σ feature_weights[f] × feature_emb[f]
Mevcut item'lar için "öğrenilmiş" feature weights, yeni item için aynı weights ile kolayca embedding üretir.
4. Exploration Boost — "İlk Gösterim Garantisi"
TikTok'un en zekice mühendislikçe seçimlerinden: yeni yüklenen her video 0-1000 kullanıcıya garantili gösterim alır. Bu sayede:
- 1000 kullanıcının tepkisi → ilk sinyal.
- İyi tepki → daha geniş yayılım.
- Kötü tepki → silinen sinyal.
Buna "viral loop" veya "exploration boost" denir. Mantığı bandit (exploration).
5. Drop-In Architecture: DropoutNet, MTPR
Modern yaklaşım: eğitim sırasında rastgele item'ların CF embedding'lerini drop ederek "yokmuş gibi" yap. Model bu durumlar için content-only fallback öğrenir.
- DropoutNet (Volkovs et al., NeurIPS 2017)
- MTPR (Wang et al., 2019)
Modül 9'da bu teknikleri kodla göreceğiz.
3) System Cold-Start#
Problem Tanımı#
Hiçbir kullanıcı yok. Hiçbir item etkileşimi yok. Sistem yeni doğdu. Bu durum:
- Startup'ın launch günü
- Bir e-ticaret sitesinin yeni bir kategori (örn. ev tekstili) eklemesi
- Yeni bir geographic market'e açılma (Türkiye'ye giren yabancı bir platform)
Çözüm Stratejileri#
1. Açılışta Maximum Domain Expertise
İlk öneriler mühendislikten değil iş bilgisinden gelir:
- E-ticaret kategori uzmanları manuel kuratör.
- Editorial team (gazetelerde editorial olduğu gibi).
- Influencer/expert curation.
2. "Borrow from Adjacent Domain"
Eğer şirket başka bir vertical'da öneri sistemi varsa, transfer yap:
- Audio platformun yeni video bölümü → audio listening pattern'ından video taste tahmin.
- Yetişkin platformun yeni çocuk bölümü → ebeveyn segmentinden çocuk öneri.
Bu transfer learning ve domain adaptation problemidir.
3. Synthetic / Bootstrap Data
İlk birkaç bin kullanıcıdan agresif explicit feedback topla:
- Hediye/indirim karşılığı anket.
- A/B test ile farklı varsayılan sıralamaları dene.
- Beta closed launch — küçük grupta hızla data topla.
4. Pure Popularity → Exploration → Personalization
Tipik launch trajectory:
- Hafta 1-2: pure popularity (en çok satılan/izlenen)
- Hafta 3-4: kategori-bazlı popularity (kullanıcının ilk seçtiği kategoride)
- Ay 2-3: exploration (bandit ile genişletme)
- Ay 4+: tam personalization (CF güvenle çalışır)
Türkiye Pratik Örneği: Getir'in Launch'u#
Getir 2015-2017'de açıldığında "10 dakikada market" konsepti yeniydi. İlk 6 ay:
- Recommender yoktu — sadece popularity + bayilik bazlı sıralama.
- 2018-2019: ilk personalization (basic CF).
- 2020+: deep personalization (now-standard mimari).
Bu kademe her startup için tipiktir.
Bu Kursta Cold-Start'a Tekrar Geri Döneceğimiz Modüller#
Cold-start tek bir modülde "çözülen" bir konu değil — tüm kurs boyunca farklı tekniklerle tekrar tekrar karşına çıkacak:
| Modül | Hangi Cold-Start Çözümü? |
|---|---|
| Modül 4 (Content-Based) | User cold + item cold için content-based fallback |
| Modül 9 (Embedding Engineering) | DropoutNet, side-information ile embedding |
| Modül 12 (Two-Tower) | Doğal item cold-start friendly mimari |
| Modül 17 (LLM-Rec) | LLM ile zero-shot item description'dan öneri |
| Modül 18 (Generative Retrieval) | TIGER ile semantic ID — cold-start için güçlü |
| Modül 20 (RL & Bandit) | Exploration ile cold-start data toplama |
Yani: bu derste "ana harita"yı görüyoruz, sonra her modülde detaylara iniyoruz.
🎉 Modül 1 tamamlandı!
4 ders bitti: (1) Endüstri mimarileri, (2) Problem tipolojisi, (3) Explicit vs Implicit feedback, (4) Cold-start üç yüzü. Artık 'recommender' kelimesini duyduğunda kafanda net bir harita var. Bir sonraki modülde veriye iniyoruz — Modül 2: Veri, Etiket ve Etik. Türkiye'nin en kapsamlı recommender systems kursunun ilk somut tepe noktasına gelmek üzeresin. 💪
Sık Sorulan Sorular
Doğru endişe. A/B test sonuçları: kısa onboarding (3-5 seçim, <30 sn) → conversion artıyor. Uzun onboarding (10+ seçim, >2 dk) → drop-off artıyor. Optimal: 3-5 seçim, atlanabilir, ödülle (örn. 'kişiselleştirmek için bunlar bize yardım eder' mesajıyla).
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
İlgili İçerikler
Modül 0: Kurs Çerçevesi ve Atölye Kurulumu
Öneri Sistemleri Neden Bu Kadar Önemli? Bir Disiplinin Doğuşu, Bugünü ve Yarını
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu
Recommender Engineer Kimdir? Yetkinlik Atlası ve Junior → Staff Kariyer Haritası
Öğrenmeye BaşlaModül 0: Kurs Çerçevesi ve Atölye Kurulumu