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ı
İşbirlikçi Filtreleme
Modern sistemler **embedding katmanları** ile kullanıcı ve öğeleri öğrenilen vektörlere dö…
Surprise kütüphanesi ile SVD tabanlı collaborative filtering
| 1 | from surprise import SVD, Dataset, accuracy |
| 2 | from surprise.model_selection import train_test_split |
| 3 | |
| 4 | # Dahili MovieLens 100k veri seti |
| 5 | data = Dataset.load_builtin('ml-100k') |
| 6 | trainset, testset = train_test_split(data, test_size=0.2) |
| 7 | |
| 8 | # SVD modeli eğitimi |
| 9 | model = SVD(n_factors=50, n_epochs=20, lr_all=0.005) |
| 10 | model.fit(trainset) |
| 11 | |
| 12 | # Tahmin ve RMSE hesaplama |
| 13 | predictions = model.test(testset) |
| 14 | rmse = accuracy.rmse(predictions) |
| 15 | print(f"Test RMSE: {rmse:.3f}") |
| 16 | |
| 17 | # Belirli kullanıcı için tahmin |
| 18 | pred = model.predict(uid='196', iid='302') |
| 19 | print(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