React Flow mini map
🌍 Gerçek Dünyaorta20 dk

Tavsiye Sistemleri

Collaborative filtering ve matrix factorization

Her gün Netflix'in "Beğenebilirsiniz" önerileri, Spotify'ın Discover Weekly playlistleri ve Amazon'un "Bunu alanlar şunu da aldı" kutuları ile karşılaşıyoruz. Bu sihir değil — milyarlarca kullanıcı etkileşiminden örüntüler çıkaran ve zevklerimizi tahmin eden akıllı sistemler. Tavsiye sistemleri, modern internetin sessiz kahramanlarıdır.

"Bu filme benzer filmler" mantığı. Her öğenin özellik vektörü çıkarılır: tür, yönetmen, oy…

🎭Kitapçı Metaforu

İçerik tabanlı sistem, kitapçıdaki görevli gibidir: "Polisiye seviyorsunuz, işte diğer polisiyeler." İşbirlikçi sistem ise "Sizin gibi zevklere sahip müşteriler şunu da aldı" diyen akıllı kasa sistemine benzer.

"Senin gibi kullanıcılar şunu beğendi" prensibi. Kullanıcı-öğe etkileşim matrisi oluşturul…

R ≈ U · Vᵀ (m×n ≈ m×k · k×n)

Matrix Factorization: Seyrek R matrisi (kullanıcı × öğe), düşük boyutlu U (kullanıcı embeddings) ve V (öğe embeddings) matrislerine ayrıştırılır. k tipik olarak 50-200 boyutlu gizli faktörler (latent factors) temsil eder.

**SVD** (Singular Value Decomposition): Klasik lineer cebir yöntemi — Netflix Prize'ın kaz…

İçerik Tabanlı

  • ·Öğe özelliklerine dayalı
  • ·Yeni öğeler için çalışır
  • ·Filtre balonu riski
  • ·Domain bilgisi gerektirir

İşbirlikçi Filtreleme

  • ·Kullanıcı davranışına dayalı
  • ·Sürpriz keşifler sunabilir
  • ·Soğuk başlangıç problemi
  • ·Ölçeklenebilirlik zorluğu

Modern sistemler **embedding katmanları** ile kullanıcı ve öğeleri öğrenilen vektörlere dö…

Surprise kütüphanesi ile SVD tabanlı collaborative filtering

Python
1from surprise import SVD, Dataset, accuracy
2from surprise.model_selection import train_test_split
3
4# Dahili MovieLens 100k veri seti
5data = Dataset.load_builtin('ml-100k')
6trainset, testset = train_test_split(data, test_size=0.2)
7
8# SVD modeli eğitimi
9model = SVD(n_factors=50, n_epochs=20, lr_all=0.005)
10model.fit(trainset)
11
12# Tahmin ve RMSE hesaplama
13predictions = model.test(testset)
14rmse = accuracy.rmse(predictions)
15print(f"Test RMSE: {rmse:.3f}")
16
17# Belirli kullanıcı için tahmin
18pred = model.predict(uid='196', iid='302')
19print(f"Tahmini puan: {pred.est:.2f}")

**Yeni kullanıcı**: Henüz etkileşim yok — demografik bilgi, popüler öğeler veya onboarding…

💡Pratikte hibrit sistemler en iyi sonucu verir: İşbirlikçi filtreleme + içerik özellikleri + contextual bilgi (saat, cihaz, konum). Netflix'in sistemi 100'den fazla algoritmanın ensemble'ıdır.

⚠️Implicit feedback (tıklama, izleme süresi) explicit feedback'ten (yıldız puanı) çok daha bol ama daha gürültülü. Bir filmi yarıda bırakmak beğenmemek mi, kesintiye uğramak mı?

✦ Quiz

Amazon'un "Bunu alanlar şunu da aldı" özelliği hangi yaklaşıma dayanır?

✦ Quiz

Matrix Factorization'da 'latent factors' neyi temsil eder?

ℹ️Graf Sinir Ağları (GNN) tavsiye sistemlerinde yükseliyor: Kullanıcı-öğe etkileşimleri doğal bir graf oluşturur. Pinterest'in PinSage modeli milyarlarca pin için GNN tabanlı öneriler üretir.

Bağlantılı Konular