Pontiac Wiki Pontiac Wiki

Overview

User Defined Models

  • Overview
  • New UDM Set Up
  1. Home
  2. Analytics Documentation
  3. User Defined Models
  4. Overview

Overview

For the Targeting Model, report-generated outputs can be easily applied to a campaign, but users are not limited to the exact variables and combinations identified by the model. Users can also create their own custom JSON file using the same general structure as the model outputs.

This allows users to define variables and combinations based on their own campaign learnings, business rules, historical performance, or optimization goals. For example, a user may already know that a certain geography, publisher, device type, content genre, or day of week is strategically important and can build those values into a custom model. The complete model file must be formatted as a JSON array.

Before creating a custom model, review Model Scoring Overview to understand how model entries are matched, weighted, combined into a request-level score, and evaluated against the threshold selected on the line.

Score Requirements

  • Each entry must include a numeric score between -1 and 1.
    • Scores entered in the JSON file use the −1-to-1 model scale. After matching entries are combined, the result is converted to the 0-to-1 bidder scale used by the line threshold. See Model Scoring Overview for details.
  • Supported Fields and Expected Values
  • The required fields depend on whether the entry is a single variable, a 2-way combination, or a 3-way combination. The following fields can be used in custom Targeting Models:
FieldGroupHow to write the value
geo_regionGeographyLowercase, exactly as it appears in the logs.
geo_zipGeographyPostal code as it appears in the logs. US ZIPs must keep their leading zero (‘04501’). Non-US formats are fine (‘1000-001’, ‘SW1A 1AA’).
publisher_nameInventoryLowercase, exactly as it appears in the logs.
site_domainInventoryLowercase, exactly as it appears in the logs.
app_bundleInventoryLowercase, exactly as it appears in the logs.
exchangeInventoryLowercase, exactly as it appears in the logs.
deal_idInventoryLowercase, exactly as it appears in the logs.
content_channelContentLowercase, exactly as it appears in the logs.
content_networkContentLowercase, exactly as it appears in the logs.
content_seriesContentLowercase, exactly as it appears in the logs.
content_titleContentLowercase, exactly as it appears in the logs.
content_genreContentLowercase, exactly as it appears in the logs.
content_livestreamContent‘0’ or ‘1’.
device_typeDeviceIAB code as a whole number — ‘3’, never ‘3.0’ and never ‘Connected TV’.
dayTimeLowercase three-letter code (mon, tue, wed, thu, fri, sat, sun), in UTC.
hourTimeWhole number 0-23, in the user’s LOCAL time.

Values should match the format used in the underlying bid request data.

For example

{
  "feature": "device_type",
  "value": "3",
  "score": 0.80
}

Use “3”, not “Connected TV” or “CTV”.

Single Variable

A single-variable entry must include:

  • feature: The name of the feature.
  • value: The specific value associated with the feature.
  • score: A numeric value between -1 and 1.

Example:

{
  "feature": "geo_zip",
  "value": "10025",
  "score": 0.95
}

This example assigns a score of 0.95 to ZIP Code 10025.

2-Way Combination

A 2-way combination must include:

  • feature1: The name of the first feature.
  • feature2: The name of the second feature.
  • combination: The exact values associated with feature1 and feature2, provided in the same order and separated by ×.
  • score: A numeric value between -1 and 1.

Example 1:

{
  "feature1": "geo_zip",
  "feature2": "device_type",
  "combination": "10025 × 4",
  "score": 0.90
}

This represents ZIP Code 10025 + Device Type 4 with a score of 0.90.

Example 2:

{
  "feature1": "content_genre",
  "feature2": "day",
  "combination": "news/talk radio × thu",
  "score": 0.75
}

This represents Content Genre = news/talk radio + Day = Thursday with a score of 0.75.

The values in combination must match the order of the corresponding feature fields.

3-Way Combination

A 3-way combination must include:

  • feature1: The name of the first feature.
  • feature2: The name of the second feature.
  • feature3: The name of the third feature.
  • combination: The exact values associated with feature1, feature2, and feature3, provided in the same order and separated by ×.
  • score: A numeric value between -1 and 1.

Example:

{
  "feature1": "geo_zip",
  "feature2": "publisher_name",
  "feature3": "device_type",
  "combination": "10025 × iheartmedia × 4",
  "score": 0.85
}

The order of the values in combination must match the order of the corresponding feature fields.

For example:

feature1 = geo_zip
feature2 = publisher_name
feature3 = device_type

must correspond to:

10025 × iheartmedia × 4

Users can include one or multiple single variables, 2-way combinations, and 3-way combinations in a custom JSON file to define the optimization logic they want to apply.

Model-generated metrics such as conversion rate, lift, score, and statistical significance apply only to variables and combinations produced and evaluated by the model. User-created variables or combinations should not be assumed to have the same performance unless they are separately analyzed and validated.

Reach out to your Account Manager or contact us through the Pontiac Help Center for assistance creating and implementing a custom JSON model.

Field Weights (Optional)

