Верите ли в надёжный ML так же, как в него верим мы?
Наверняка вам приходилось сталкиваться с требованиями калибровки модели, интерпретируемости, объяснимости. Но что делать, если в какой-то момент нужно получить ответ на вопрос:
Тут нам на помощь приходит conformal prediction. Это подход, который добавляет к предсказаниям модели оценку неопределённости.
Обычная модель говорит: спрос завтра будет 100 единиц.
Conformal prediction говорит: спрос завтра, скорее всего, будет от 80 до 125 единиц.
В случае классификации обычная модель говорит: на фотографии объект А.
Conformal prediction говорит: наиболее вероятно, что на изображении объект A или C.
Где это может быть полезно?
• Медицина. В медицинских задачах один уверенный, но неправильный диагноз может стоить дорого. Conformal prediction позволяет модели не притворяться всезнающей. Вместо одного диагноза она может выдать несколько вероятных вариантов. Для врача это дополнительная подсказка, куда смотреть внимательнее.
• Предиктивное обслуживание. Вместо точечной оценки мы получаем окно риска, когда важное оборудование выйдет из строя.
• Ритейл. Прогноз вида «завтра мы продадим 407 упаковок мороженого» выглядит слишком магически и не даёт полноты картины спроса. Диапазон прогнозов же удобнее для управления запасами: можно оценить риск дефицита или переполненного склада.
Как это работает?
1. У нас есть обученная модель. Мы берём отдельную часть данных, которую модель не видела во время обучения. Обычно её называют калибровочной выборкой.
2. На этой выборке мы смотрим, насколько сильно модель ошибается.
3. Мы собираем такие ошибки и выбираем порог, который покрывает нужную долю случаев. Например, хотим 90% надёжности — берём такую величину ошибки, чтобы примерно 90% прошлых правильных ответов попадали внутрь соответствующего интервала.
4. После этого для нового объекта модель делает предсказание, а мы добавляем вокруг него интервал.
Главная идея: если модель на похожих данных обычно ошибалась не больше, чем на определенную величину, мы используем эту величину как защитный «зазор» вокруг будущих предсказаний.
Как это использовать?
Для быстрого старта можно посмотреть на MAPIE. Это библиотека в стиле scikit-learn, которая позволяет строить prediction intervals для регрессии и prediction sets для классификации. Ещё один хороший вариант — PUNCC. Она более гибкая и позволяет применять conformal prediction поверх разных моделей, включая sklearn-модели, нейросети и кастомные пайплайны.
💜 Этот пост написал Виталий Прахов, дата-сайентист в Точка Банк
Наверняка вам приходилось сталкиваться с требованиями калибровки модели, интерпретируемости, объяснимости. Но что делать, если в какой-то момент нужно получить ответ на вопрос:
Насколько можно доверять этому конкретному предсказанию?
Тут нам на помощь приходит conformal prediction. Это подход, который добавляет к предсказаниям модели оценку неопределённости.
Обычная модель говорит: спрос завтра будет 100 единиц.
Conformal prediction говорит: спрос завтра, скорее всего, будет от 80 до 125 единиц.
В случае классификации обычная модель говорит: на фотографии объект А.
Conformal prediction говорит: наиболее вероятно, что на изображении объект A или C.
Если формализовать задачу, то мы хотим строить такие интервалы или множества ответов, которые будут содержать правильный ответ примерно в p% случаев на новых данных. Размер этого множества показывает степень неопределённости модели: чем оно шире, тем менее уверенной выглядит модель.
Где это может быть полезно?
• Медицина. В медицинских задачах один уверенный, но неправильный диагноз может стоить дорого. Conformal prediction позволяет модели не притворяться всезнающей. Вместо одного диагноза она может выдать несколько вероятных вариантов. Для врача это дополнительная подсказка, куда смотреть внимательнее.
• Предиктивное обслуживание. Вместо точечной оценки мы получаем окно риска, когда важное оборудование выйдет из строя.
• Ритейл. Прогноз вида «завтра мы продадим 407 упаковок мороженого» выглядит слишком магически и не даёт полноты картины спроса. Диапазон прогнозов же удобнее для управления запасами: можно оценить риск дефицита или переполненного склада.
Как это работает?
1. У нас есть обученная модель. Мы берём отдельную часть данных, которую модель не видела во время обучения. Обычно её называют калибровочной выборкой.
2. На этой выборке мы смотрим, насколько сильно модель ошибается.
3. Мы собираем такие ошибки и выбираем порог, который покрывает нужную долю случаев. Например, хотим 90% надёжности — берём такую величину ошибки, чтобы примерно 90% прошлых правильных ответов попадали внутрь соответствующего интервала.
4. После этого для нового объекта модель делает предсказание, а мы добавляем вокруг него интервал.
Главная идея: если модель на похожих данных обычно ошибалась не больше, чем на определенную величину, мы используем эту величину как защитный «зазор» вокруг будущих предсказаний.
Важно помнить, что conformal prediction работает хорошо, когда будущие данные похожи на те, на которых мы калибровались. А если мир резко изменился — например, случилась пандемия, кризис или внезапный хайп в социальных сетях — прошлые ошибки могут плохо описывать будущие.
Как это использовать?
Для быстрого старта можно посмотреть на MAPIE. Это библиотека в стиле scikit-learn, которая позволяет строить prediction intervals для регрессии и prediction sets для классификации. Ещё один хороший вариант — PUNCC. Она более гибкая и позволяет применять conformal prediction поверх разных моделей, включая sklearn-модели, нейросети и кастомные пайплайны.
💜 Этот пост написал Виталий Прахов, дата-сайентист в Точка Банк