GitHub - ZhangZhenghao/gorse: Go Recommender System Engine
source link: https://github.com/ZhangZhenghao/gorse
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
gorse: Go Recommender System Engine
gorse
is a recommender system engine implemented by the go programming language provide
- Algorithm: Predict ratings based on collaborate filtering. Including matrix factorization and neighborhood-based method.
- Data: Load data from the built-in dataset or file. Split data to train set and test set.
- Evaluator: Evaluate models by cross-validation using RMSE or MAE.
Installation
go get -t -v -u github.com/ZhangZhenghao/gorse/core
Usage
// Load build-in data data := core.LoadDataFromBuiltIn("ml-100k") // Create a recommender algo := core.NewSVD(nil) // Cross validate cv := core.CrossValidate(algo, data, []core.Evaluator{core.RMSE, core.MAE},5, 0, nil) // Print RMSE & MAE fmt.Printf("RMSE = %f, MAE = %f\n", stat.Mean(cv[0].Tests, nil), stat.Mean(cv[1].Tests, nil))
Output:
RMSE = 0.938904, MAE = 0.737349
Tutorial
Benchmarks
All algorithms are tested on a PC with Intel(R) Core(TM) i5-4590 CPU (3.30GHz) and 16.0GB RAM. RMSE scores and MAE scores are used to check the correctness comparing to other implementation but not the best performance. Parameters are set as default values and identical to other implementation.
Movielens 100K RMSE MAE Time RMSE[REF] MAE[REF] Random 1.518610 1.218645 0:00:01 1.514[1] 1.215[1] BaseLine 0.943741 0.741738 0:00:01 0.944[1] 0.748[1] SVD 0.938904 0.737349 0:00:05 0.934[1] 0.737[1] SVD++ 0.922710 0.721740 0:03:27 0.92[1] 0.722[1] NMF[3] 0.970431 0.762025 0:00:07 0.963[1] 0.758[1] KNN 0.978720 0.773133 0:00:03 0.98[1] 0.774[1] Centered k-NN 0.952928 0.751693 0:00:03 0.951[1] 0.749[1] k-NN Z-Score 0.953098 0.748464 0:00:03
k-NN Baseline 0.933512 0.734706 0:00:04 0.931[1] 0.733[1] Slope One[4] 0.940748 0.741195 0:00:02 0.946[1] 0.743[1] Co-Clustering[5] 0.968219 0.760593 0:00:01 0.963[1] 0.753[1] Movielens 1M RMSE MAE Time RMSE[REF] MAE[REF] Random 1.506756 1.208171 0:00:01 1.504[1] 1.206[1] BaseLine 0.909781 0.717029 0:00:09 0.909[1] 0.719[1] SVD 0.877262 0.688397 0:01:07 0.873[1] 0.686[1] SVD++ 0.865424 0.677274 0:59:08 0.862[1] 0.673[1] NMF[3] 0.917979 0.726059 0:01:33 0.916[1] 0.724[1] KNN 0.922540 0.727227 0:03:15 0.923[1] 0.727[1] Centered k-NN 0.929107 0.738920 0:03:39 0.929[1] 0.738[1] k-NN Z-Score 0.930754 0.737239 0:03:38
k-NN Baseline 0.896017 0.707469 0:03:36 0.895[1] 0.706[1] Slope One[4] 0.908397 0.717344 0:00:54 0.907[1] 0.715[1] Co-Clustering[5] 0.916752 0.720052 0:00:10 0.915[1] 0.717[1]
References
-
Hug, Nicolas. Surprise, a Python library for recommender systems. http://surpriselib.com, 2017.
-
G. Guo, J. Zhang, Z. Sun and N. Yorke-Smith, LibRec: A Java Library for Recommender Systems, in Posters, Demos, Late-breaking Results and Workshop Proceedings of the 23rd Conference on User Modelling, Adaptation and Personalization (UMAP), 2015.
-
Luo, Xin, et al. "An efficient non-negative matrix-factorization-based approach to collaborative filtering for recommender systems." IEEE Transactions on Industrial Informatics 10.2 (2014): 1273-1284.
-
Lemire, Daniel, and Anna Maclachlan. "Slope one predictors for online rating-based collaborative filtering." Proceedings of the 2005 SIAM International Conference on Data Mining. Society for Industrial and Applied Mathematics, 2005.
-
George, Thomas, and Srujana Merugu. "A scalable collaborative filtering framework based on co-clustering." Data Mining, Fifth IEEE international conference on. IEEE, 2005.
-
Li, Dongsheng, et al. "Mixture-Rank Matrix Approximation for Collaborative Filtering." Advances in Neural Information Processing Systems. 2017.
Recommend
-
77
在本篇文章中,我們將以 Ranking 階段常用的方法之一:Logistic Regression 邏輯迴歸為例,利用 Apache Spark 的 Logistic Regression 模型建立一個 GitHub repositories 的推薦系統,以用戶對 repo 的打星紀錄和用戶與 repo 的各項屬性做為特徵,預測出用戶會不會...
-
40
Introduction Have you ever wondered how Netflix suggests movies to you based on the movies you have already watched? Or how does an e-commerce websites display options such as "Frequently Bought Together"? The...
-
68
Recommenders This repository provides examples and best practices for building recommendation systems, provided as Jupyter notebooks. The examples detail our learnings on four key tasks:
-
42
Recommender System in Python — Part 1 (Preparation and Analysis)
-
14
I started doing music recommendation research about 4 years ago as an undergrad. After many iterations, that work has evolved intoFindka, a simple cross-domain recommender system. I'm going to show you Findka's algorithm...
-
12
Netflix is synonymous to most people in this day and age as the go-to streaming service for movies and tv shows. What most people do not know however, is that Netflix started out in the late 1990s with a subscription-based...
-
4
Read the whole post on the BCG Digital Ventures blogRecommender system basics: Part 2 Thursday, 27...
-
15
Recommender system From Wikipedia, the free encyclopedia Jump to navigation
-
2
What is a recommender system (or recommendation engine)?Dec 15th 2021Product
-
1
Gorse部署指南 - 芒果zzZ芒果zzZ Gorse部署指南 _ 芒果zzZ 2023年4月17日 中...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK