All Projects → maciejkula → Sbr Go

maciejkula / Sbr Go

Licence: mit
Recommender systems for Go

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Sbr Go

Tagrec
Towards A Standardized Tag Recommender Benchmarking Framework
Stars: ✭ 113 (-28.93%)
Mutual labels:  recommender-system
Rnn recsys
Our implementation of the paper "Embedding-based News Recommendation for Millions of Users"
Stars: ✭ 135 (-15.09%)
Mutual labels:  recommender-system
Rival
RiVal recommender system evaluation toolkit
Stars: ✭ 145 (-8.81%)
Mutual labels:  recommender-system
Kddcup 2020
6th Solution for 2020-KDDCUP Debiasing Challenge
Stars: ✭ 118 (-25.79%)
Mutual labels:  recommender-system
Elasticctr
ElasticCTR,即飞桨弹性计算推荐系统,是基于Kubernetes的企业级推荐系统开源解决方案。该方案融合了百度业务场景下持续打磨的高精度CTR模型、飞桨开源框架的大规模分布式训练能力、工业级稀疏参数弹性调度服务,帮助用户在Kubernetes环境中一键完成推荐系统部署,具备高性能、工业级部署、端到端体验的特点,并且作为开源套件,满足二次深度开发的需求。
Stars: ✭ 123 (-22.64%)
Mutual labels:  recommender-system
Awesome Deep Learning Papers For Search Recommendation Advertising
Awesome Deep Learning papers for industrial Search, Recommendation and Advertising. They focus on Embedding, Matching, Ranking (CTR prediction, CVR prediction), Post Ranking, Transfer, Reinforcement Learning, Self-supervised Learning and so on.
Stars: ✭ 136 (-14.47%)
Mutual labels:  recommender-system
Movielens Recommender System Javascript
🍃 Recommender System in JavaScript for the MovieLens Database
Stars: ✭ 105 (-33.96%)
Mutual labels:  recommender-system
Ml Course
Starter code of Prof. Andrew Ng's machine learning MOOC in R statistical language
Stars: ✭ 154 (-3.14%)
Mutual labels:  recommender-system
Movielens Recommender
A pure Python implement of Collaborative Filtering based on MovieLens' dataset.
Stars: ✭ 131 (-17.61%)
Mutual labels:  recommender-system
Rsparse
Fast and accurate machine learning on sparse matrices - matrix factorizations, regression, classification, top-N recommendations.
Stars: ✭ 145 (-8.81%)
Mutual labels:  recommender-system
Rectorch
rectorch is a pytorch-based framework for state-of-the-art top-N recommendation
Stars: ✭ 121 (-23.9%)
Mutual labels:  recommender-system
Comirec
Source code and dataset for KDD 2020 paper "Controllable Multi-Interest Framework for Recommendation"
Stars: ✭ 123 (-22.64%)
Mutual labels:  recommender-system
Kdd winniethebest
KDD Cup 2020 Challenges for Modern E-Commerce Platform: Multimodalities Recall first place
Stars: ✭ 142 (-10.69%)
Mutual labels:  recommender-system
Fmg
KDD17_FMG
Stars: ✭ 116 (-27.04%)
Mutual labels:  recommender-system
Ncf
A pytorch implementation of He et al. "Neural Collaborative Filtering" at WWW'17
Stars: ✭ 149 (-6.29%)
Mutual labels:  recommender-system
Seldon Server
Machine Learning Platform and Recommendation Engine built on Kubernetes
Stars: ✭ 1,435 (+802.52%)
Mutual labels:  recommender-system
Sdm
Sequential deep matching model for recommender system at Alibaba
Stars: ✭ 139 (-12.58%)
Mutual labels:  recommender-system
Remixautoml
R package for automation of machine learning, forecasting, feature engineering, model evaluation, model interpretation, data generation, and recommenders.
Stars: ✭ 159 (+0%)
Mutual labels:  recommender-system
Albedo
A recommender system for discovering GitHub repos, built with Apache Spark
Stars: ✭ 149 (-6.29%)
Mutual labels:  recommender-system
Caiss
跨平台/多语言的 相似向量/相似词/相似句 高性能检索引擎。功能强大,使用方便。欢迎star & fork。Build together! Power another !
Stars: ✭ 142 (-10.69%)
Mutual labels:  recommender-system

sbr-go

Build Status Godoc

A recommender system package for Go.

Sbr implements state-of-the-art sequence-based models, using the history of what a user has liked to suggest new items. As a result, it makes accurate predictions that can be updated in real-time in response to user actions without model re-training.

Sbr implements cutting-edge sequence-based recommenders: for every user, we examine what they have interacted up to now to predict what they are going to consume next.

Implemented models:

  • LSTM: a model that uses an LSTM network over the sequence of a user's interaction to predict their next action;
  • EWMA: a model that uses a simpler exponentially-weighted average of past actions to predict future interactions.

Which model performs the best will depend on your dataset. The EWMA model is much quicker to fit, and will probably be a good starting point.

Usage

You can fit a model on the Movielens 100K dataset in about 10 seconds using the following code:

	// Load the data.
	data, err := sbr.GetMovielens()
	if err != nil {
		panic(err)
	}
	fmt.Printf("Loaded movielens data: %v users and %v items for a total of %v interactions\n",
		data.NumUsers(), data.NumItems(), data.Len())

	// Split into test and train.
	rng := rand.New(rand.NewSource(42))
	train, test := sbr.TrainTestSplit(data, 0.2, rng)
	fmt.Printf("Train len %v, test len %v\n", train.Len(), test.Len())

	// Instantiate the model.
	model := sbr.NewImplicitLSTMModel(train.NumItems())

	// Set the hyperparameters.
	model.ItemEmbeddingDim = 32
	model.LearningRate = 0.16
	model.L2Penalty = 0.0004
	model.NumEpochs = 10
	model.NumThreads = 1

	// Set random seed
	var randomSeed [16]byte
	for idx := range randomSeed {
		randomSeed[idx] = 42
	}
	model.RandomSeed = randomSeed

	// Fit the model.
	fmt.Printf("Fitting the model...\n")
	loss, err := model.Fit(&train)
	if err != nil {
		panic(err)
	}

	// And evaluate.
	fmt.Printf("Evaluating the model...\n")
	mrr, err := model.MRRScore(&test)
	if err != nil {
		panic(err)
	}
	fmt.Printf("Loss %v, MRR: %v\n", loss, mrr)

Installation

Run

go get github.com/maciejkula/sbr-go

followed by

make

in the installation directory. This will download the package's native dependencies. On both OSX and Linux, the resulting binaries are fully statically linked, and you can deploy them like any other Go binary.

If you prefer to build the dependencies from source, run make source instead.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].