Перейти к основному содержимому

Оценка качества прогнозов

Мы можем использовать для прогнозирования разные модели или одну и ту же модель, но при разных значениях гиперпараметров. Также для обработки варьируют весь конвейер обработки данных (пайплайн, pipeline), включающий как предобработку данных (заполнение пропущенных значений, отсев аномальных наблюдений, отбор и кодирование признаков), так и итоговое построение прогнозов. Важно уметь оценивать качество модели, чтобы подобрать самую точную модель и её наилучшую конфигурацию, а также знать, на какое качество работы мы можем рассчитывать на новых данных.

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

Отложенная валидационная выборка

В этом подходе предлагается разбить размеченную выборку случайно на две подвыборки:

  • обучающую (training set, ~80% объектов), на которой настраивать параметры модели w\mathbf{w}.

  • валидационную (validation set, ~20% объектов), на которой оценивать её качество.

train-val.png

Таким образом, множество индексов всех объектов {1,2,...N}\{1,2,...N\} случайным образом разбивается на два подмножества:

  • ItrainI_{train} - индексы объектов обучающей выборки

  • IvalI_{val} - индексы объектов валидационной выборки

Настройка параметров производится по обучающим объектам (I|I| - число элементов в множестве II):

L(wXtrain,Ytrain)=1ItrainiItrainL(fw(xi),yi)minwL(\mathbf{w}|X_{train},Y_{train})=\frac{1}{|I_{train}|}\sum_{i \in I_{train}}\mathcal{L}(f_{\mathbf{w}}(\mathbf{x}_{i}),\,y_{i}) \to \min_\mathbf{w}

Также выше можно производить настройку с регуляризацией.

Оценка качества прогнозов производится по объектам валидационной выборки:

L(wXval,Yval)=1IvaliIvalL(fw(xi),yi)L(\mathbf{w}|X_{val},Y_{val})=\frac{1}{|I_{val}|}\sum_{i \in I_{val}}\mathcal{L}(f_{\mathbf{w}}(\mathbf{x}_{i}),\,y_{i})

В этом случае регуляризация не используется, т.к. нас интересует только точность итоговых прогнозов.

Данный подход также называется отложенным контролем (held-out data).

Итоговая модель

После того, как мы оценили качество модели на валидационной выборке, итоговая модель обучается на всех размеченных данных (и на обучающей, и на валидационной выборке). Так мы повысим качество итоговой модели, настраивая её по всем располагаемым размеченным данным.

Кросс-валидация

Недостатком отложенной валидационной выборки является то, что приходится обучать модель на подмножестве данных, а не на всех, поскольку часть данных резервируется на оценку качества (валидационную выборку). Валидационная выборка должна занимать существенную пропорцию от всех данных, чтобы репрезентативно представлять разнообразие новых наблюдений в будущем. Из-за этого тестируемая модель будет в общем получаться хуже, чем итоговая модель, которая обучается на всех данных.

Кросс-валидация (перекрёстный контроль, кросс-проверка, cross-validation) - другой подход, который позволяет задействовать больше размеченных объектов для обучения, и все размеченные объекты для тестирования качества прогнозов, что обеспечивает более точное оценивание качества.

Для этого размеченная выборка делится на K равных блоков (K обычно берется равным от 4 до 8). Далее каждый из этих блоков поочерёдно исключается, а модель настраивается по оставшимся блокам, как показано на рисунке:

cross-validation.png

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

Альтернативная итоговая модель

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

Такая конфигурация может показывать более высокую точность. Скорость обучения у неё больше (не нужно настраивать модель сразу на всех данных), но скорость прогнозирования ниже (нужно каждый раз усреднять по K моделям).

Поскольку модель в кросс-валидации перенастраивается K раз, то можно исследовать стабильность потерь и стабильность настроенных параметров по отдельным блокам. Также можно следить за тем, насколько рассогласованными получаются прогнозы для тестовых данных по настроенным KK моделям.

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

В частном случае, когда K=N, модель будет применена к каждому объекту в отдельности. Такой метод называется скользящим контролем (leave-one-out), но применяется только для моделей с очень быстрой настройкой, поскольку требует перенастройки модели N раз.

Особенности применения методов

Случайное перемешивание

Предобработка данных перед тестированием

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

Стратифицированное разбиение

Проблема при перемешивании может заключаться в том, что какие-то важные категориальные признаки или отклик (в задаче классификации) могут иметь несбалансированное распределение (одни категории или классы встречаются существенно чаще, чем другие, unbalanced classification). В этом случае целесообразно производить случайное разбиение на обучающую и валидационную выборку со стратификацией (stratified split), т.е. таким образом, чтобы распределение категорий после разбиения на подвыборки совпадало с исходным распределением на всей выборке, как для случая классов показано ниже:

stratified split.png

Учет случайности результатов

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

Анализ результатов

Полученное качество можно визуализировать в виде сравнительной таблицы качества работы разных моделей или одной и той же модели, но при разных значениях гиперпараметров. В случае кросс-валидации полезно добавлять информацию о стандартном отклонении (standard deviation) оценки, полученной по разным блокам кросс-валидации.

Также информативно строить графики зависимости качества прогнозов от отдельного гиперпараметра (validation curve) и от размера обучающей выборки (learning curve), как показано ниже (источник):

Подбор гиперпараметров

С помощью валидационной выборки или кросс-валидации подбирают наилучшие гиперпараметры модели. Чаще всего гиперпараметры модели настраивают полным перебором по сетке значений (grid search) и выборов такой конфигурации, которая показывает наилучшее качество.

Вместо перебора по фиксированной сетке значений варианты гиперпараметров можно сэмплировать случайно из заданного диапазона (random search). Если настраивается не один, а сразу несколько гиперпараметров, когда среди гиперпараметров существуют как существенно, так и несущественно влияющие на функцию потерь, этот способ является более предпочтительным как обеспечивающий более разнообразный перебор значений для существенно влияющих параметров.

Существуют и более продвинутые способы перебора гиперпараметров, обеспечивающие за минимальное число проверок более быструю сходимость к наилучшей конфигурации (см. hyperparameter optimization).

Оценка качества при одновременном подборе гиперпараметров

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

  • обучающую (на которой настраиваем параметры модели)

  • валидационную (на которой настраиваем гиперпараметры модели)

  • тестовую (на которой уже тестируем качества итогового решения)

Только ответы на отдельной тестовой выборке можно считать несмещенной в результате подбора гиперпараметров, поскольку только объекты этой выборки модель увидит в первый раз. Существует и кросс-валидационный подход многократного разбиения не на две, а на три подвыборки (nested cross-validation) для одновременного подбора гиперапаметров и оценки качества модели.

Оценка качества прогнозов для временных рядов

Для оценки качества прогнозирования временных рядов (последовательности наблюдений, которые поступают динамически по времени) нельзя использовать обычные подходы, поскольку они приведут к случайному перемешиванию объектов во времени, и мы начнём тестировать качество прогнозов более ранних наблюдений по более поздним данным. Поэтому для временных рядов используется контроль по времени (out-of-time control), при котором усредняется качество прогнозов на один или несколько шагов вперед при всевозможных временных разбиениях на известные и будущие наблюдения, подлежащие прогнозированию, как показано на рисунке: