Binary Classification

Binary classification models predict a binary outcome (one of two possible classes). In Aporia, these models are represented by the binary model type.

Examples of binary classification problems:

  • Will the customer buy this product or not_buy this product?

  • Is this email spam or not_spam?

  • Is this review written by a customer or a robot?

Frequently, binary models output not only a yes/no answer, but also a probability.

Example: Boolean Decision without Probability

If you have a model with a yes/no decision but without a probability value, then your database may look like the following:

idfeature1 (numeric)feature2 (boolean)decision (boolean)label (boolean)timestamp (datetime)

1

13.5

True

True

True

2014-10-19 10:23:54

2

-8

False

False

True

2014-10-19 10:24:24

To monitor this model, we will create a new model version with a schema that include a boolean prediction:

apr_model = aporia.create_model_version(
  model_id="<MODEL_ID>",
  model_version="v1",
  model_type="binary"
  features={
     ...
  },
  predictions={
    "decision": "boolean",
  },
)

To connect this model to Aporia from your data source, call the connect_serving(...) API:

apr_model.connect_serving(
  data_source=my_data_source,

  id_column="id",
  timestamp_column="timestamp",

  # Map the "label" column as the label for the "decision" prediction. 
  labels={
    # Prediction name -> Column name
    "decision": "label"
  }
)

Check out the Data Sources section for further reading on the available data sources and how to connect to each one of them.

Example: Boolean Decision with Probability

If you have a model with a yes/no decision and a probability / confidence value for it, then your database may look like the following:

idfeature1 (numeric)feature2 (boolean)proba (numeric)decision (boolean)label (boolean)timestamp (datetime)

1

13.5

True

0.8

True

True

2014-10-19 10:23:54

2

-8

False

0.5

False

True

2014-10-19 10:24:24

To monitor this model, it's recommended to create a new model version with a schema that includes the final decision as boolean field, and the probability as a numeric field:

apr_model = aporia.create_model_version(
  model_id="<MODEL_ID>",
  model_version="v1",
  model_type="binary"
  features={
     ...
  },
  predictions={
    "decision": "boolean",
    "proba": "numeric",
  },
)

To connect the model to Aporia from a data source, call the connect_serving(...) API:

apr_model.connect_serving(
  data_source=my_data_source,
    
  id_column="id",
  timestamp_column="timestamp",

  # Map the "label" column as the label for "decision" and "proba". 
  labels={
    # Prediction name -> Column name representing 
    "decision": "label",
    "proba": "label",
  }
)

Check out the Data Sources section for further reading on the available data sources and how to connect to each one of them.

Example: Probability Only

In cases when there is no threshold for your boolean prediction, and the final business result is actually a probability, you may simply omit the decision field from the examples in the previous section and only include the proba field for your prediction.

Don't want to connect to a database?

Don't worry - you can log your predictions directly to Aporia.

Last updated