Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction

...

Collaborative Filtering is one of the most effective methods for personalized product recommendations based on each customer prior purchase and online behavior.The motivation for collaborative filtering comes from the idea that people often get the best recommendations from someone having similarities in their purchase history (or online behavior). The idea is therefore to match people with similar interests and making recommendations on this basis.

...

purchase history should clearly play a role to define what other products a customer might be interested to buy (of what products he might want to buy again).

However, a customer who bought a type of product twice or three times doesn’t have the same affinity towards these products if he bought twice or three times in total, or if he bought already 20 times or more. The first gives (so far) a clear indication of a strong affinity while the second might have stronger affinities to other products.

To make the matter worse, some types of products have very difference purchase frequencies than others. For example, chewing toys are typically bought much less often than dog food. Therefore, simply using order frequency doesn’t suffice either.

...

The goal of calculating what we call Product Segment Affinities is to identify products individually for each of your customers where a reorder is really likely or which they buy so often that they might be interested in other best-selling products in the same segment which they never bought before.

Tip

Boxalino as developed two types of Affinities:

  • Local Affinities for Reorder - where the individual purchase frequency is compared to other customers who also bought products in the same segment

  • Global Affinities for Discover - where the individual purchase frequency is compared to all other customers regardless if they already bought products in the same segment or not

What is it?

The Collaborative Filtering on Purchases generates a small quantity (typically around 10) product recommendations which are generated for each customer individually based on their purchase history.

...

Tip

These recommendations can be used to be put on top of any widget. One of the most common cases are WELCOME: Product suggestions on start pages, RE-BUY: Product Suggestions on My Account Page and INDIVIDUALIZE: Product Suggestions in E-Mails, but we have seen very positive results also to put such products on top of SEARCH/NAVI: In-site Search and Product Listings when such product match with the search term or category/brand context.

This is a great way to personalize your entire E-shop.

Best Practice Strategy

Neural Collaborative Filtering for personalized recommendations leveraging the patterns in the purchase behaviors of other customers.

WPOS

Use Cases

Mode

Requirements

ALL

Customer Correlation-based Promoter

RANKER

You need to confirm with Boxalino that this Collaborative Filtering has been computed for your account

Variables

...

  • Customer Affinities -

    Reorder products already bought: “boxalino_std_affinities-rebuy-customer”

  • Customer Affinities -

    Discover products not bought yet: “boxalino_std_affinities-discover-customer”

Cases to consider

There is only one standard case

How to configure it?

You can import the JSON below directly in the Admin (use the Import button on the top right), as in this screen-shot.

...

Expand
titleUse-Cases (JSON) - click copy on the top right
Code Block
languagejson
[
  {
    "useCaseModelSource": "library",
    "useCaseModelId": 188,
    "useCaseModelVersion": 1,
    "useCaseModelSubVersion": 1,
    "name": "Collaborative Filtering Purchases",
    "order": "1",
    "orGroup": null,
    "fromIndex": -1,
    "toIndex": -1,
    "maxWeight": null,
    "variant": "",
    "scope": "local",
    "overwriteLevel": 1,
    "overwriteLabel": [
      null
    ],
    "globalTargetTags": [
      null
    ],
    "active": true,
    "parameters": [
      {
        "name": "type",
        "value": {
          "format": "StringParameterValue",
          "value": "boxalino_std_collaborative-filtering-customer-purchasesaffinities-rebuy-customer"
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "source",
        "value": {
          "format": "StringParameterValue",
          "value": ""
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "valuesConditionMapKey",
        "value": {
          "format": "StringParameterValue",
          "value": null
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "targetAsValue",
        "value": {
          "format": "BooleanParameterValue",
          "value": true
        },
        "scope": "global"
      },
      {
        "name": "valuesConditionValueIndex",
        "value": {
          "format": "StringParameterValue",
          "value": "0"
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "factor",
        "value": {
          "format": "NumberParameterValue",
          "value": null
        },
        "scope": "global"
      },
      {
        "name": "targetSeparator",
        "value": {
          "format": "StringParameterValue",
          "value": "\\\\|"
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "field",
        "value": {
          "format": "FieldParameterValue",
          "value": "id"
        },
        "scope": "global"
      },
      {
        "name": "boostFilter",
        "value": {
          "format": "BooleanParameterValue",
          "value": true
        },
        "scope": "global"
      },
      {
        "name": "boostWeight",
        "value": {
          "format": "StringParameterValue",
          "value": "1000000"
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "orCondition",
        "value": {
          "format": "BooleanParameterValue",
          "value": true
        },
        "scope": "global"
      },
      {
        "name": "required",
        "value": {
          "format": "BooleanParameterValue",
          "value": false
        },
        "scope": "global"
      },
      {
        "name": "topWeightNbValuesMaxThreshold",
        "value": {
          "format": "StringParameterValue",
          "value": "0"
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "topWeightMinThreshold",
        "value": {
          "format": "StringParameterValue",
          "value": "0"
        },
        "scope": "global",
        "startval": {},
        "schema": ""
      },
      {
        "name": "limitFieldValues",
        "value": {
          "format": "StringParameterValues",
          "values": [
            "*"
          ]
        },
        "scope": "global"
      }
    ],
    "segmentationIds": null,
    "segmentationUniqueKeys": [],
    "CPOInitiativeId": null,
    "notes": null,
    "options": {
      "status": null,
      "includeWidgets": null,
      "excludeWidgets": null,
      "allWidgets": null,
      "conditionalSegments": null,
      "conditionalProductSelections": null,
      "ordering": null,
      "parameters": [
        {
          "name": "system",
          "values": [
            "false"
          ]
        }
      ],
      "allLinkedAccounts": null,
      "accounts": null
    },
    "icons": {
      "strategy": {
        "value": "cpo_journey.png",
        "tooltip": "JOURNEY OPTIMIZATION"
      },
      "level": {
        "value": "L1",
        "tooltip": "LEVEL 1 - ENGAGEMENT JOURNEYS (4+1+4)"
      },
      "initiative": {
        "value": "fa-folder",
        "tooltip": "RETURNING CUSTOMERS"
      },
      "character": {
        "value": "",
        "tooltip": ""
      },
      "mode": {
        "label": "",
        "value": "",
        "tooltip": ""
      }
    },
    "sections": [
      {
        "id": "main",
        "label": "Values",
        "active": true
      },
      {
        "id": "advanced",
        "label": "Advanced",
        "active": false
      }
    ],
    "isSelected": true,
    "status": true
  }
]