PredictionDrift#

class PredictionDrift[source]#

Calculate prediction drift between train dataset and test dataset, using statistical measures.

Check calculates a drift score for the prediction in the test dataset, by comparing its distribution to the train dataset. For classification tasks, by default the drift score will be computed on the predicted probability of the positive (1) class for binary classification tasks, and on the predicted class itself for multiclass tasks. This behavior can be controlled using the drift_mode parameter.

For numerical distributions, we use the Kolmogorov-Smirnov statistic. See https://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test We also support Earth Mover’s Distance (EMD). See https://en.wikipedia.org/wiki/Wasserstein_metric

For categorical distributions, we use the Cramer’s V. See https://en.wikipedia.org/wiki/Cram%C3%A9r%27s_V We also support Population Stability Index (PSI). See https://www.lexjansen.com/wuss/2017/47_Final_Paper_PDF.pdf.

For categorical predictions, it is recommended to use Cramer’s V, unless your variable includes categories with a small number of samples (common practice is categories with less than 5 samples). However, in cases of a variable with many categories with few samples, it is still recommended to use Cramer’s V.

Parameters
drift_mode: str, default: ‘auto’

For classification task, controls whether to compute drift on the predicted probabilities or the predicted classes. For regression task this parameter may be ignored. If set to ‘auto’, compute drift on the predicted class if the task is multiclass, and on the predicted probability of the positive class if binary. Set to ‘proba’ to force drift on the predicted probabilities, and ‘prediction’ to force drift on the predicted classes. If set to ‘proba’, on a multiclass task, drift would be calculated on each class independently. For token classification tasks, drift is always calculated on the predictions and not on the probabilities, and this parameter is ignored.

margin_quantile_filter: float, default: 0.025

float in range [0,0.5), representing which margins (high and low quantiles) of the distribution will be filtered out of the EMD calculation. This is done in order for extreme values not to affect the calculation disproportionally. This filter is applied to both distributions, in both margins.

min_category_size_ratio: float, default 0.01

minimum size ratio for categories. Categories with size ratio lower than this number are binned into an “Other” category.

max_num_categories_for_drift: int, default: None

Only relevant if drift is calculated for classification predictions. Max number of allowed categories. If there are more, they are binned into an “Other” category. This limit applies for both drift calculation and distribution plots.

max_num_categories_for_display: int, default: 10

Max number of categories to show in plot.

show_categories_by: str, default: ‘largest_difference’

Specify which categories to show for categorical predictions graph, as the number of shown categories is limited by max_num_categories_for_display. Possible values: - ‘train_largest’: Show the largest train categories. - ‘test_largest’: Show the largest test categories. - ‘largest_difference’: Show the largest difference between categories.

numerical_drift_method: str, default: “KS”

decides which method to use on numerical variables. Possible values are: “EMD” for Earth Mover’s Distance (EMD), “KS” for Kolmogorov-Smirnov (KS).

categorical_drift_method: str, default: “cramers_v”

decides which method to use on categorical variables. Possible values are: “cramers_v” for Cramer’s V, “PSI” for Population Stability Index (PSI).

balance_classes: bool, default: False

If True, all categories will have an equal weight in the Cramer’s V score. This is useful when the categorical variable is highly imbalanced, and we want to be alerted on changes in proportion to the category size, and not only to the entire dataset. Must have categorical_drift_method = “cramers_v” and drift_mode = “auto” or “prediction”. If True, the variable frequency plot will be created with a log scale in the y-axis.

ignore_na: bool, default True

For categorical predictions only. If True, ignores nones for categorical drift. If False, considers none as a separate category. For numerical predictions we always ignore nones.

max_classes_to_display: int, default: 3

Max number of classes to show in the display when drift is computed on the class probabilities for classification tasks.

n_samplesint , default: 100_000

number of samples to use for this check.

__init__(drift_mode: str = 'auto', margin_quantile_filter: float = 0.025, max_num_categories_for_drift: Optional[int] = None, min_category_size_ratio: float = 0.01, max_num_categories_for_display: int = 10, show_categories_by: str = 'largest_difference', numerical_drift_method: str = 'KS', categorical_drift_method: str = 'cramers_v', balance_classes: bool = False, ignore_na: bool = True, max_classes_to_display: int = 3, n_samples: int = 100000, **kwargs)[source]#
__new__(*args, **kwargs)#

Attributes

PredictionDrift.aggregation_method

PredictionDrift.balance_classes

PredictionDrift.categorical_drift_method

PredictionDrift.drift_mode

PredictionDrift.ignore_na

PredictionDrift.margin_quantile_filter

PredictionDrift.max_classes_to_display

PredictionDrift.max_num_categories_for_display

PredictionDrift.max_num_categories_for_drift

PredictionDrift.min_category_size_ratio

PredictionDrift.min_samples

PredictionDrift.n_samples

PredictionDrift.numerical_drift_method

PredictionDrift.random_state

PredictionDrift.show_categories_by

Methods

PredictionDrift.add_condition(name, ...)

Add new condition function to the check.

PredictionDrift.add_condition_drift_score_less_than([...])

Add condition - require drift score to be less than the threshold.

PredictionDrift.clean_conditions()

Remove all conditions from this check instance.

PredictionDrift.conditions_decision(result)

Run conditions on given result.

PredictionDrift.config([include_version, ...])

Return check configuration (conditions' configuration not yet supported).

PredictionDrift.from_config(conf[, ...])

Return check object from a CheckConfig object.

PredictionDrift.from_json(conf[, ...])

Deserialize check instance from JSON string.

PredictionDrift.metadata([with_doc_link])

Return check metadata.

PredictionDrift.name()

Name of class in split camel case.

PredictionDrift.params([show_defaults])

Return parameters to show when printing the check.

PredictionDrift.remove_condition(index)

Remove given condition by index.

PredictionDrift.run(train_dataset, test_dataset)

Run check.

PredictionDrift.run_logic(context)

Calculate drift for predictions.

PredictionDrift.to_json([indent, ...])

Serialize check instance to JSON string.

Examples#