By default, every field in a User Defined Model contributes equally. For example, a match on site_domain carries the same influence as a match on hour.

Optional field weights allow users to change that balance when there is a specific reason to give one attribute more influence than another.

A model file without field weights behaves as an equally weighted model.

How Field Weights Affect Scoring

When a bid request matches multiple model entries, their scores are combined into a single result. With field weights, the classifier calculates a weighted average:

Combined model score =
Sum of (each matching score × its weight)
÷
Sum of all matching weights

A field with a higher weight has more influence over the combined result than a field with a lower weight.

If all weights are equal, the calculation is equivalent to the plain average used by an unweighted User Defined Model.

JSON

To provide field weights in JSON, wrap the model entries in an object and add a field_weights map:

{
  "entries": [
    {
      "feature": "site_domain",
      "value": "espn.com",
      "score": 0.80
    },
    {
      "feature": "hour",
      "value": "20",
      "score": -0.40
    }
  ],
  "field_weights": {
    "site_domain": 3.0,
    "hour": 1.0
  }
}

The existing plain-array JSON format remains valid when no custom field weights are needed:

[
  {
    "feature": "site_domain",
    "value": "espn.com",
    "score": 0.80
  },
  {
    "feature": "hour",
    "value": "20",
    "score": -0.40
  }
]

CSV

For CSV models, add a weight column. Add one separate row for each field weight, leaving value and score empty:

feature,value,score,weight
site_domain,espn.com,0.80,
hour,20,-0.40,
site_domain,,,3.0
hour,,,1.0

The JSON and CSV examples above produce the same model.

Field Weight Example

Assume a request matches:

  • site_domain = espn.com: score 0.80, weight 3.0
  • hour = 20: score -0.40, weight 1.0

The weighted combined model score is:

((0.80 × 3.0) + (-0.40 × 1.0)) ÷ (3.0 + 1.0)
= 0.50

The combined model score of 0.50 converts to a bidder score of:

(0.50 + 1) ÷ 2 = 0.750

Without custom weights, the two entries contribute equally:

(0.80 + -0.40) ÷ 2 = 0.20

which produces a bidder score of:

(0.20 + 1) ÷ 2 = 0.600

Giving site_domain more weight therefore shifts the result toward its stronger positive score.

Only the Ratios Matter

Field weights are normalized so that the average field weight is 1 before the model is built.

For example:

Weights suppliedNormalized weights
site_domain: 3.0, hour: 1.0site_domain: 1.5, hour: 0.5
site_domain: 30, hour: 10site_domain: 1.5, hour: 0.5

These configurations are equivalent because the relative weighting between the fields is the same.

Increasing all weights by the same factor does not make the model more aggressive. Field weights control the relative influence of fields when the request-level score is calculated. How the resulting bidder scores affect bidding is controlled separately by the line’s threshold settings.

Combination Weights

A two- or three-variable combination uses the mean of its component fields’ weights.

For example, if:

site_domain weight = 1.5
hour weight = 0.5

then a matching site_domain × hour combination receives a weight of:

(1.5 + 0.5) ÷ 2 = 1.0

A combination does not receive additional weight simply because it contains more variables.

Field Weight Rules

RuleBehavior
Field not listedUses the default field weight of 1
Unknown field nameFile is rejected
Weight is not numericFile is rejected
Negative weightFile is rejected
Weight of 0Accepted with a warning; the field stops contributing to the combined score
One field far above the restFile is rejected if, after normalization, a single field would overwhelm the score

If the intent is for a field to have no influence, removing its entries is generally clearer than assigning the field a weight of 0.

When to Use Field Weights

Use field weights when there is a specific reason to believe one supported attribute should have more influence than another.

For example, a campaign may have strong evidence that placement domain is more important to performance than time of day. Increasing the relative weight of site_domain allows domain matches to contribute more heavily to the combined score.

If there is no clear reason to weight fields differently, leave field weights out. Equal weighting is the default.

Pontiac Analytics-generated models may also contain field weights, but those weights are measured automatically from the campaign’s training data rather than supplied by the user. When there is not enough data to measure field importance reliably, the Analytics model falls back to equal weighting.

For more information about how field weights are applied during scoring, see Model Scoring Overview.

Threshold Settings

The model file defines the model’s scoring signals and optional field weights, but it does not define how the resulting bidder score affects bidding.

Threshold settings are selected when the model is associated with a Campaign or Line.

  • Single Value applies a hard cutoff.
  • Spread uses separate minimum and maximum thresholds to create a probabilistic bidding band.

For complete threshold behavior, including how unmatched requests scoring 0.5 are handled, see Model Scoring Overview.

Next Steps

For details about how matching entries are weighted and averaged, why unmatched requests receive a neutral bidder score of 0.5, and how Single Value and Spread threshold settings affect bidding, continue to Model Scoring Overview.

© 2026 Pontiac Wiki Sec · All Rights Reserved · Developed by RDK

  • Contact Us
  • Privacy Policy
  • Terms & Conditions
  • Pontiac.media