Content-Based Filtering Felsefesi: 'Ne İzledi' Yerine 'Neye Benziyor'
Collaborative filtering 'benzer kullanıcılar' arar, content-based 'benzer item'lar' arar. Bu felsefi fark teknik kararları belirler — cold-start avantajı, filter bubble dezavantajı, hybrid stratejileri. Konsept + matematik + endüstri pozisyonlama.
Şükrü Yusuf KAYA
22 dakikalık okuma
Orta🎯 Bu dersin amacı
Algoritma yazmadan önce algoritmanın felsefesini anlamak zorundayız. Content-based filtering basit görünür (cosine similarity, TF-IDF) ama doğru kullanıldığında modern sistemlerin kemik dokusunu oluşturur. Bu derste: collaborative filtering ile farkı, hangi senaryolarda content-based daha güçlü, hangilerinde zayıf, ve hybrid recommender'ın neden son 10 yılın en başarılı paradigması olduğu.
İki Felsefe — İki Soru#
Recommender systems iki büyük felsefi okuldan beslenir:
Felsefe 1: Collaborative Filtering (CF)#
"Sen kimsin, bana söyle, sana ne önereceğimi söyleyeyim."
CF kullanıcının diğer kullanıcılara benzerliğine bakar. Item'ın içeriği önemli değil — sadece etkileşim pattern'ı.
Sen → izlediğin filmler → senin gibi kullanıcılar → onların izlediği başka filmler
Felsefe 2: Content-Based Filtering (CB)#
"Neyi izledin, bana söyle, ona benzer ne önereceğimi söyleyeyim."
CB item'ların kendi içeriğine bakar. Diğer kullanıcılar önemli değil — item'ın özellikleri matter.
Sen → izlediğin filmler → o filmlerin özellikleri → benzer özellikteki başka filmler
İki Felsefenin Test Senaryosu#
Bir kullanıcı Inception (Christopher Nolan, sci-fi, mind-bending) izledi. İki sistem ne önerir?
CF cevabı: "Inception'ı izleyen diğer kullanıcılar The Matrix, Interstellar, Pulp Fiction izledi → öneri."
CB cevabı: "Inception → Nolan, sci-fi, mind-bending → Memento (Nolan), The Prestige (Nolan), Tenet (Nolan, sci-fi)."
İkisi farklı sonuçlar verir. Hangisi doğru? İkisi de. Sadece farklı amaca hizmet ederler.
Detaylı Karşılaştırma — Hangisi Hangi Durumda Daha İyi?#
| Kriter | Collaborative Filtering | Content-Based Filtering |
|---|---|---|
| Cold-Start (User) | ❌ Yapamaz (geçmiş yok) | ⚠️ Az ile yapabilir (1-2 click) |
| Cold-Start (Item) | ❌ Yapamaz (etkileşim yok) | ✅ Anında yapar (sadece içerik gerek) |
| Serendipity (Şaşırtma) | ✅ Yüksek (beklenmedik bağlantılar) | ❌ Düşük (her zaman benzer item) |
| Filter Bubble | Orta | ❌ Yüksek (echo chamber) |
| Veri Gereksinimi | Çok kullanıcı + interaction | Az kullanıcı, zengin metadata |
| Domain Expertise | Az gerek | Çok gerek (feature engineering) |
| Açıklanabilirlik | Zor ("Bu öneri çünkü...") | Kolay ("Çünkü 'sci-fi' kategorisinde") |
| Computational Cost | Yüksek (NxN similarity) | Orta (item embeddings cacheable) |
| Bias | Popularity bias | Content bias (yetersiz feature) |
| Niş İlgi Alanları | ❌ Zayıf (azlık) | ✅ Güçlü (özellikten öğrenir) |
| Genre Crossing | ✅ Çok iyi | ❌ Tek genre takılır |
Bir Cümlede Özet#
CF: "Topluluğun bilgeliği." Çok güçlü ama yeni başlayanlar ve yeni item'lar için işsiz. CB: "Her item kendini anlatır." Cold-start'ta güçlü ama tekrara düşer.
Content-Based Filtering Hangi Domainlerde Açık Kazanır?#
1. Haber Recommender (News)#
Haberler hızla eskir — bir haber 6 saat sonra alakasız. CF için her haber soğuk — kimsenin görmediği yeni içerik. CB için zenginleştirilmiş feature (başlık, body, kategori, lokasyon, entity'ler) anında öneri yapabilir.
Örnek: Google News'in 2007-2010 mimarisi tamamen CB ağırlıklı. Sonra LMNN, GBM gibi gradient boosted CB modelleri.
2. İş İlanı Eşleşmesi (LinkedIn, kariyer.net)#
Bir iş ilanı 2-4 hafta açık. CF için 'çok az interaction' problemi. CB ise: ilan başlığı + açıklama + required skills → kullanıcının CV'siyle eşleşme.
LinkedIn'in 2-tower retrieval'ında "skills tower" hala büyük ölçüde content-based.
3. Bilimsel Makale Önerisi#
ArXiv, Semantic Scholar, ResearchGate. Yeni paper çıkar — CF için sıfır citation. CB için abstract embedding + author + venue → ilgili paper öneri.
Modern yaklaşım: Specter (AllenAI 2020) — BERT tabanlı bilimsel doküman embedding'i.
4. Niş Kategoride E-Ticaret#
Antika, vintage, rare hobiler, koleksiyon item'ları. Az kullanıcı, az interaction. CF zayıf. CB güçlü.
5. B2B / Kurumsal Yazılım Önerisi#
Salesforce AppExchange tarzı: az alıcı, çok feature. Content-based + manual curation hybrid.
Content-Based Filtering Nerede Kaybeder?#
1. Genre/Kategori Crossing#
Sevdiğin dramik filmler arasından belki ben aksiyon da seveceğim çıkarımı. CB tek kategoriye saplanır. CF "drama izleyenler bazen aksiyon da seviyor" bağlantısını yakalar.
2. Yeni Trend Yakalama#
Bir trend (örn. K-pop, dystopian young adult) viral olur. CB için trend bir feature değildir (henüz). CF "şu anda popüler olan" sinyalini doğal yakalar.
3. Çeşitlilik#
Aynı sanatçının 10 albümü, aynı yazarın 5 kitabı — CB hep aynı şeyleri önerir. CF varyasyon getirir.
4. Karmaşık Multi-Domain İlgi Alanı#
"Bu kullanıcı işte machine learning kitabı, akşamları roman, hafta sonu çocuk kitabı arıyor." CB her domain için ayrı profil kursa çözer, ama default tek profil → karışıklık. CF "context-aware" multi-domain profili daha iyi yakalar.
Hybrid — Kral Çözüm#
Tek başına ne CF ne CB yeter. Hybrid recommender son 10 yılın en başarılı endüstri pattern'i:
Hybrid Tipoloji (Burke 2002 sınıflandırması)#
| Tip | Açıklama | Örnek |
|---|---|---|
| Weighted | İki skorun ağırlıklı toplamı | score = 0.6·CF + 0.4·CB |
| Switching | Bağlama göre birini seç | Cold-start CB, warm CF |
| Cascade | CB filter, CF rank | CB top-1000 candidate, CF rank |
| Mixed | İki listeyi karıştır | Yarısı CF, yarısı CB |
| Feature Combination | İki yöntemin feature'ları ortak model | LightFM, Wide&Deep |
| Meta-Level | CB output → CF input | CB embedding → CF model'in feature'ı |
Pratik Endüstri Tercihleri#
Netflix: Hybrid Weighted + Cascade
- Retrieval: CF (two-tower) ile candidate generation
- Re-ranking: CB feature (genre overlap, tagged keywords) ile diversification
Spotify: Cascade + Feature Combination
- Audio CNN (CB) embedding + CF embedding → ortak ranking model
Amazon: Switching + Cascade
- Yeni ürün: CB (frequently bought together)
- Olgun ürün: CF (item-item collaborative)
CB Matematiği — Önizleme#
Bir sonraki derste detaya iniyoruz ama burada ana adımları görelim:
Adım 1: Item Profilleme#
Her item için özellik vektörü kur:
Item i = [feature_1, feature_2, ..., feature_d]
Feature kaynakları:
- Metin: TF-IDF, BM25 (Modül 4.2)
- Kategori: One-hot, target encoding
- Etiket: Multi-hot
- Numerik: Normalize edilmiş
Adım 2: User Profile#
Kullanıcının pozitif etkileşim ettiği item'ların ağırlıklı ortalaması:
user_u = (1/|H_u|) Σ_{i ∈ H_u} item_i
Veya rating-weighted:
user_u = Σ r_ui · item_i / Σ r_ui
Adım 3: Scoring#
Cosine similarity ile her aday item:
Yüksek cosine = user profile ile item profile aynı yönde → öneri.
Adım 4: Top-N#
Tüm aday item'ları skorla, en yüksek N tanesini al.
Bu basit formül doğru feature engineering ile çok güçlü. Tehlike sadelikte değil, feature kalitesinde.
Bu Modülün Geri Kalanı#
- Ders 4.2: Item profilleme — TF-IDF matematik + sklearn vs sıfırdan NumPy.
- Ders 4.3: Sıfırdan NumPy ile content-based recommender (MovieLens-100K, ~150 satır).
- Ders 4.4: Production gotcha'lar — feature drift, multi-modal, Türkçe NLP zorlukları.
Hadi başlayalım. ☕
Sık Sorulan Sorular
Pure CB nadiren — niş use case'ler (haber recommendation'da Google News'in eski versiyonu, çok küçük katalog). Endüstri standardı hybrid. AMA — CB componentleri her hybrid'in içinde — feature engineering ve cold-start handling'i CB ilkelerinden çıkar.
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