adobe / xdm

Experience Data Model
Creative Commons Attribution 4.0 International
245 stars 319 forks source link

Add predictive send time and predictive fatigue to Standard Schema #247

Open eshitashah opened 6 years ago

eshitashah commented 6 years ago

What are the schemas that are affected by the issue - Profile

What are examples of products that are impacted by the issue - Campaign (real time orchestration).

Predictive Fatigue is the probability between 0 and 1 that a customer would unsubscribe. One score per profile. Predictive send time for open is the best time a communication must be sent to the customer to maximize opens. An array of 168 (247) elements with the probability that a customer will open at this time. Predictive send time for click is the best time a communication must be sent to the customer to maximize clicks. An array of 168 (247) elements with the probability that a customer will click at this time.

Business Value: Making predictive fatigue and predictive send time available to marketers helps them decide whether they should send a message and what time they should send a message. This enables marketers to make data driven decisions therefore increasing engagement with their subscribers. This in turn helps Adobe Campaign differentiate itself from its competitors by being the solution that helps marketers increase revenue through ML algorithms.

Problem + Solution: Marketers currently send their messages at a time based on their intuition . IN addition they optimize for segments - not individuals. These attributes will help the marketer make decisions for each profile by using their digital behavior data. To be used as an industry standard.

trieloff commented 6 years ago

See also #26

cdegroot-adobe commented 6 years ago

In a previous set of prototyping we attempted to define standardized schemas for various types of statistical/ML scoring/results. One was propensity (note the schema syntax is from a different system):

{
  "meta:license": [
    "Copyright 2017 Adobe Systems Incorporated. All rights reserved.",
    "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license",
    "you may not use this file except in compliance with the License. You may obtain a copy",
    "of the License at https://creativecommons.org/licenses/by/4.0/"
  ],
  "$id": "common/Propensity.schema.json",
  "$schema": "http://json-schema.org/draft-06/schema#",
  "title": "Propensity",
  "type": "object",
  "description": "The propensity schema represents the likelihood of a certain action happening in a certain window of time. The propensity schema can host various predictive results e.g churn. This is a general-purpose schema that is designed to contain the results of any propensity scoring algorithm.",
  "properties": {
    "score": {
      "title": "Score",
      "type": "number",
      "tagNumber": 1,
      "description": "The score is a real number between 0 and 1 (both inclusive). A higher value indicates a higher likelihood of the action occurring."
    },
    "action": {
      "title": "Action",
      "type": "string",
      "tagNumber": 2,
      "description": "The action that the propensity is testing the likelihood of occurring. Selected from the metric types of Experience Event where applicable."
    },
    "reasonCode": {
      "title": "Reason Code",
      "type": "string",
      "tagNumber": 3,
      "description": "The code that represents the algorithmic selected reason that the action is likely."
    },
    "reasonText": {
      "title": "Reason Text",
      "type": "string",
      "tagNumber": 4,
      "description": "The description text that represents the algorithmic selected reason that the action is predicted to occur."
    },
    "timeWindow": {
      "title": "Time Window",
      "type": "number",
      "tagNumber": 5,
      "description": "The time within which the action as predicted to occur."
    },
    "unitOfTime": {
      "title": "Unit of Time",
      "type": "string",
      "tagNumber": 6,
      "enumValues": [
        {
          "seconds": {
            "title": "Seconds",
            "tagNumber": 0
          }
        },
        {
          "minutes": {
            "title": "Minutes",
            "tagNumber": 1
          }
        },
        {
          "hours": {
            "title": "Hours",
            "tagNumber": 2
          }
        },
        {
          "days": {
            "title": "Days",
            "tagNumber": 3
          }
        }
      ],
      "description": "The unit for measuring time of the window attribute.",
      "enum": [
        "seconds",
        "minutes",
        "hours",
        "days"
      ]
    },
    "algorithmId": {
      "title": "Algorithm Id",
      "type": "string",
      "tagNumber": 7,
      "description": "The universal identifier of the Algorithm used."
    }
  }
}
trieloff commented 6 years ago

I think @cdegroot-adobe's sketch of a propensity schema is on the right track and a generalization of the predictive fatigue/send time use case. What I think it's missing is a solid modeling of the action.