All Projects β†’ BeelGroup β†’ Auto-Surprise

BeelGroup / Auto-Surprise

Licence: MIT License
An AutoRecSys library for Surprise. Automate algorithm selection and hyperparameter tuning πŸš€

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Auto-Surprise

Auto Sklearn
Automated Machine Learning with scikit-learn
Stars: ✭ 5,916 (+31036.84%)
Mutual labels:  hyperparameter-tuning, automl, automated-machine-learning, hyperparameter-search
Lale
Library for Semi-Automated Data Science
Stars: ✭ 198 (+942.11%)
Mutual labels:  hyperparameter-tuning, automl, automated-machine-learning
Auptimizer
An automatic ML model optimization tool.
Stars: ✭ 166 (+773.68%)
Mutual labels:  hyperparameter-tuning, automl, automated-machine-learning
mindware
An efficient open-source AutoML system for automating machine learning lifecycle, including feature engineering, neural architecture search, and hyper-parameter tuning.
Stars: ✭ 34 (+78.95%)
Mutual labels:  hyperparameter-tuning, automl, automated-machine-learning
maggy
Distribution transparent Machine Learning experiments on Apache Spark
Stars: ✭ 83 (+336.84%)
Mutual labels:  hyperparameter-tuning, automl, hyperparameter-search
Smac3
Sequential Model-based Algorithm Configuration
Stars: ✭ 564 (+2868.42%)
Mutual labels:  hyperparameter-tuning, automl, automated-machine-learning
Forecasting
Time Series Forecasting Best Practices & Examples
Stars: ✭ 2,123 (+11073.68%)
Mutual labels:  hyperparameter-tuning, automl
Adatune
Gradient based Hyperparameter Tuning library in PyTorch
Stars: ✭ 226 (+1089.47%)
Mutual labels:  hyperparameter-tuning, automl
simplifai
Free automated deep learning for spreadsheets
Stars: ✭ 17 (-10.53%)
Mutual labels:  hyperopt, automated-machine-learning
EvolutionaryForest
An open source python library for automated feature engineering based on Genetic Programming
Stars: ✭ 56 (+194.74%)
Mutual labels:  automl, automated-machine-learning
Milano
Milano is a tool for automating hyper-parameters search for your models on a backend of your choice.
Stars: ✭ 140 (+636.84%)
Mutual labels:  hyperparameter-tuning, automl
Remixautoml
R package for automation of machine learning, forecasting, feature engineering, model evaluation, model interpretation, data generation, and recommenders.
Stars: ✭ 159 (+736.84%)
Mutual labels:  recommender-system, automated-machine-learning
featuretoolsOnSpark
A simplified version of featuretools for Spark
Stars: ✭ 24 (+26.32%)
Mutual labels:  automl, automated-machine-learning
Tune Sklearn
A drop-in replacement for Scikit-Learn’s GridSearchCV / RandomizedSearchCV -- but with cutting edge hyperparameter tuning techniques.
Stars: ✭ 241 (+1168.42%)
Mutual labels:  hyperparameter-tuning, automl
Evalml
EvalML is an AutoML library written in python.
Stars: ✭ 145 (+663.16%)
Mutual labels:  hyperparameter-tuning, automl
Hypernets
A General Automated Machine Learning framework to simplify the development of End-to-end AutoML toolkits in specific domains.
Stars: ✭ 221 (+1063.16%)
Mutual labels:  hyperparameter-tuning, automl
benderopt
Black-box optimization library
Stars: ✭ 84 (+342.11%)
Mutual labels:  automl, hyperparameter-search
AutoPrognosis
Codebase for "AutoPrognosis: Automated Clinical Prognostic Modeling via Bayesian Optimization", ICML 2018.
Stars: ✭ 47 (+147.37%)
Mutual labels:  automl, automated-machine-learning
EasyRec
A framework for large scale recommendation algorithms.
Stars: ✭ 599 (+3052.63%)
Mutual labels:  recommender-system, automl
Amla
AutoML frAmework for Neural Networks
Stars: ✭ 119 (+526.32%)
Mutual labels:  hyperparameter-tuning, automl

Auto-Surprise

GitHub release (latest by date) PyPI Downloads Codecov Travis (.org)

Auto-Surprise is built as a wrapper around the Python Surprise recommender-system library. It automates algorithm selection and hyper parameter optimization in a highly parallelized manner.

Setup

Auto-Surprise is easy to install with Pip, and required Python>=3.6 installed on a linux system. Currently not supported in windows, but can be used using WSL.

$ pip install auto-surprise

Usage

Basic usage of AutoSurprise is given below.

from surprise import Dataset
from auto_surprise.engine import Engine

# Load the dataset
data = Dataset.load_builtin('ml-100k')

# Intitialize auto surprise engine
engine = Engine(verbose=True)

# Start the trainer
best_algo, best_params, best_score, tasks = engine.train(
    data=data, 
    target_metric='test_rmse', 
    cpu_time_limit=60 * 60, 
    max_evals=100
)

In the above example, we first initialize the Engine. We then run engine.train() to begin training our model. To train the model we need to pass the following

  • data : The data as an instance of surprise.dataset.DatasetAutoFolds. Please read Surprise Dataset docs
  • target_metric : The metric we seek to minimize. Available options are test_rmse and test_mae.
  • cpu_time_limit : The time limit we want to train. This is in seconds. For datasets like Movielens 100k, 1 hour is sufficient. But you may want to increase this based on the size of your dataset
  • max_evals: The maximum number of evaluations each algorithm gets for hyper parameter optimization.
  • hpo_algo: Auto-Surprise uses Hyperopt for hyperparameter tuning. By default, it's set to use TPE, but you can change this to any algorithm supported by hyperopt, such as Adaptive TPE or Random search.

Setting the Hyperparameter Optimization Algorithm

Auto-Surprise uses Hyperopt. You can change the HPO algo as shown below.

# Example for setting the HPO algorithm to adaptive TPE
import hyperopt

...

engine = Engine(verbose=True)
engine.train(
    data=data,
    target_metric='test_rmse',
    cpu_time_limit=60 * 60,
    max_evals=100,
    hpo_algo=hyperopt.atpe.suggest
)

Building back the best model

You can build a pickelable model as shown.

model = engine.build_model(best_algo, best_params)

Benchmarks

In my testing, Auto-Surprise performed anywhere from 0.8 to 4% improvement in RMSE compared to the best performing default algorithm configuration. In the table below are the results for the Jester 2 dataset. Benchmark results for Movielens and Book-Crossing dataset are also available here

Algorithm RMSE MAE Time
Normal Predictor 7.277 5.886 00:00:01
SVD 4.905 3.97 00:00:13
SVD++ 5.102 4.055 00:00:29
NMF -- -- --
Slope One 5.189 3.945 00:00:02
KNN Basic 5.078 4.034 00:02:14
KNN with Means 5.124 3.955 00:02:16
KNN with Z-score 5.219 3.955 00:02:20
KNN Baseline 4.898 3.896 00:02:14
Co-clustering 5.153 3.917 00:00:12
Baseline Only 4.849 3.934 00:00:01
GridSearch 4.7409 3.8147 80:52:35
Auto-Surprise (TPE) 4.6489 3.6837 02:00:10
Auto-Surprise (ATPE) 4.6555 3.6906 02:00:01

Papers

Auto-Surprise: An Automated Recommender-System (AutoRecSys) Library with Tree of Parzens Estimator (TPE) Optimization

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].