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

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

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

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

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

2. Большая задержка между предсказанием и доступностью метки истинности:

Представьте себе мошенничество с кредитными картами: о случаях можно сообщать в течение 90 дней после совершения транзакции. В результате существует трехмесячная задержка между сделанным прогнозом и получением достоверной информации. Если точность - единственный показатель, используемый для отслеживания эффективности модели, проблемы не будут обнаруживаться до 3 месяцев после того, как они начали возникать.

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

Данные мониторинга

Есть две основные причины, по которым производительность приложения AI может снижаться:

  1. Проблема в конвейере сбора / обработки данных:

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

Например. Предположим, что произошел сбой датчика, который собирал изображения и просто начинает отправлять темные изображения вместо изображений.

  1. Изменение характера / распределения данных:

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

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

Из двух вышеупомянутых сценариев мы можем сказать, что если распределение данных изменилось между обучающими наборами и наборами тестов, то это можно назвать сдвигом данных / дрейфом данных в мире. машинного обучения, то есть Ptrain (y, x) ≠ Ptest (y, x). Его можно разделить на 3 типа:

1. Ковариативный сдвиг.

2. Априорный сдвиг вероятности

3. Сдвиг концепции

Ковариальный сдвиг: Ковариативный сдвиг - это изменение в распределении, в частности, ковариат, то есть независимых переменных. Ковариальный сдвиг появляется только в задачах X → Y и определяется как случай, когда Ptrain (y | x) = Ptest (y | x) и Ptrain (x) ≠ Ptest (x). На рисунке ниже наглядно показано, как наша функция обучения пытается соответствовать обучающим данным. Но здесь мы видим, что распределение обучения и тестирования отличается, поэтому прогнозирование с использованием этой изученной функции определенно даст нам неверные прогнозы.

Примеры, в которых ковариативный сдвиг может вызвать проблемы:

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

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

Ковариальный сдвиг может вызвать множество проблем при выполнении перекрестной проверки. Перекрестная проверка почти беспристрастна без ковариатного сдвига, но сильно смещена при ковариатном сдвиге!

Предыдущий сдвиг вероятности. Предыдущий сдвиг вероятности можно рассматривать как полную противоположность ковариатному сдвигу, который относится к изменениям в распределении переменной класса Y, в то время как распределения X остаются прежними . Предыдущий вероятностный сдвиг появляется только в задачах Y → X и определяется как случай, когда Ptrain (x | y) = Ptest (x | y) и Ptrain (y) ≠ Ptest (y ).

Интуитивно понятный способ подумать об этом - рассмотреть несбалансированный набор данных.

Если обучающий набор имеет равные априорные вероятности количества получаемых вами спам-писем (т. Е. Вероятность того, что электронное письмо является спамом, составляет 0,5), то мы ожидаем, что 50% обучающего набора будут содержать спам-письма, а 50% - не содержащие спам. -спам.

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

Эта проблема возникает только в задачах Y → X и обычно связана с наивным байесовским методом (отсюда и пример со спамом, поскольку наивный байесовский метод обычно используется для фильтрации спама).

Сдвиг концепции: смещение концепции отличается от ковариантного и априорного сдвига вероятности тем, что он не связан с распределением данных или распределением классов, а, напротив, связан с отношением между изменением входных и выходных переменных и является определяется как Ptrain (Y | X) ≠ Ptest (Y | X). Пример, который мы обсуждали в разделе Изменение характера / распределения данных, относится к этой концепции.

Реализация сдвига данных с использованием тензорной проверки данных потока

Приведенный выше код и набор данных можно скачать здесь.

Вышеупомянутая статья - это мое понимание и реализация идентификации сдвига данных / дрейфа данных с использованием TFDV в TFX путем изучения нескольких ресурсов в Coursera, других статей в среде, облачных ресурсов Google и git и т. Д.