Samantha - A generic recommender and predictor server.
License: MIT License
Java 96.55%Scala 0.33%Python 3.13%
samantha's Introduction
Introduction
what is Samantha
A generic recommender and predictor server for both offline machine learning and recommendation modeling and fast online production serving.
MIT licence, oriented to production use (online field experiments in research and typical industrial use)
what Samantha can do in simple words: full-fledged, self-contained server that can be used in production right away with one configuration file, including the following components
data management, including offline and online, in (indexing) and out (post-processing), through configurable backends of most relational databases (e.g. MySQL, PostresSQL, SQLServer etc.), ElasticSearch or Redis.
model management, including online updating, building, loading, dumping and serving.
data processing pipeline based on a data expanding and feature extraction framework
experimental framework for randomized A/B and bucket testing
feedback (for online learning/optimization) and evaluation (for experimenting) loops among application front-end, application back-end server and Samantha
abstracted model parameter server (through extensible variable and index spaces)
generic oracle-based optimization framework/solver with classic solvers
flexible model dependency, e.g. model ensemble, stacking, boosting
schedulers for regular model rebuilding or backup
integration with other state-of-the-art systems including XGBoost and TensorFlow.
control and customize all these components through one centralized configuration file
the targeted audience/users of Samantha (users in this doc refer to those who use Samantha; instead, end users is used to refer to the ultimate users of applications built using Samantha)
individuals/organizations who want to deploy a data-driven predictive system with minimum effort. They might need it to support answering relevant research questions involving an intelligent predictive part in their system or just to have an initial try to see the effects of such a predictive component.
individuals/organizations who are working on comparing and developing new machine learning or recommendation models/algorithms, especially those who care about deploying their models/algorithms into production and evaluate them in front of end users
what to support in the near future
text modeling
web interface based creation and deployment of recommender/predictor engines
scale up to clusters including data storage and model learning
Samantha is a project developed by Qian Zhao, a Ph.D. candiate at GroupLens lab and originated from his research projects. Currently, Samantha is in the process of integrating with Lenskit. Feel free to give a try if you're intersted though.
For the paper GB-CENT
The experiments were run with Samantha in: Qian Zhao, Yue Shi, Liangjie Hong. GB-CENT: Gradient Boosted Categorical Embedding and Numerical Trees. In Proceedings of the 26th International World Wide Web conference (WWW 2017), ACM, 2017.