Это возможно, пока вы калибруете свои вероятности.

Для специалистов по данным не должно быть новостью, что как только прогностическая модель наконец развернута, самое интересное только начинается. Модель в производстве похожа на младенца: за ней нужно наблюдать и присматривать за ней, чтобы убедиться, что с ней все в порядке и что вокруг нет ничего слишком опасного. Одна из основных обязанностей няни — постоянно следить за работой модели и реагировать, если она ухудшается. Это довольно стандартная задача, если в вашем распоряжении есть наблюдаемые цели. Но как оценить производительность модели при отсутствии достоверных данных? Позволь мне показать тебе!

Мониторинг производительности

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

Дрейф данных

Дрейф данных (также известный как ковариативный сдвиг) — это ситуация, когда изменяется распределение входных данных модели. Потенциальных причин для такого изменения множество.

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

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

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

Мониторинг производительности модели

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

Во многих случаях мониторинг производительности является относительно стандартной задачей. Это проще всего, когда доступны наземные цели. Подумайте о прогнозировании оттока. У нас есть прогноз нашей модели для группы пользователей, и мы знаем, ушли они или нет в течение заданного периода времени. Это позволяет нам вычислять метрики по нашему выбору, такие как точность, прецизионность или ROC AUC, и мы можем постоянно вычислять их с новыми пакетами данных.

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

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

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

Мы можем оценить производительность модели без наземных меток истины, когда модель правильно откалибрована.

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

Калибровка вероятности

Чтобы понять калибровку вероятности, давайте сначала поговорим о самой вероятности. Далее мы рассмотрим, как эта концепция соотносится с моделями классификации.

Что такое вероятность?

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

Существует две школы теории вероятности: частотная (также известная как классическая) и байесовская. Частотист скажет вам, что «вероятность события — это предел его относительной частоты во многих испытаниях». Если вы подбрасывали монету много раз, примерно половина подбрасываний выпадет орлом. Чем больше бросков, тем ближе этот показатель к 0,5. Следовательно, вероятность выпадения монеты решкой равна 0,5.

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

Модели машинного обучения и вероятность

Модели, которые производят частотные вероятности, называются хорошо откалиброванными. В таком случае, если модель возвращает вероятность положительного класса 0,9 для ряда тестовых случаев, мы можем ожидать, что 90% из них действительно будут положительным классом.

Модели, которые производят частотные вероятности, называются хорошо откалиброванными.

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

Калибровка классификаторов

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

Зная все это, имея под рукой нашу хорошо откалиброванную модель, мы, наконец, можем перейти к оценке производительности без целей!

Оценка производительности на основе достоверности

Алгоритм, который позволяет нам оценивать производительность модели при отсутствии достоверных данных, разработанный NannyML, библиотекой с открытым исходным кодом для обработки данных после развертывания, называется Оценка производительности на основе достоверности или КППЭ.

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

Алгоритм CBPE

Чтобы понять алгоритм CBPE, давайте рассмотрим простой пример. Допустим, наша модель использовалась в производстве трижды и дала следующие вероятности: [0.90, 0.63, 0.21]. И, конечно же, мы не знаем истинных целевых классов.

Рассмотрим первое предсказание 0,9, представленное в виде пузыря на картинке ниже. Так как это больше типичного порога 0,5, этот пример классифицируется как положительный класс. Следовательно, есть два варианта: если модель верна, это истинно положительная, а если неправильная, то ложноположительная. Поскольку 0,9, выдаваемая моделью, является калиброванной вероятностью, мы можем ожидать, что модель окажется верной в 90 % подобных случаев, или, другими словами, мы ожидаем 90 % вероятности того, что модель верна. Это оставляет 10% шанс, что прогноз является ложным срабатыванием.

Итак, мы создали нашу матрицу путаницы. Он имеет четыре записи: истинные положительные результаты (TP), истинные отрицательные результаты (TN), ложные положительные результаты (FP) и ложные отрицательные результаты (FN). Как уже говорилось, в нашем первом примере есть только две возможности, которые мы распределяем в соответствии с их вероятностями.

Обычно матрица путаницы содержит счетчики каждого типа предсказания, но алгоритм CBPE рассматривает их как непрерывные величины. Таким образом, мы присваиваем матрице долю 0,9 истинного положительного результата и долю 0,1 ложного положительного результата.

Входит во второй тестовый пример, для которого модель выводит 0,63. Давайте поместим его на картинку в виде нового пузыря под первым. Опять же, это TP или FP, поэтому мы соответствующим образом назначаем дроби.

Наконец, у нас есть третий тестовый пример, для которого предсказание 0,21 преобразуется в отрицательный класс. Поместим его ниже первых двух. Этот третий пример может быть либо истинно отрицательным с вероятностью 100–21 = 79%, либо ложноотрицательным с вероятностью 21%. Мы назначаем соответствующие дроби нашей матрице путаницы и суммируем числа для каждого из четырех типов предсказания.

Как только это будет сделано, мы можем рассчитать любую желаемую метрику производительности. Например, мы можем вычислить ожидаемую точность, разделив сумму TP и TN на количество тестов: (1.53 + 0.79) / 3 = 0.77.

Аналогичным образом можно вычислить точность, полноту или даже площадь под ROC-кривой.

Опасная зона: предположения

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

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

Лучшая калибровка не гарантирует лучшей производительности — она просто более предсказуема.

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

CBPE работает только при отсутствии дрейфа концепций.

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

Если это произойдет, сопоставление функций и целей, изученное моделью, устаревает, и калибровка больше не имеет значения — модель просто неверна. Остерегайтесь дрейфа концепций!

CBPE с NannyML

NannyML, компания, стоящая за алгоритмом CBPE, также предоставляет его реализацию с открытым исходным кодом как часть своего пакета pip-installablenannyml Python. Вы можете ознакомиться с математически дотошным описанием алгоритма в их документации.

Оценка ROC AUC классификатора без знания целей занимает буквально пять строк кода с помощью nannyML и попутно создает красивую визуализацию, как показано ниже.

Обязательно ознакомьтесь с их Кратким руководством, чтобы узнать, как легко реализовать это самостоятельно!

Спасибо за прочтение!

Если вам понравился этот пост, почему бы вам не подписаться на обновления по электронной почте на мои новые статьи? А, став участником Medium, вы можете поддержать меня и получить неограниченный доступ ко всем историям других авторов и меня.

Нужна консультация? Вы можете спросить меня о чем угодно или заказать 1:1 здесь.

Вы также можете попробовать одну из других моих статей. Не можете выбрать? Выберите один из них: