Recommendation Logics

Logic allows you to specify the desired behavior of the recommendation model.

While Recombee is generally a domain-independent recommendation engine and the default model is optimized to work well in most cases, we have used our experience in some frequent domains to setup some tuned models, and you can now easily pick the logic that is tailored for the particular case.

Setting logic in the Admin UI

You can assign a particular logic to a Scenario in Admin UI.

Setting Logic in the Admin UI

Setting Logic in the Admin UI

Alternatively you can use API parameter to set the logic.

List of Logics

There is a list logics available for most of the databases. Some databases tweaked by the Recombee support team may have custom logic.

Tip

See the Integration Tips if you are not sure which logic should be used in your use case


Universal Models

Universal Recombee models for the most common use-cases.

recombee:default

recombee:default

Applicable to endpoints: Recommend Items to Item, Recommend Items to User, Recommend Users to Item, Recommend Users to User, Recommend Item Segments to Item, Recommend Item Segments to User, Recommend Item Segments to Item Segment

Default model ensemble aiming to work well in most common use cases. It is an ensemble of collaborative filtering and content-based recommendation, backed by popularity-based models when there’s not enough data in the given context.
The ensemble is being continuously optimized by AI so it automatically adapts to incoming data.

recombee:homepage

recombee:homepage

Applicable to endpoints: Recommend Items to User

Universal model ensemble suitable for putting recommendations on the homepage / welcome-screen scenarios.

recombee:personal

recombee:personal

Applicable to endpoints: Recommend Items to User

Universal model ensemble suitable for user-based recommendations reflecting the personal tastes of the current user.
Requirements
  • There must be interaction data for the user.

recombee:similar

recombee:similar

Applicable to endpoints: Recommend Items to Item, Recommend Users to User

Universal model ensemble suitable for either recommending items which are similar to the given item (in case of Items-to-Item recommendation), or recommending users who are similar to the given user (in case of Users-to-User recommendation).

recombee:recently-viewed

recombee:recently-viewed

Applicable to endpoints: Recommend Items to User

Model returning the list of recently viewed items for a particular user.
Requirements
  • Detail Views must exist for the user.

Parameters

Parameter

Type

Default

Description

maxAge

double

1209600

Maximal age of the DetailView in seconds since the current timestamp.

recencyOrdering

enum

descending

Order in which the items are returned with regard to the time when they were interacted. When the order is descending, the last interacted item is at the beginning of the list of recommendations. When it is ascending, the first interacted item matching the maxAge condition is at the beginning of the list.

recombee:visually-similar

recombee:visually-similar

Applicable to endpoints: Recommend Items to Item

Model recommending similar items based on visual similarity (using deep-learning neural networks to process the images provided through the image properties). While the image similarity can take part in other logics as well, in recombee:visually-similar, it is explicitly used as the primary model. Image processing may take some time. Therefore, changes in image item properties do not take effect in real-time. The functionality is still in beta mode.
Requirements
  • Some image properties must be defined for items, with valid image links provided for the majority of the items in the catalog.

Parameters

Parameter

Type

Default

Description

useFallbackModels

boolean

false

Enable fallback models to make the recommendations if the model based on visual similarity cannot be used (e.g. due to a missing image for the given source item).

recombee:similar-properties

recombee:similar-properties

Applicable to endpoints: Recommend Items to Item, Recommend Users to User

Model recommending similar items based on item properties (numerical values, sets, and texts). While property values can take part in other logics, in recombee:similar-properties, they are explicitly used as the primary data source for recommending similar items or uses. Various machine-learning methods, including NLP deep-learning networks that process unstructured text descriptions, are used to compute the similarities.
Requirements
  • Some properties must exist for the items/users, depending on the used API endpoint.

Parameters

Parameter

Type

Default

Description

useFallbackModels

boolean

false

Enable fallback models to make recommendations if the model based on item properties cannot be used (e.g. due to missing property values for the given source item).

recombee:emailing

recombee:emailing

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for recommending items in periodic e-mailing campaigns. It contains fine-tuned rotation settings so that the set of recommended items for a particular user changes with each e-mail sent.
By default, rotation only takes into account recommendations (e-mails) at most 14 days old. Should a longer time period be needed for your use case, kindly contact support@recombee.com.
Parameters

Parameter

Type

Default

Description

rotationPolicy

enum

smart

