Как понять и использовать расхождение Дженсена-Шеннона

Учебник по математике, логике и практическому применению JS Divergence, включая то, как его лучше всего использовать для мониторинга дрейфа.

Эта статья написана в соавторстве с Джейсоном Лопатецки, генеральным директором и соучредителем Arize AI

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

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

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

Одним из таких показателей является дивергенция Дженсена-Шеннона (JS Div). Также упоминаемое как общее расхождение со среднимили информационным радиусом, расхождение JS — это статистическая метрика, основанная на теории информации. > Преимущество расхождения JS перед другими метриками, подобными, в основном связано с проблемами с пустыми вероятностями для определенных событий или бинов и тем, как они вызывают проблемы с расхождением Кульбака-Лейблера (расхождение KL) и индексом стабильности населения (PSI). Дивергенция JS использует смешанную вероятность в качестве базовой линии при сравнении двух распределений. В дискретных версиях расхождения PSI и KL уравнения разрываются, когда вероятность событий равна нулю.

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

Обзор расхождений JS

Дженсен-Шеннон — это асимметричная метрика, которая измеряет относительную энтропию или разницу в информации, представленной двумя распределениями. Тесно связанный с расхождением KL, его можно рассматривать как измерение расстояния между двумя распределениями данных, показывающее, насколько эти два распределения отличаются друг от друга.

Ниже показана симметрия с расхождением KL:

И дискретная форма JS Divergence:

Где распределение смеси:

Для получения дополнительной информации, одна из лучших технических документов по ​​JS Divergence написана Фрэнком Нильсеном из Sony Computer Science Laboratories.

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

Как JS Divergence используется в мониторинге дрейфа?

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

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

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

Проблема дивергенции JS — а также ее преимущество — заключается в том, что базовая линия сравнения представляет собой смешанное распределение. Думайте о дивергенции JS как о двух этапах:

Шаг 1:

Создайте распределение смеси для сравнения, используя производственное и базовое распределения;

Шаг 2:

Сравните производство и базовый уровень со смесью.

На приведенной выше диаграмме показано распределение A, распределение B и распределение смеси. Дивергенция JS рассчитывается путем сравнения распределения JS как с A, так и с B.

✏️ПРИМЕЧАНИЕ.иногда непрактикующие люди ставят несколько чрезмерно усердную цель усовершенствовать математику отслеживания изменений данных. На практике важно иметь в виду, что реальные данные постоянно меняются в процессе производства, и многие модели хорошо распространяются на эти измененные данные. Цель использования метрик дрейфа состоит в том, чтобы иметь надежную, стабильную и очень полезную метрику, которая позволяет устранять неполадки.

Дивергенция JS — симметричная метрика

Дивергенция JS похожа на PSI тем, что является симметричной метрикой. Если вы поменяете местами базовое распределение p(x) и выборочное распределение q(x), вы получите то же самое число. Это имеет несколько преимуществ по сравнению с расхождением KL для устранения неполадок при сравнении моделей данных. Бывают случаи, когда команды хотят заменить базовый показатель сравнения для другого дистрибутива в рабочем процессе устранения неполадок и иметь метрику, в которой A / B совпадает с B / A. может сделать сравнение результатов намного проще.

Преимущество JS Divergence: работа с нулевыми интервалами

Основное преимущество дивергенции JS заключается в том, что смешанное распределение позволяет вычислению обрабатывать сравнения бинов с 0. С дивергенцией KL, если вы сравниваете 0 бинов, уравнение по существу взрывается.

Как вы можете видеть на изображении выше, есть две корзины, где одна корзина равна 0 в текущем временном интервале, а другая имеет значение. Подход с JS Divergence для обработки нулевого ведра состоит в том, чтобы взять два члена в JS Divergence и предположить, что один из них равен 0 (0*ln(0) = 0), поскольку функция является гладкой и имеет предел по мере приближения к 0, а другой имеет значение:

Предполагая, что один термин равен 0, у вас есть для 0 бункера:

Это не будет работать с дивергенцией KL или PSI, поскольку вы делите на 0 в знаменателе:

В случае, когда q(x) = 0, у вас есть:

Преимущество: нулевые бины обрабатываются естественным образом без проблем

✏️ПРИМЕЧАНИЕ: при желании также можно внести модификацию, позволяющую использовать KL Divergence и PSI в распределениях с 0 бинами.

