Skip to content

Three Faces of the Cold-Start Problem: User, Item, System — and Practical Solutions

The most annoying problem in recommenders: how do you recommend for a user/item you have no data on? Strategy map for user cold-start, item cold-start, and system cold-start — from Netflix's 5-film screen to TikTok's viral loop.

Şükrü Yusuf KAYA
20 min read
Intermediate
Cold-Start Probleminin Üç Yüzü: User, Item, System — ve Pratik Çözümler
🧊 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ü#

TipTanımÖrnek
User Cold-StartYeni veya az aktif kullanıcıYeni Netflix abonesi, ilk Spotify günü
Item Cold-StartYeni veya az gösterilmiş itemBugün eklenmiş yeni film, dün uploaded YouTube video
System Cold-StartTüm sistem yeni — ne user ne item geçmişiBir 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:
  1. 0-5 interaction: Cohort-based (demografik segmentin popüleri) + onboarding seçimi.
  2. 5-50 interaction: Content-based + light CF + bandit exploration.
  3. 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.
User, item ve system cold-start için pratik çözüm haritası.
Üç tip cold-start ve her birinin tipik çözüm stratejileri özet haritası.

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ülHangi 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. 💪

Frequently Asked Questions

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...

Related Content