A policy determining how strictly should already recommended items be rotated. The default option “smart” contains fine-tuned rotation settings, which take into account the position of recommended items and enable some of the items to re-appear in further e-mails. Option “total” never recommends items that have already appeared in previous e-mails.

recombee:custom-sort

recombee:custom-sort

Applicable to endpoints: Recommend Items to Item, Recommend Items to User

Model suitable for recommending items ordered by a ReQL expression given as a booster


E-commerce

Models specifically tuned for E-Commerce use-cases.

ecommerce:homepage

ecommerce:homepage

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for recommending products on homepage/welcome page in E-Commerce and online retail systems.

ecommerce:similar-products

ecommerce:similar-products

Applicable to endpoints: Recommend Items to Item

Model ensemble suitable for recommending similar products (alternatives) to a source (currently viewed) product.

ecommerce:cross-sell

ecommerce:cross-sell

Applicable to endpoints: Recommend Items to User, Recommend Items to Item, Recommend Users to Item

Model ensemble suitable for recommending compatible/complementary products. In user-based case, the products are compatible with those that the user has already put to the shopping cart or purchased. In item-based case, they are compatible with the source (currently viewed) item.
Requirements
  • Purchases must be present for the item/user.

ecommerce:bestseller

ecommerce:bestseller

Applicable to endpoints: Recommend Items to Item, Recommend Items to User

Model suitable for recommending globally most purchased items.
Requirements
  • Purchases must be present in the database.

ecommerce:similarly-purchasing

ecommerce:similarly-purchasing

Applicable to endpoints: Recommend Users to User

Recommends users with similar purchasing behavior as the source user.
Requirements
  • Purchases must be present for the user.


Video

Set of fine-tuned Video logics, specifically designed for VOD and similar use cases.

video:continue-watching

video:continue-watching

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for recommending partially watched movies or episodes, or the next episode from a watched series.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.
Parameters

Parameter

Type

Default

Description

watchingStartedPercentage

int

10

Percentage of an asset length for it to be considered as being watched.

watchingCompletedPercentage

int

90

Percentage of an asset length for it to be considered as completely watched.

assetType

enum

movies+episodes

Asset type to be recommended.

video:personal

video:personal

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for recommending personalized rows on the homepage or browse pages.
Rows with specific content (e.g. award-winning movies) can be set up by applying filters.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.
Parameters

Parameter

Type

Default

Description

assetType

enum

movies+episodes

Asset type to be recommended.

excludeAlreadyWatched

boolean

true

Exclude already watched assets.

video:segments-for-you

video:segments-for-you

Applicable to endpoints: Recommend Item Segments to User

Model ensemble suitable for recommending favorite segments (genres, actors, …) for a specific user.
A particular segmentation must exist beforehand.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.

video:editorial-picks

video:editorial-picks

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for recommendations of hand-picked editorial content.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.
Parameters

Parameter

Type

Default

Description

picks

item-ids-array

[]

List of items to be recommended.

excludeAlreadyWatched

boolean

false

Exclude already watched assets.

personalizedReordering

boolean

false

Reorder picked assets in a personalized way for the user.

video:more-like-this

video:more-like-this

Applicable to endpoints: Recommend Items to Item

Model ensemble suitable for recommending similar assets on the asset detail page.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.
Parameters

Parameter

Type

Default

Description

assetType

enum

movies+episodes

Asset type to be recommended.

excludeAlreadyWatched

boolean

false

Exclude already watched assets.

video:watch-next

video:watch-next

Applicable to endpoints: Recommend Items to Item

Model ensemble suitable for end-of-playback recommendations embedded in a video player.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.
Parameters

Parameter

Type

Default

Description

assetType

enum

movies+episodes

Asset type to be recommended.

excludeAlreadyWatched

boolean

false

Exclude already watched assets.

video:episodes-list

video:episodes-list

Applicable to endpoints: Recommend Items to Item

Model ensemble suitable for reverse-chronological listing episodes of a particular series.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.
Parameters

Parameter

Type

Default

Description

excludeAlreadyWatched

boolean

false

Exclude already watched assets.

video:search-segments

video:search-segments

Applicable to endpoints: request-recommend-search-item-segments

Smart personalized full-text search suitable for searching segments (genres, actors, …).
A particular segmentation must exist beforehand.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.

video:emailing

