калибровка моделей машинного обучения
Чек-лист перед калибровкой модели машинного обучения
Часто в теории работа модели выглядит просто и складно, но когда вы получаете набор реальных данных и задачу их посчитать, это может вызвать ступор. Даем 7 полезных советов от Петра Лукьянченко, ex-Team Lead Analytics в Lamoda и руководителя онлайн-курса «Математика для Data Science. Продвинутый уровень».
Привет! Это Петр Лукьянченко (PetrPavlovich). Мой чек-лист — подборка мыслей, которые выработались за годы набитых шишек и допущенных ошибок.
1. Постановка задачи
Всегда перепроверяйте задачу, которую вы хотите посчитать. Что вы собираетесь сделать? Что-то классифицировать? Посчитать? Четкое понимание задачи предопределяет ваше следующее действие.
2. Данные (Garbage In = Garbage Out)
Всегда убеждайтесь, чтобы в данных не было задвоений. Фраза «Garbage In = Garbage Out» означает, что если данные собраны кое-как, то и результат получится кое-как. Кстати, именно поэтому есть отдельная профессия Data Engineer — специалисты, которые вычищают зачастую героическим трудом просто отвратительнейшие данные. Они умеют в них выявлять отклонения outliers, убирают их, исправляют, чтобы потом аналитики могли работать с качественными дата сетами.
3. Предметная область
Всегда знайте предметную область, в которой строите регрессию. Это поможет проверить гипотезы на реалистичность. И благодаря этому понимаю вы избежите напрасного труда считать глупые регрессии из серии «Как скорость таяния ледников влияет на рост популяции кроликов в Австралии».
4. Логика модели
Без логики работать нельзя. Понимание логики модели, есть ли логика в этой взаимосвязи очень важны. В этом случае полученный результат даже может быть качественным, но при этом его нельзя будет интерпретировать. Поэтому если кажется, что логики нет, лучше не считать регрессию, потому что в таком случае получится глупость, которая потянет за собой новые ошибочные решения.
5. Метрика на тесте важнее метрики на обучении
Когда мы обучаем регрессию, мы используем метрику для обучения. Это метрика MSE или ей альтернативная. А когда мы посчитали много регрессий, то мы между собой их можем сравнивать. Тут уже используется метрика R-квадрат.
Метрика на обучении регрессий и метрика оценке (тестировании) регрессий — это две разные метрики. И если модель хорошо обучилась, это еще не значит, что она хорошо оттестируется. Каждую из этих метрик нужно аккуратно и правильно выбирать.
6.Чем проще регрессия, тем она будет лучше работать
И чем тяжелее регрессия, тем больше вероятность, что что-то пойдет не так.
7. Лучше хорошая регрессия сейчас, чем идеальная через час
Если вам удалось придумать хорошую регрессию, то лучше на этом остановиться. Не пытайтесь сделать что-то идеальное, сверхточное. Порой в попытках улучшить можно на самом деле ухудшить. Да, хочется достичь 100 прогнозирования, но не бывает в реальной жизни 100%-го качества. Даже самые лучшие метрики по качеству на Kaggle имеют 96-98%.
Сейчас в калибровке моделей много ручного интеллектуального труда, требующего от специалиста определенных навыков. Да, мы все стремимся к auto-ML, т.е. автоматическому подбору Python лучшей модели. Но пока это недостижимое состояние, и без понимания математического аппарата правильно подобрать модель невозможно. Представьте, что вы получите подобный временной ряд, как на графике ниже, и вас попросят «Спрогнозируйте, пожалуйста. ».
На таком дата сете можно построить большое множество различных регрессий, где каждая будет давать свой прогноз. Вот как раз, как выбрать лучший прогноз, как выявлять отклонения outliers в данных и многие другие практические вещи мы проходим на продвинутом курсе Математика для Data Science.
Поэтому если вы уже работаете или только собираетесь перейти в сферу Data Science, но математику знаете на уровне «проходил что-то в институте», у нас вы получите все недостающие навыки.
Еще больше полезной информации можно найти в авторском telegram-канале Петра.
6 правил по обеспечению качества данных для машинного обучения
«Качество — это не действие, а привычка», — сказал великий древнегреческий философ Аристотель. Эта идея справедлива сегодня так же, как и более двух тысяч лет назад. Однако качества добиться не так легко, особенно когда дело касается данных и технологий наподобие искусственного интеллекта (ИИ) и машинного обучения.
В некоторых областях можно почти без проблем использовать данные с высокой частотой ошибок, в других же система даёт сбой при малейших погрешностях в большом датасете. Принцип «мусор на входе, мусор на выходе» нужно воспринимать со всей серьёзностью. Мельчайшая некорректность в наборах данных может иметь большое влияние на модель и приводить к созданию бесполезных результатов. Чистота и целостность данных — ключевой аспект в создании сложных моделей машинного обучения.
Огромная цена низкого качества данных
Гораздо экономнее предотвращать проблемы с данными, чем разрешать их. Если у компании есть 500 тысяч записей и 30% из них неточны, тогда на устранение этих проблем придётся потратить 15 миллионов долларов вместо 150 тысяч долларов, которые были бы потрачены на их предотвращение.
Big Data уже давно стала модным термином и многие компании убедили себя, что чем больше у них данных, тем большую ценность из них можно извлечь. Однако они не учитывают то, что для получения хорошего экономического эффекта данные нужно собрать, разметить и обработать.
Качество зависит от множества факторов
Важность качества данных зависит от текущего этапа производства. Когда вы только начинаете и пытаетесь создать впечатляющее доказательство работоспособности концепции (proof of concept, POC), самое главное — это сбор данных, при этом может потребоваться пожертвовать качеством. Однако после того, как продукт прошёл этап POC и критически важной стала надёжность, нужно отдать приоритет качеству в ущерб скорости.
Необходимый уровень качества зависит от области применения. При аннотировании автомобиля рамкой вполне приемлема погрешность в 3 пикселя. Однако при разметке ключевых точек лица сдвиг пикселей не допускается. Погрешность в 3 пикселя может сделать разметку лица бесполезной.
Также на качество могут влиять различные объекты на сцене. Например, в случае беспилотных автомобилей должна быть высокой точность выделения объектов рядом с тестируемым автомобилем, и находящихся с ним на одной полосе. Однако в случае далёких объектов и объектов, не находящихся на одной полосе, допускается снижение качества.
80% работы — это подготовка данных
Основатель deeplearning.ai и бывший руководитель Google Brain Эндрю Ын говорит: «во многих задачах полезно было бы изменить свою точку зрения, чтобы не только совершенствовать код, но и более системным образом совершенствовать данные».
Ын считает, что развитие машинного обучения можно ускорить, если процесс станет ориентироваться на обработку данных, а не на создание моделей. В основе традиционного ПО лежит код, а системы ИИ создаются из данных и кода, принимающего форму моделей и алгоритмов. «Когда производительность системы низка, многие команды инстинктивно стремятся улучшить код. Но во многих практических сферах применения эффективнее сосредоточиться на совершенствовании данных», — говорит Ын. Считается, что 80% машинного обучения — это очистка данных. «Если 80% нашей работы — это подготовка данных, почему мы не думаем, что обеспечение качества данных — самое важное для команды, занимающейся машинным обучением?»
Целостность — ключ к качеству данных
Для разметки данных «главное — это целостность», и особенно важна она при разработке ИИ. При разметке наборов данных метки должны быть одинаковыми во всех системах разметки и пакетах данных.
Ошибки возникают очень часто, потому что разные люди могут интерпретировать руководство по разметке данных по-разному, из-за чего набор данных становится шумным и противоречивым.
Работайте систематично и на всём протяжении жизненного цикла машинного обучения используйте проверенные инструменты и процессы. На этапе обучения модели критически важен структурированный анализ ошибок.
Разметка данных с упором на качество
В одном из случаев фоновый шум автомобиля помешал обучению алгоритма распознавания речи. При ориентировании на данные разработчики выявили бы ошибку (шум автомобиля), а затем обучили бы модель на большем объёме данных, в том числе и с шумами автомобилей. Это должно повысить целостность разметки, данные были бы помечены как что-то вроде «речи с шумным фоном, содержащим шум автомобиля».
Хотя это может показаться контринтуитивным, даже данные с раздражающим фоновым шумом автомобиля становятся качественно размеченными данными, которые, в свою очередь, становятся качественными данными для обучения.
После правильной разметки «фонового шума автомобилей» в наборе данных для машинного обучения модели алгоритм распознавания речи должен научиться понимать шум автомобиля и отличать его от речи, которую ему нужно распознавать.
Инструменты разметки данных не гарантируют качества
Нельзя недооценивать важность правильной разметки данных. Естественно, это наводит на вопрос: «Какой инструмент обработки данных подходит для моей области применения?»
Сервисы разметки данных применяются для сложных алгоритмов машинного обучения, компьютерного зрения, обработки естественных языков, дополненной реальности и аналитики данных. Компании используют свои передовые технологии в онкологических исследованиях, обучении беспилотных автомобилей и оптимизации урожайности посевов.
Cуществует широкий выбор инструментов разметки данных, специализирующихся на различных областях использования, например, Lionbridge AI, Amazon Mechanical Turk (MTurk), Computer Vision Annotation Tool, SuperAnnotate, LightTag, DataTurks, Playment и Tagtog. Некоторые из них бесплатны, за большинство нужно платить. Некоторые лучше работают с видео, или с изображениями, или с данными лидаров.
MTurk — это краудсорсинговая площадка для разметки данных. MTurk — одно из самых дешёвых решений на рынке, но он имеет множество недостатков, в том числе отсутствие ключевых функций контроля качества. Он предоставляет очень мало возможностей обеспечения качества, тестирования работы сотрудников и подробной отчётности. Более того, тяжёлая нагрузка по управлению проектом возлагается на заказчика, требуя от него нанимать сотрудников, а также отслеживать все задачи.
Computer Vision Annotation Tool (CVAT) может похвастаться широким набором функций для разметки данных компьютерного зрения; он поддерживает такие задачи, как распознавание объектов, сегментация изображений и классификация изображений. Однако его интерфейс пользователя сложен и требует долгого освоения.
SuperAnnotate можно использовать для классификации данных изображений, видео, лидаров, текста и звука. В его расширенные функции входят автоматическое прогнозирование, трансферное обучение, инструменты управления данными и качеством. Компания утверждает, что производительность её продукта в три раза выше, чем у конкурентов.
LightTag работает только с текстовыми данными, но имеет бесплатную начальную версию. Ещё одна open-source-платформа DataTurks предоставляет сервисы для разметки текстовых, графических и видеоданных. Playment работает с изображениями и полезен для создания наборов данных для обучения моделей компьютерного зрения. Ещё один инструмент разметки текста — Tagtog может аннотировать данные и автоматически, и вручную.
Тренды разметки данных
ИИ скоро совершит революцию во множестве различных отраслей, но самым важным аспектом является разметка данных. Например, при правильной разметке снимков компьютерной томографии ИИ сможет обнаруживать в снимках КТ грудной клетки пневмонию, вызванную COVID-19.
В качестве других примеров можно привести распознавание голов людей, выявление поведения толпы на камерах видеонаблюдения для мониторинга безопасности, ликвидацию аварий и мониторинг дорожного движения. Обработка естественных языков может использоваться для распознавания сущностей, атрибутов, а также определения взаимосвязей между факторами, помогающими совершенствовать разработку лекарств.
Строительство, железнодорожные перевозки и энергетическая отрасль могут выиграть от аннотирования записанных дронами данных лидаров. Роботизированная автоматизация процессов (Robotic Process Automation, RPA) может ускорить процесс бухгалтерского учёта, обеспечив при этом отсутствие ошибок.
6 правил обеспечения качества данных
Для эффективной реализации машинного обучения следуйте этим шести простым правилам обеспечения качества данных:
Хорошие данные обладают целостностью, покрывают все пограничные случаи, имеют своевременную обратную связь с данными в продакшене и обладают нужным объёмом. Вместо того, чтобы рассчитывать на инженеров, наудачу исправляющих модель, гораздо более важной целью любой команды MLOps является обеспечение высококачественного и целостного потока данных между всеми этапами проекта машинного обучения.
«Качество данных требует определённого уровня компетентности, она требуется даже для понимания того, в чём заключена проблема», — рассказывает основатель и CEO NextGen compliance Колин Грэм.
ИИ может быть сложной в реализации технологией и передача плохих или некачественно размеченных данных почти всегда гарантирует провал. Достичь уровня, при котором качество данных контролируется в рамках стандартной эксплуатации — это не просто цель, это необходимость.
Как и когда использовать калиброванную классификационную модель с scikit-learn
Дата публикации 2018-09-03
Вместо прогнозирования значений классов непосредственно для задачи классификации может быть удобно прогнозировать вероятность наблюдения, принадлежащего каждому возможному классу.
Прогнозирование вероятностей дает некоторую гибкость, в том числе принятие решения о том, как интерпретировать вероятности, представление прогнозов с неопределенностью и предоставление более детальных способов оценки мастерства модели.
Прогнозируемые вероятности, которые соответствуют ожидаемому распределению вероятностей для каждого класса, называются калиброванными. Проблема в том, что не все модели машинного обучения способны предсказывать калиброванные вероятности.
Существуют методы как для диагностики того, насколько откалиброваны предсказанные вероятности, так и для лучшей калибровки предсказанных вероятностей с наблюдаемым распределением каждого класса. Зачастую это может привести к улучшению качества прогнозов, в зависимости от того, как оценивается навык модели.
В этом руководстве вы узнаете о важности калибровки прогнозируемых вероятностей, а также о том, как диагностировать и улучшить калибровку моделей, используемых для вероятностной классификации.
После завершения этого урока вы узнаете:
Обзор учебника
Этот урок разделен на четыре части; они есть:
Прогнозирование вероятностей
Классификационная задача прогнозирующего моделирования требует прогнозирования или прогнозирования метки для данного наблюдения.
В качестве альтернативы непосредственному прогнозированию метки модель может прогнозировать вероятность наблюдения, принадлежащего каждой возможной метке класса.
Это обеспечивает некоторую гибкость как в способе интерпретации и представления прогнозов (выбор порога и неопределенности прогноза), так и в способе оценки модели.
Хотя модель может быть в состоянии предсказать вероятности, распределение и поведение вероятностей могут не соответствовать ожидаемому распределению наблюдаемых вероятностей в обучающих данных.
Это особенно характерно для сложных нелинейных алгоритмов машинного обучения, которые напрямую не делают вероятностные прогнозы и вместо этого используют приближения.
Распределение вероятностей может быть скорректировано, чтобы лучше соответствовать ожидаемому распределению, наблюдаемому в данных. Эта корректировка называется калибровкой, например, калибровкой модели или калибровкой распределения вероятностей классов.
[…] Мы хотим, чтобы оцененные вероятности класса отражали истинную базовую вероятность выборки. Таким образом, прогнозируемая вероятность класса (или значение, подобное вероятности) должна быть хорошо откалибрована. Чтобы быть хорошо откалиброванными, вероятности должны эффективно отражать истинную вероятность события, представляющего интерес.
Калибровка прогнозов
Есть две проблемы в калибровке вероятностей; они диагностируют калибровку предсказанных вероятностей и сам процесс калибровки.
Диаграммы надежности (калибровочные кривые)
Диаграммы надежности являются распространенными средствами для иллюстрации свойств вероятностных систем прогнозирования. Они состоят из графика наблюдаемой относительной частоты относительно прогнозируемой вероятности, обеспечивая быстрое визуальное взаимное сравнение при настройке вероятностных систем прогнозирования, а также документирование производительности конечного продукта.
В частности, прогнозируемые вероятности делятся на фиксированное количество сегментов по оси X. Количество событий (класс = 1) затем подсчитывается для каждого бина (например, относительная наблюдаемая частота). Наконец, количество нормализовано. Результаты затем наносятся на график в виде линейного графика.
Эти участки обычно называют ‘надежность‘Диаграммы в прогнозной литературе, хотя также могут быть названы‘калибровка‘Графики или кривые, поскольку они суммируют, насколько хорошо откалиброваны вероятности прогноза.
Чем лучше откалиброван или более надежен прогноз, тем ближе точки появятся вдоль главной диагонали от нижнего левого до правого верхнего угла графика
Положение точек или кривой относительно диагонали может помочь интерпретировать вероятности; например:
Вероятности, по определению, являются непрерывными, поэтому мы ожидаем некоторого отделения от линии, часто изображаемой в виде S-образной кривой, показывающей пессимистические тенденции, переоценивающие низкие вероятности и недооценивающие высокие вероятности.
Диаграммы надежности обеспечивают диагностику для проверки достоверности прогнозного значения Xi. Грубо говоря, прогноз вероятности достоверен, если событие действительно происходит с наблюдаемой относительной частотой, соответствующей значению прогноза.
Диаграмма надежности может помочь понять относительную калибровку прогнозов из различных прогнозных моделей.
Калибровка вероятности
Прогнозы, сделанные прогнозирующей моделью, могут быть откалиброваны.
Калиброванные прогнозы могут (или не могут) привести к улучшенной калибровке на диаграмме надежности.
Некоторые алгоритмы подходят таким образом, что их предсказанные вероятности уже откалиброваны. Не вдаваясь в детали, почему логистическая регрессия является одним из таких примеров.
Другие алгоритмы напрямую не производят предсказания вероятностей, и вместо этого предсказание вероятностей должно быть аппроксимировано. Некоторые примеры включают нейронные сети, опорные векторные машины и деревья решений.
Прогнозируемые вероятности этих методов, скорее всего, не будут откалиброваны и могут быть изменены путем калибровки.
Существует два популярных подхода к калибровке вероятностей; это масштабирование Платт и изотоническая регрессия.
Platt Scaling более прост и подходит для диаграмм надежности с S-образной формой. Изотоническая регрессия является более сложной, требует гораздо больше данных (в противном случае она может переписаться), но может поддерживать диаграммы надежности с различными формами (непараметрически).
Обратите внимание, и это действительно важно: лучше откалиброванные вероятности могут или не могут привести к лучшим прогнозам на основе классов или вероятностей. Это действительно зависит от конкретной метрики, используемой для оценки прогнозов.
Фактически, некоторые эмпирические результаты показывают, что алгоритмы, которые могут извлечь большую пользу из калибровки прогнозируемых вероятностей, включают SVM, деревья решений в пакетах и случайные леса.
[…] После калибровки лучшими методами являются увеличенные деревья, случайные леса и SVM.
Как откалибровать вероятности в Python
Библиотека машинного обучения scikit-learn позволяет как диагностировать калибровку вероятности классификатора, так и калибровку классификатора, который может прогнозировать вероятности.
Диагностировать калибровку
Вы можете диагностировать калибровку классификатора, создав диаграмму достоверности фактических вероятностей в зависимости от прогнозируемых вероятностей в тестовом наборе.
В scikit-learn это называется калибровочной кривой.
Это может быть реализовано путем первого расчетаФункция calib_curve (), Эта функция принимает истинные значения класса для набора данных и прогнозируемые вероятности для основного класса (класс = 1). Функция возвращает истинные вероятности для каждого бина и предсказанные вероятности для каждого бина. Количество бункеров можно указать черезn_binsаргумент и по умолчанию 5.
Например, ниже приведен фрагмент кода, показывающий использование API:
Калибровать классификатор
Классификатор можно откалибровать в scikit-learn с помощьюCalibratedClassifierCVучебный класс.
Есть два способа использовать этот класс: предварительная настройка и перекрестная проверка.
Вы можете разместить модель в обучающем наборе данных и откалибровать эту модель предпочтения, используя набор проверочных данных.
Например, ниже приведен фрагмент кода, показывающий использование API:
С другой стороны, CalibratedClassifierCV может соответствовать нескольким копиям модели, используя перекрестную проверку в k-кратном размере, и калибровать вероятности, предсказанные этими моделями, с использованием набора удержания. Прогнозы делаются с использованием каждой из обученных моделей.
Например, ниже приведен фрагмент кода, показывающий использование API:
Класс CalibratedClassifierCV поддерживает два типа калибровки вероятности; в частности, параметрическийсигмоид‘Метод (метод Платта) и непараметрический‘изотонический‘Метод, который можно указать через theметод‘Аргумент.
Отработанный пример калибровки вероятностей SVM
Мы можем провести обсуждение калибровки бетона с некоторыми проработанными примерами.
В этих примерах мы приспособим машину опорных векторов (SVM) к проблеме с шумовой двоичной классификацией и используем модель для прогнозирования вероятностей, затем просмотрим калибровку с использованием диаграммы надежности, откалибруем классификатор и просмотрим результат.
SVM является хорошей моделью-кандидатом для калибровки, потому что она не обеспечивает естественного прогнозирования вероятностей, то есть вероятности часто не калибруются.
Заметка о SVM: вероятности можно предсказать, вызвавdecision_function ()функция на модели подгонки вместо обычногоpredict_proba ()функция. Вероятности не нормированы, но могут быть нормализованы при вызовеcalibration_curve ()функция путем установки ‘нормализовать‘Аргумент‘Правда«.
Приведенный ниже пример соответствует модели SVM для тестовой задачи, прогнозируемых вероятностей и отображает калибровку вероятностей в виде диаграммы надежности,
При выполнении примера создается диаграмма надежности, показывающая калибровку предсказанных вероятностей SVM (сплошная линия) по сравнению с идеально откалиброванной моделью по диагонали графика (пунктирная линия).
Мы можем увидеть ожидаемую S-образную кривую консервативного прогноза.
Мы можем обновить пример, чтобы он соответствовал SVM через класс CalibratedClassifierCV, используя 5-кратную перекрестную проверку, используя наборы отклонений для калибровки предсказанных вероятностей.
Полный пример приведен ниже.
Выполнение примера создает диаграмму надежности для откалиброванных вероятностей.
Форма откалиброванных вероятностей различна, намного лучше обнимая диагональную линию, хотя в верхнем квадранте она все еще недостаточно прогнозируется.
Визуально график подсказывает лучшую откалиброванную модель.
Мы можем сделать контраст между двумя моделями более очевидным, включив обе диаграммы надежности на одном графике.
Полный пример приведен ниже.
Выполнение примера создает единую диаграмму надежности, показывающую как калиброванную (оранжевую), так и некалиброванную (синюю) вероятности.
На самом деле это не сравнение яблок и яблок, поскольку предсказания, сделанные с помощью калиброванной модели, на самом деле представляют собой комбинацию из пяти подмоделей.
Тем не менее, мы видим заметную разницу в достоверности калиброванных вероятностей (очень вероятно, вызванных процессом калибровки).
Дальнейшее чтение
Этот раздел предоставляет больше ресурсов по теме, если вы хотите углубиться.
Книги и документы
статьи
Резюме
В этом руководстве вы узнали о важности калибровки предсказанных вероятностей, а также о том, как диагностировать и улучшить калибровку моделей, используемых для вероятностной классификации.
В частности, вы узнали:
У вас есть вопросы?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.







