A comparative research project implementing Singular Value Decomposition (SVD) via Stochastic Gradient Descent (SGD) purely in NumPy. This manual implementation outperforms the industry-standard
scikit-surpriselibrary on the MovieLens 100K dataset.
We benchmarked our "From-Scratch" NumPy implementation against the industry-standard scikit-surprise library. By manually tuning the learning rate (
| Implementation | RMSE (Lower is Better) | Notes |
|---|---|---|
| Manual (Ours) | 0.9184 | Custom SGD Loop |
| Library (Surprise) | 0.9350 | Standard SVD |
| Content-Based | N/A | High Precision (0.81) |
Quantitative evaluation showing the custom SVD implementation outperforming the library baseline on the MovieLens 100K test set.
graph TD
User[User Request] --> Check{Is User Known?}
Check -->|Yes| CF[Collaborative Filtering]
Check -->|No| Hybrid[Cold Start Handler]
subgraph "Collaborative (Math Core)"
CF --> SVD[Matrix Factorization]
SVD -->|Predict| Latent[Latent Factors P*Q]
end
subgraph "Content-Based"
Hybrid --> TFIDF[TF-IDF Vectorizer]
TFIDF --> Cosine[Cosine Similarity]
end
Latent --> Rank[Ranked List]
Cosine --> Rank
Rank --> Output[Final Recommendation]
(Implemented in src/algorithms/manual_svd.py.)
Originally published as: "Sistem Perekomendasian Film Menggunakan Metode Content-Based Filtering dan Collaborative Filtering" (Adolf & Twenido, 2025).
The research implements TF-IDF + Cosine Similarity for content-based filtering and SGD-trained Matrix Factorization for collaborative filtering.
The refined model reaches 0.9184 RMSE, outperforming the library baseline.
git clone https://github.com/ArgaAAL/Matrix-Factorization-From-Scratch.git
cd Matrix-Factorization-From-Scratch
pip install -r requirements.txtpython src/algorithms/manual_svd.pyMIT License.