video:emailing

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for sending personalized emails with personalized content for the user. The recommended assets are different in each subsequent email.

This logic is not available in new databases by default. Please contact support@recombee.com if you want to use it.
Parameters

Parameter

Type

Default

Description

assetType

enum

movies+episodes

Asset type to be recommended.


Classified Advertising

Models tailored for classified advertising (real estate, automotive, electronics, services, etc.).

classifieds:homepage

classifieds:homepage

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for recommending products on homepage/welcome page of a Classified advertising site.

classifieds:personal

classifieds:personal

Applicable to endpoints: Recommend Items to User

Model ensemble suitable for recommending picked ads right for the given user. Can be used on different places, such as in-category recommendation when augmented with appropriate ReQL filter.

classifieds:similar-ads

classifieds:similar-ads

Applicable to endpoints: Recommend Items to Item

Model ensemble suitable for recommending ads that are similar to the one which is currently viewed.

Setting logic using API parameter

The logic can be set per individual recommendation request by passing its name, such as ecommerce:homepage, to the logic parameter:

client.send(new recombee.RecommendItemsToUser('user-x', 10,
                {
                  logic: 'ecommerce:homepage'
                }
              ), callback
            );
result = client.send(RecommendItemsToUser("user-x", 10, logic="ecommerce:homepage"))
result = client.send(RecommendItemsToUser.new('user-x', 10, {:logic => 'ecommerce:homepage'}))
import com.recombee.api_client.bindings.Logic;

RecommendationResponse result = client.send(new RecommendItemsToUser("user-x", 10)
  .setLogic(new Logic("ecommerce:homepage"))
);
client.send(new rqs.RecommendItemsToUser('user-x', 10, {'logic': 'ecommerce:homepage'}), callback);
<?php
$result = $client->send(new RecommendItemsToUser('user-x', 10, ['logic' => 'ecommerce:homepage']));
?>
using Recombee.ApiClient.Bindings;

RecommendationResponse result = client.Send(RecommendItemsToUser("user-x", 10,
  logic: new Logic("ecommerce:homepage")
  )
);
GET /my-db-id/recomms/users/user-x/items/?count=10&logic=ecommerce:homepage

Some logic can have parameters - if you specify just name, you will get some reasonable default, but you can tweak the parameters according to your particular needs:

client.send(new recombee.RecommendItemsToUser('user-x', 10,
      {
        logic:
        {
          name: 'recombee:recently-viewed',
          settings: {
            maxAge: 3*24*60*60
          }
        }
      }), callback
    );
result = client.send(RecommendItemsToUser("user-x", 10,
                        logic={"name": "recombee:recently-viewed",
                               "settings": {
                                    "maxAge": 3*24*60*60
                                  }
                               })
                    )
result = client.send(RecommendItemsToUser.new('user-x', 10,
                      {'logic' => {
                          'name' => 'recombee:recently-viewed',
                          'settings' => {
                            'maxAge' => 3*24*60*60
                          }
                        }
                      }))
import com.recombee.api_client.bindings.Logic;


Logic l = new Logic("recombee:recently-viewed", new HashMap<String, Object>() {
    {put("maxAge", 3*24*60*60);}
});

RecommendationResponse result = client.send(new RecommendItemsToUser("user-x", 10)
        .setLogic(l));
client.send(new rqs.RecommendItemsToUser('user-x', 10,
                                        {'logic':
                                          {
                                            'name': 'recombee:recently-viewed',
                                            'settings': {
                                              'maxAge': 3*24*60*60
                                            }
                                          }
                                        }))
.then((recomms) => {
      console.log(recomms);
});
<?php
  $result = $client->send(new RecommendItemsToUser('user-x', 10,
                ['logic' => [
                    'name' => 'recombee:recently-viewed',
                    'settings' => [
                      'maxAge' => 3*24*60*60
                    ]
                  ]
                ]));
?>
using Recombee.ApiClient.Bindings;

Logic l = new Logic("recombee:recently-viewed",
                    new Dictionary<string, object>() {
                        {"maxAge", 3*24*60*60}
                    }
);
var recommendationResponse = client.Send(new RecommendItemsToUser("user-x", 5, logic: l));
POST /my-db-id/recomms/users/user-x/items/

Body:
{
  "count": 10,
  "logic": {
    "name": "recombee:recently-viewed",
        "settings":{
          "maxAge": 259200
        }
  }
}