Недостаток расхождения JS: движение распределения смеси

Недостаток дивергенции JS на самом деле вытекает из ее преимущества, а именно в том, что распределение сравнения представляет собой «смесь» обоих распределений.

В случае расхождения PSI или KL базовое сравнительное распределение представляет собой статическое сравнительное распределение, фиксированное для каждого периода времени сравнения. Это позволяет получить стабильную метрику, которая означает одно и то же при каждом сравнении и в каждом периоде. Например, если у вас значение PSI в один день равно 0,2, а через неделю оно равно 0,2, это означает, что разница энтропии с базовым уровнем одинакова в оба этих дня. Это не обязательно относится к дивергенции JS.

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

На приведенном выше графике показан пример распределения смеси, рассчитанного для двух разных таймфреймов. Смесь действует как медленно движущаяся базовая линия, которая плавно соединяет базовую линию в момент времени A со временем B путем усреднения различий.

Различия между непрерывными числовыми и категориальными признаками

Расхождение JS можно использовать для измерения различий между числовыми распределениями и категориальными распределениями.

Числа

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

Категориальный

Мониторинг расхождения JS отслеживает большие сдвиги распределения в категориальных наборах данных. В случае категориальных признаков часто существует размер, при котором мощность становится слишком большой, чтобы мера имела большую полезность. Идеальный размер составляет около 50–100 уникальных значений — поскольку распределение имеет более высокую мощность, вопрос о том, насколько разные два распределения и имеет ли это значение, становится запутанным.

Высокая кардинальность

В случае мониторинга объектов с высокой кардинальностью стандартные статистические расстояния обычно не работают — вместо этого рекомендуется использовать один из этих вариантов:

  1. Внедрение. В некоторых ситуациях с большим числом элементов используемые значения, такие как Идентификатор пользователя или Идентификатор контента, уже используются для внутреннего создания внедрений. Мониторинг вложений может помочь.
  2. Категория с высокой кардинальностью. В других случаях, когда модель закодировала входные данные в большое пространство, можно просто отслеживать 50–100 лучших элементов с расхождением JS и всеми остальными значениями как «другие». полезный.

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

Пример расхождения JS

Вот пример дивергенции JS как с числовыми, так и с категориальными признаками.

Представьте, что вы работаете в компании, выпускающей кредитные карты, и у вас есть численное распределение сумм платежей для модели мошенничества. Модель была построена с базовой линией, показанной на рисунке выше, в результате обучения. Мы видим, что распределение зарядов изменилось. Существует ряд отраслевых стандартов в отношении пороговых значений для PSI, но, как видно, значения расхождения JS сильно различаются. Стандарт 0.2 для PSI не применяется к расхождениям JS. В Arize (полное раскрытие: я работаю в Arize) мы обычно смотрим на движущееся окно значений за многодневный период, чтобы установить порог для каждой функции.

В примере показана числовая переменная и расхождение JS по распределению. В приведенном выше примере стоит отметить, что падение на девять пунктов с 12% до 3% для бина 95–97 вызывает движение JS на 1,4. Это точно отражает увеличение на девять пунктов с 3% до 12% для ячеек 105–107. PSI работает так же симметрично, как и JS. Это не то же самое для дивергенции KL. В случае расхождения KL 12%->3% вызывают большее движение числа.

Интуиция за дивергенцией JS

Важно понимать некоторую логику, связанную с метрикой, и изменения метрики, основанные на изменениях распределения.

В приведенном выше примере показано перемещение из одной категориальной корзины в другую. Прогнозы со словом «медицина» в качестве входных данных для функции (использование кредитных средств) увеличиваются с 2% до 8%, а прогнозы с «отпуском» уменьшаются с 23% до 17%.

В этом примере компонент расхождения JS, связанный с «медицинским обслуживанием», составляет 0,96 и больше, чем компонент процентного движения «отпусков», равный 0,023. Это противоположно тому, что вы получаете с дивергенцией KL.

Заключение

Дивергенция JS — распространенный способ измерения дрейфа. У него есть несколько замечательных свойств: он симметричен и естественным образом обрабатывает сравнение 0 бинов, но также имеет некоторые недостатки в подвижной смеси в качестве базовой линии. В зависимости от вашего варианта использования, это может быть отличным выбором для метрики дрейфа.

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