Мониторинг модели — это процесс отслеживания производительности и поведения модели машинного обучения с течением времени. Это важно, потому что производительность модели может меняться со временем либо из-за изменений в данных, к которым она применяется, либо из-за изменений в самой модели. Мониторинг модели позволяет обнаруживать эти изменения и предпринимать соответствующие действия, такие как переобучение модели или корректировка ее гиперпараметров.

Для мониторинга производительности модели можно использовать множество различных показателей. Некоторые общие показатели включают точность, прецизионность, полноту и AUC (площадь под кривой). Другие показатели, такие как потери и производительность в наборе задержек, можно использовать для мониторинга процесса обучения модели. Важно выбрать правильные показатели для вашей конкретной проблемы и варианта использования.

В большинстве случаев у нас нет переменной y, которую можно вывести за фиксированное количество времени. Пример: правильно ли модель предсказала мошенничество. В таких случаях мы рассчитывали дрейф данных, чтобы говорить о производительности модели.

Дрейф данных

Дрейф данных относится к изменению распределения данных, к которым применяется модель машинного обучения с течением времени. Это может произойти по разным причинам, таким как изменения в моделируемом базовом процессе, изменения в процессе сбора данных или изменения в среде, в которой собираются данные.

Для отслеживания смещения данных в модели можно использовать такие методы, как обнаружение смещения данных. Это включает в себя сравнение распределения данных, к которым в настоящее время применяется модель, с распределением данных, на которых модель обучалась. Двумя наиболее важными показателями, используемыми для расчета дрейфа данных, являются PSI и CSI.

Индекс стабильности населения

Индекс стабильности населения (PSI) — это показатель, который измеряет стабильность прогнозов модели с течением времени. Он рассчитывается путем сравнения распределения прогнозов модели в текущем наборе данных с распределением прогнозов модели в эталонном наборе данных. Эталонный набор данных обычно представляет собой моментальный снимок данных, на которых была обучена модель.

PSI рассчитывается путем группирования прогнозов модели в ряд бинов одинакового размера, а затем вычисления разницы между долей прогнозов в каждом бине в текущем наборе данных и долей прогнозов в том же бине в эталонном наборе данных. Затем PSI рассчитывается как сумма этих различий.

Высокое значение PSI указывает на то, что прогнозы модели для текущего набора данных значительно отличаются от прогнозов для эталонного набора данных, что может указывать на то, что модель больше не работает хорошо.

Вот код Python для расчета PSI

import numpy as np

def calculate_psi(expected_outputs, actual_outputs):
  # Number of observations in each group
  n_expected = len(expected_outputs)
  n_actual = len(actual_outputs)

  # Bin the outputs into 10 equal-sized bins
  binned_expected, _ = np.histogram(expected_outputs, bins=10)
  binned_actual, _ = np.histogram(actual_outputs, bins=10)

  # Calculate the proportion of observations in each bin
  prop_expected = binned_expected / n_expected
  prop_actual = binned_actual / n_actual

  # Calculate the PSI
  psi = np.sum(prop_actual * np.log(prop_actual / prop_expected))

  return psi

Характеристика Индекс стабильности

Индекс стабильности характеристик (CSI) — это аналогичный показатель, который измеряет стабильность прогнозов модели с течением времени. Однако вместо того, чтобы сравнивать распределение прогнозов модели в текущем наборе данных с распределением прогнозов модели в эталонном наборе данных, CSI сравнивает прогнозы модели в текущем наборе данных с фактическими результатами в том же наборе данных.

CSI рассчитывается путем объединения прогнозов модели и фактических результатов в ряд бинов одинакового размера, а затем вычисления разницы между долей прогнозов в каждом бине в текущем наборе данных и долей фактических результатов в том же бине на тот же набор данных. Затем CSI рассчитывается как кумулятивная сумма этих различий.

Как и PSI, высокое значение CSI указывает на то, что прогнозы модели для текущего набора данных значительно отличаются от фактических результатов, что может указывать на то, что модель больше не работает хорошо.

Вот код Python для расчета CSI

from scipy import stats

def calculate_csi(predictions, actual_outcomes):
  # Number of observations in each group
  n_predictions = len(predictions)
  n_outcomes = len(actual_outcomes)

  # Calculate the empirical cumulative distribution functions (CDFs) of the predictions and outcomes
  predictions_cdf = stats.ecdf(predictions)
  outcomes_cdf = stats.ecdf(actual_outcomes)

  # Calculate the CSI as the sum of the squared differences between the CDFs
  csi = np.sum((predictions_cdf.y - outcomes_cdf.y)**2)

  return csi