Smart Adaptive Recommendations

'Smart Adaptive Recommendations' (SAR) is the name of a fast, scalable, adaptive algorithm for personalized recommendations based on user transactions and item descriptions. It produces easily explainable/interpretable recommendations and handles "cold item" and "semi-cold user" scenarios. This package provides two implementations of 'SAR': a standalone implementation, and an interface to a web service in Microsoft's 'Azure' cloud: <>. The former allows fast and easy experimentation, and the latter provides robust scalability and extra features for production use.

SAR is a practical, rating-free collaborative filtering algorithm for recommendations. It produces explainable results, and is usable on a wide range of problems.

This package provides the following:

  • An R interface to the Azure Product Recommendations service, a cloud implementation of SAR. It includes the ability to deploy the backend via the AzureRMR package, as well as a client frontend.

  • A standalone R implementation of SAR, for ease of experimentation and familiarisation. The core algorithm is written in C++ and makes use of multithreading and sparse matrices for speed and efficiency.

More information

A detailed description of SAR

Other SAR implementations:


SAR 1.0.1

  • Allow resource group/subscription methods to work without SAR package on search path.
  • Fix a bug in cold item prediction.

SAR 1.0.0

  • Initial release to CRAN

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.0.1 by Hong Ooi, a year ago

Report a bug at

Browse source code at

Authors: Hong Ooi [aut, cre] , Microsoft Product Recommendations team [ctb] (source for MS sample datasets) , Microsoft [cph]

Documentation:   PDF Manual  

MIT + file LICENSE license

Imports AzureRMR, AzureStor, dplyr, httr, jsonlite, Matrix, R6, parallel, Rcpp, RcppParallel

Suggests testthat

Linking to Rcpp, RcppArmadillo, RcppParallel

System requirements: GNU make

See at CRAN