Downloads · 30 days
0
ba2hann/pixel-cinema-svd-movielens32m
pixel-cinema-svd-movielens32m is a other model from ba2hann. Use it for the other task on the model card, and read the license before you ship it in a product. It is set up for sklearn. The card lists the license as mit.
30,7 milyon değerlendirme, 200 bin kullanıcı ve 9.278 film üzerinde, Truncated SVD (Matrix Factorization) ile eğitilmiş gerçek-zamanlı film öneri motoru. Filmler 50 boyutlu gizli (latent) vektörlere sıkıştırılır; öner…
Downloads · 30 days
0
Access
Public
Updated Jun 19, 2026
Repo size
4.1 MB
Likes
0
Public
Click a slice to open those files.
.npy3.7 MB · 89%
From the Hugging Face model README
30,7 milyon değerlendirme, 200 bin kullanıcı ve 9.278 film üzerinde, Truncated SVD (Matrix Factorization) ile eğitilmiş gerçek-zamanlı film öneri motoru. Filmler 50 boyutlu gizli (latent) vektörlere sıkıştırılır; öneriler kosinüs benzerliği ile milisaniyeler içinde üretilir.
Bu depo model ağırlıklarını, eğitim/değerlendirme kodunu ve başarım metriklerini içerir. Tam proje (React arayüzü, FastAPI backend, PostgreSQL, Tinder tarzı keşif sayfası, film oynatıcı) ayrıdır:
👉 github.com/ba2hannn/pixel-cinema
Aşağıdaki metrikler evaluation/metrics.md dosyasında detaylandırılmıştır.
Değerlendirme, held-out %90/%10 split (test verisi modele gösterilmez) ve
10.000 rastgele kullanıcı örnekleme üstüne yapılmıştır.
| Metrik | Değer | Yorum |
|---|---|---|
| Açıklanan Varyans (kümülatif, 50 boyut) | %36,55 | 50 boyut, 9.278×200.947'lik seyrek matrisin varyansının 1/3'ünden fazlasını özetler. Ana başarı göstergesi. |
| Yeniden üretilebilirlik | %100 (göreceli hata 5e-14) | Model, kaydedilen ağırlıklarla birebir aynı şekilde yeniden üretilebilir (float64 hassasiyetinde). |
| Precision@10 | 0,1679 | Her 10 önerinin ≈1,7'i kullanıcının beğendiği türden. |
| Recall@10 | 0,2639 | Test kümesindeki beğenilen filmlerin ≈%26'sı yakalanıyor. |
| NDCG@10 | 0,2843 | Sıralama kalitesi (endüstri standardı metriği). |
| Catalog Coverage | %10,76 | 10K kullanıcının öneri havuzunda temsil edilen film oranı. |
| RMSE (held-out) | 2,678 | Rating tahpin hatası (bkz. Limitasyonlar). |
| MAE | 2,399 | Ortalama mutlak hata. |
| Inference (tek öneri) | 3,88 ms ort. / 6,30 ms max | "Sub-3-second" iddiasının doğrudan kanıtı (DB roundtrip hariç). |
Not — RMSE neden yüksek? Bu model orijinal rating matrisini merkezlemeden (mean-subtraction) doğrudan SVD'ye verir. Bu nedenle mutlak rating tahmini güçlü değildir; model top-N öneri (sıralama) için tasarlanmıştır. Precision/ Recall/NDCG metrikleri asıl hedefe yöneliktir. Rating tahmini için bias modellemeli bir MF yaklaşımı gerekir.
graph TD
A[MovieLens 32M Ham Veri] -->|Ön-işleme & Filtreleme| B[Kullanıcı-Film Puan Matrisi]
B -->|SVD Matris Ayrıştırması| C[50 Boyutlu Gizli Vektörler]
C -->|Offline Batch Eğitim| D[movie_embeddings.npy]
D -->|Gerçek-zamanlı Sorgu| E[cosine_similarity]
E -->|Top-N En Benzer| F[Film Önerileri]
Seyreltiklik problemi: 9.278 × 200.947 = ~1,86 milyar hücrenin yalnızca %1,65'i dolu (sparsity %98,35). Ham matris ~7-14 GB RAM gerektirir; SVD bunu 3,6 MB'lık 50 boyutlu bir diziye sıkıştırır.
Modelin tanınmış filmler için ürettiği en benzer 10 film (kalitatif kanıt —
tüm liste evaluation/metrics.md içinde):
| Sorgu | Modelin önerdiği filmler |
|---|---|
| Inception | The Dark Knight, Interstellar, Shutter Island, The Prestige, Django Unchained… |
| Pulp Fiction | The Silence of the Lambs, Se7en, The Usual Suspects, Reservoir Dogs, Fargo, Fight Club… |
| Toy Story | Toy Story 2, A Bug's Life, The Lion King, Aladdin, Monsters Inc., Finding Nemo… |
| Memento | Donnie Darko, Fight Club, Eternal Sunshine, Requiem for a Dream, City of God… |
| Interstellar | The Martian, Arrival, Inception, Ex Machina, Mad Max: Fury Road… |
from recommender import recommender
# Inception (movieId=79132) için 10 öneri
ids = recommender.get_recommendations(movie_id=79132, top_n=10)
print(ids) # [.., .., ..] → movieId listesi
Bağımlılıklar: numpy, scikit-learn, joblib.
├── README.md # Bu dosya (model kartı)
├── LICENSE # MIT (kod ve ağırlıklar)
├── model/
│ ├── movie_embeddings.npy # 9.278 × 50 SVD item embeddings (3,6 MB)
│ ├── movie_id_to_index.pkl # movieId → satır indeksi
│ └── index_to_movie_id.pkl # satır indeksi → movieId
├── recommender.py # Tek-dosya inference (cosine similarity)
├── training/
│ └── egitici.py # Modeli sıfırdan eğiten kod (repro)
└── evaluation/
├── evaluate.py # Tüm metrikleri hesaplayan script
├── metrics.json # Önceden hesaplanmış metrikler (makine-okur)
└── metrics.md # Önceden hesaplanmış metrikler (insan-okur, TR)
evaluate.py, modeli aynı hiperparametrelerle (n_components=50, random_state=42)
yeniden eğitir, kaydedilen ağırlıklarla birebir tutarlı olduğunu doğrular ve
held-out test üstünde metrikleri üretir.
# MovieLens verisini grouplens.org'dan indirin (repoda YOK):
# ratings_final_for_model.csv (userId,movieId,rating)
# movies_final_for_db.csv (movieId,title,genres,...)
python evaluation/evaluate.py \
--ratings /path/to/ratings_final_for_model.csv \
--movies /path/to/movies_final_for_db.csv
Tam koşu için ~8-16 GB RAM ve ~2 dakika gerekir.
sklearn.decomposition.TruncatedSVD (randomized solver)n_components=50, random_state=42ml-32m → 200+ rating eşiğiyle filtrelenmiş
30.770.501 değerlendirmeModel MovieLens ml-32m veri seti üstüne eğilmiştir.
Harper, F. M. and Konstan, J. A. (2015). The MovieLens Datasets: History and Context. ACM Transactions on Interactive Intelligent Systems (TiiS), 5(4). https://doi.org/10.1145/2827872
Bu deponun kodu ve türetilmiş ağırlıkları MIT lisansı altındadır (LICENSE).
Veri lisansı ayrıdır ve yukarıdaki şartlara tabidir.