Прогнозируем реальные вероятности!
Сегодня, когда прогнозирование с помощью машинного обучения применяется в промышленности, медицине, бизнесе, цена минимальной ошибки и погрешности высока. Для любой аналитики это будет полезно, так как выходные данные станут более достоверными, а значит и более подходящими для дальнейшей работы с ними.
Так как откалибровать вашу модель? Для начала необходимо построить так называемый калибратор, то есть вторую модель, способную помочь приблизить вероятности к реальным.
Калибровку не стоит проводить на тех же данных, что применялись для обучения первой модели. Это приведет к смещению, так как производительность модели на его обучающих данных будет выше, чем на новых.
Для калибровки можно использовать достаточно большое количество методов:
- Гистограммная калибровка;
- Изотоническая регрессия;
- Калибровка Платта;
- Логистическая регрессия;
- Деревья калибровки;
- Ансамблирование;
- Сглаживание меток;
- Использование фокальной ошибки и т.д.
Их применение варьируется в зависимости от ситуации.
Откалибровывать нашу модель будем в Python. Поэтому рассмотрим калибровку на примере изотонической и логистической регрессий, так как они уже реализованы в библиотеке SciKit-Learn и будут достаточно показательны.
Вот исходный тестовый набор:
Следующим шагом будет обучение. Воспользуемся случайным лесом (RandomForestClassifier):
Нам необходимо обучить калибратор на основе обеих регрессий, Воспользуемся результирующими данными нашего классификатора:
Логистическая регрессия строит прогнозы в бинарном значении, то есть в диапазоне от 0 до 1.
Изотоническая регрессия подгоняет линию к последовательности наблюдений.
В итоге получаем 3 варианта. Но какая из этих моделей ближе всего к реальным показателям? Метрикой будет служить ожидаемая ошибка калибровки ( ECE), то есть значение ошибок отдельных ячеек. Иногда используют показатель максимальной ошибки калибровки.
Ненадолго вернемся к теории, чтобы упомянуть, что для оценки калибровки применяется диаграмма надежности. Это гистограмма, где наблюдения, принадлежащие к одной ячейки, имеют равную вероятность. Чем кривая ближе к биссектрисе на графике, тем выше степень откалиброванности модели.
Диаграмма является отображением функции распределения вероятности. Число столбцов (правильнее будет называть их группами) можно найти с помощью:
- формулы Стерджеса;
- правила Райса;
- формулы Доана;
- правила Скотта;
- правила Фридмана-Диакониса.
Так вот в средней ошибке калибровки количество ячеек (n) и будет соответствовать числу групп. Определим это количество с помощью правила Фридмана-Диакониса, так как оно встроено в функцию histogram в numpy.
IQR– это межквартильный размах. Грубо говоря, это разница между третьим и первым квартилями, которые делят упорядоченный набор данных на четыре части.
В итоге необходимая нам метрика выглядит так:
Наконец, сравним калибровку трех моделей. ECE будет следующей:
RandomForest — 7.0%
RandomForest + LogisticReg — 2.3%
RandomForest + IsotonicReg — 1.2%
Таким образом, изотоническая регрессия показала самое маленькое отклонение от реальной вероятности в 1.2%. Эта будет наиболее подходящая модель с точки зрения калибровки.
Калибровка моделей необходима, если нам нужны истинные вероятностные результаты, а не их приближения. Особенно её применение важно в отношении сложных нелинейных алгоритмов, поскольку они предоставляют неточные прогнозы. В целом калибровка дает гибкость представления прогнозов, а также вариативность в оценке модели. Если говорить обобщенно, то это важный этап формирования реальных прогнозов. Теперь вы знаете как правильно ей пользоваться.