Дрейф данных, дрейф концепций и переобучение модели Зачем это нужно?
Изменения постоянны:
Мир динамичен, и данные постоянно меняются, будь то объем, качество, целостность или масштаб. Модели машинного обучения, обученные на сегодняшних данных, могут оказаться непригодными для завтрашнего дня.
Модели машинного обучения создаются или обучаются на основе заданных или исторических данных. Производительность модели ML так же хороша, как и данные, на которых она обучается, но эти модели устаревают, когда данные, на основе которых они моделируются, изменяются или модель теряет свою предсказательную силу. Кроме того, изменение среды меняет взаимосвязь между переменными модели. Таким образом, возникает необходимость регулярного мониторинга моделей в режиме реального времени.
Неточные модели могут дорого обойтись бизнесу. С течением времени даже высокоточные модели подвержены ухудшению качества, поскольку поступающие данные отклоняются от исходного обучающего набора. Это явление называется дрейфом модели.
Процедура прогнозирования дрейфа модели:
Прогнозирование экземпляра:
Обнаружение дрейфа данных невозможно, поскольку невозможно суммировать только одну точку данных, поскольку она не может представлять совокупность, и поэтому мы не можем суммировать.
Пакетное прогнозирование:
Мы можем сохранять каждый запрос или точку данных в базе данных с заданным интервалом времени, скажем, каждую секунду, а затем извлекать данные из базы данных через несколько часов, таким образом, у нас будет пакет данных, который представляет значительное количество точек данных, и мы будем в положение для обнаружения дрейфа данных.
Первый анализ, который мы должны провести, — это оценка распределения наших данных. Наш обучающий набор данных был выборкой из определенного момента времени, поэтому крайне важно сравнить распределение обучающего набора с новыми/входящими данными, чтобы понять, какое изменение произошло. Если есть огромная разница в данных, мы можем отправить предупреждение ответственной команде и приступить к переобучению модели.
В режиме реального времени ниже приведены некоторые сценарии того, как может произойти дрейф данных. Очень важно оценить и принять меры в нужное время.
Тенденции данных для обнаружения дрейфа модели:
В реальных сценариях можно встретить различные типы дрейфа: резкий, постепенный, инкрементный, повторяющийся или скачкообразный. Это критически зависит от того, какой сценарий мы должны отклонить/принять или переобучить данные.
Типы дрейфа в машинном обучении:
В целом их можно разделить на два типа:
- Дрейф концепции: концепция дрейф возникает, когда шаблоны, которым научилась модель, больше не соблюдаются. отношения между входными и выходными данными моделей меняются.
Нижепримерпредставляет собой пример резкого изменения концепции: до карантина прогнозируемые и фактические продажи одежды для дома совпадали, но из-за карантина из-за коронавируса внезапно продажи Домашняя одежда взлетела до небес, потому что люди проводили много времени дома и носили менее формальную одежду. Так что теперь в этом случае модель может нуждаться в переобучении с дополнительными функциями, чтобы установить связь между входными и выходными переменными.
2. Дрейф данных.Это тип дрейфа модели, при котором базовое распределение функций меняется с течением времени. Это может произойти из-за многих причин, таких как сезонное поведение или изменение основной популяции.
Ниже примерприведен пример дрейфа данных, в котором обучающая выборка состояла в основном из женщин. Из обучающей выборки модель узнала, что в основном женщины тратят больше.
Через некоторое время интернет-магазин чаще посещают мужчины, чем женщины. Поскольку у модели было ограниченное количество примеров для обучения в обучающем наборе, ей сложнее попытаться предсказать, сколько мужчины будут тратить в среднем. Таким образом, мы можем сказать, что распределение точек данных, на которых обучалась модель, изменилось.
а) Целевой дрейф: изменение выходных данных P(Y).
б) Характерный дрейф: изменение входных данных P(X)
Как определить дрейф модели:
a) Контролируемое обучение: данные с метками
Если у вас есть размеченные данные, дрейф модели можно определить с помощью методов мониторинга производительности и контролируемого обучения. Мы можем начать со стандартных показателей, таких как точность, прецизионность, частота ложных срабатываний и площадь под кривой (AUC).
b) Обучение без учителя: данные без меток
крайне важно сравнить распределение обучающей выборки с новыми данными, чтобы понять, какой сдвиг произошел. Существует множество метрик расстояния и непараметрических тестов, которые можно использовать для измерения этого, в том числе дивергенция Кульбака-Лейблера, дивергенция Дженсона-Шеннона и критерий Колмогорова-Смирнова.
Основная причина отклонения модели машинного обучения:
Есть две основные причины:
Инструменты, используемые для обнаружения дрейфа данных:
1. Простой статистический тест:
Тест ks2samp из библиотеки SciPy. Тест Колмогорова-Смирнова позволяет сравнить два образца и сообщает нам вероятность того, что они оба взяты из одного и того же дистрибутива.
если P-значение теста ks2 ниже порогового значения 0,05, мы можем отклонить нулевую гипотезу и сделать вывод, что данные не были взяты из одного и того же распределения.
from scipy.stats import ks_2samp import matplotlib.pyplot as plt import numpy as np training_data=np.arange(10) # data on which model was trained new_batch_data=np.arange(100,200)# data newly acquired after drift result = ks_2samp(training_data, new_batch_data)
Результат был:
KstestResult (статистика = 1,0, pvalue = 4,2646072253826637e-14)
Поскольку P-значение теста ks2 ниже порогового значения 0,05, мы можем отклонить нулевую гипотезу и сделать вывод, что данные не были взяты из одного и того же распределения.
Дальнейший пример:
Если данные обучения и новые пакетные тесты относятся к разным распределениям, значение p очень низкое ~ 0. Как показано ниже, это указывает на то, что существует дрейф данных, и модель может нуждаться в повторном обучении:
Если данные обучения и нового пакетного теста взяты из одного и того же распределения, значение p будет очень высоким >0. 05, как показано ниже, таким образом, указывает на отсутствие дрейфа данных с входящими пакетными данными.
2. очевидно :
Ссылка на инструмент:
https://www.evidentlyai.com/blog/ml-monitoring-data-drift-how-to-handle
Очевидно, это библиотека Python с открытым исходным кодом для специалистов по данным и инженеров машинного обучения. Он помогает оценивать, тестировать и отслеживать производительность моделей ML от проверки до производства.
Пример отчета показан ниже:
Ссылки:
- очевидно:https://www.evidentlyai.com/blog/machine-learning-monitoring-data-and-concept-drift#what-else-can-go-wrong
- ubiops :https://ubiops.com/an-introduction-to-model-drift-in-machine-learning/
- Аналитика: https://www.analyticsvidhya.com/blog/2021/10/mlops-and-the-importance-of-data-drift-detection/
- https://analyticsindiamag.com/what-are-the-ways-to-automate-model-drift/
- fiddler.ai :«https://www.fiddler.ai/blog/drift-in-machine-learning-how-to-identify-issues-before-you -иметь проблему"