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

Tavsiye Sistemleri

Collaborative filtering ve matrix factorization

Önce bunlara göz at

🎯

30 saniyede özet · Ne öğreneceksin

  • İşbirlikçi filtreleme prensibini anlamak
  • Matrix factorization uygulamak
  • Cold start problemini çözmek
20 dk okuma·orta

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 kazanan…

İç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önüşt…

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 qui…

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