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

Цель машинного обучения с учителем - классифицировать немаркированные данные. Мы хотим, чтобы алгоритмы сообщали нам, совершит ли заемщик дефолт, покупатель совершит покупку, изображение содержит кошку, собаку, злокачественную опухоль или доброкачественный полип. Алгоритмы учатся делать эти классификации с использованием помеченных данных, то есть данных, в которых мы знаем, действительно ли заемщик выполнил свои обязательства, совершил ли покупатель покупку и что на самом деле показывает блок пикселей. Обычно исследователи берут помеченные данные и разделяют их на три направления: обучение, проверка и тестирование / выдержка (терминология иногда отличается). Они обучают сотни моделей на данных поезда и выбирают одну модель, которая хорошо работает с данными проверки. Причина использования только подмножества помеченных данных для обучения алгоритма состоит в том, чтобы убедиться, что алгоритмы хорошо работают с любыми данными, а не только с данными, используемыми для обучения алгоритма. Исследователи часто повторяют этот шаг несколько раз, выбирая разные разбиения на обучение и проверку, чтобы убедиться, что производительность модели не зависит от конкретных данных проверки (k-кратная перекрестная проверка). В качестве последнего шага исследователи оценивают производительность модели на еще невидимых данных (тестовый набор). Это дает представление о том, насколько хорошо модель будет работать с немаркированными данными. Эта классическая установка проиллюстрирована на рисунке ниже:

В большом количестве приложений данные имеют временное измерение, так что помеченные данные - это прошлое, а немаркированные данные - будущее. Например, мы уже знаем, какие заемщики или клиенты не выполнили свои обязательства или совершили покупку в прошлом. Мы хотим знать, кто из них сделает это в будущем. В этом случае цель алгоритма - заранее предсказать метки. Это означает, что он должен работать не только со вчерашними, но и с завтрашними данными. Я спрашиваю, как измерение времени должно быть включено в классическую настройку поезда / проверки / тестирования. Это, несомненно, будет иметь значение, если процессы меняются со временем. Оказывается, есть целое подполе, занимающееся этими вопросами. Подходы варьируются от настройки скользящего окна над обучающими данными до активного тестирования изменений в лежащих в основе отношений. В этом посте я рассмотрю несколько вариантов настройки поездов, проверки и тестовых данных.

Вариант 1: своевременная проверка, своевременная проверка

Давайте посмотрим, что произойдет, если мы проигнорируем временное измерение данных и разделим все помеченные данные независимо от их временного измерения. Мы обучаем, проверяем и тестируем модель, используя данные за тот же период времени. Мы делаем прогнозы для новых данных (например, на 2019 год), используя модель, обученную, проверенную и протестированную на помеченных данных за 2015–2018 годы. Рисунок ниже иллюстрирует эту настройку. Преимущество состоит в том, что мы используем самые свежие данные для обучения модели. Недостатком является то, что он предполагает, что отношения, существовавшие в прошлом, останутся такими же в будущем. Если отношения меняются со временем, наши оценочные показатели производительности (которые мы рассчитали с использованием своевременных тестовых данных) завышают истинную производительность модели, т. Е. После развертывания модель будет работать хуже, чем мы ожидали.

Вариант 2: своевременная проверка, вневременной тест

Другая возможность состоит в том, что мы продержимся в 2018 году, обучим модель, используя данные за 2015–2017 годы, и протестируем ее на данных 2018 года. Преимущество этого подхода в том, что мы явно оцениваем способность модели прогнозировать несвоевременность. Недостаток - возможность прогнозирования вне времени не учитывается при построении модели. Это потому, что мы выбираем модель, которая хорошо работает с данными проверки вовремя. Более того, если мы не переобучаем модель с использованием полных данных за 2015–2018 годы, мы не будем использовать самые последние данные для прогнозирования.

Вариант 3: «вперед»

Роджер Штайн предлагает обучающие модели на последовательных (потенциально скользящих) окнах данных и делать прогнозы на следующий период времени. Каждый раз мы переобучаем модель, используя все наблюдения за определенный момент времени, и делаем прогнозы на следующий период времени. Прогнозы из каждого окна объединяются в один набор прогнозов. Мы делаем это для множества разных моделей и выбираем ту, которая дает наилучшие комбинированные прогнозы. Преимущество этого подхода заключается в том, что при построении модели (т. Е. Проверке того, какие модели работают лучше всего) явно учитывается способность модели делать несвоевременные прогнозы. Поскольку модель обновляется для каждого окна, этот подход имитирует периодическое переобучение модели, которое происходит (или должно произойти) на практике. Недостатком подхода является то, что мы всегда проверяем прогнозы на одном и том же наборе данных, а не на случайно выбранных данных. (Возможно, предоставление части тестовых данных могло бы решить эту проблему.)

Переучивать или не переучиваться

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

В сети существуют некоторые разногласия по поводу необходимости повторного обучения модели с использованием всех данных обучения и тестирования перед развертыванием. Кун и Джонсон кажутся довольно явными, когда в главе о чрезмерной подгонке, разделении данных и настройке модели они говорят: Затем мы строим окончательную модель со всеми данными обучения, используя выбранные параметры настройки. (стр.65). Точно так же Эндрю Нг в одной из своих конспектов лекции говорит, что после выбора модели из процедуры перекрестной проверки мы можем при желании переобучить модель на всем обучающем наборе.

Полезно провести различие между параметрами модели и гиперпараметрами (также известными как параметры настройки). Гиперпараметры определяют структуру модели и, как правило, не могут быть оценены на основе данных. Они включают такие вещи, как сложность дерева, k в алгоритме KNN, набор функций, функциональная форма (например, линейная или квадратичная) и т. Д. Напротив, параметры модели включают коэффициенты в регрессии, правила дерева, опорные векторы. Их можно оценить с помощью данных. Этап построения модели - это поиск гиперпараметров. После того, как гиперпараметры (то есть структура модели) подтверждены, кажется, мало причин не использовать как можно больше данных для получения наиболее точных оценок параметров модели. Эти параметры следует использовать для развертывания модели и выполнения классификаций или прогнозов.

Заключение

Таким образом, если мы последуем классической настройке и проигнорируем временное измерение наших данных, как в варианте 1, мы понятия не имеем, как модель будет работать с несвоевременными данными. В варианте 2 у нас, по крайней мере, есть оценка несвоевременной производительности модели. Однако только если мы сделаем что-то вроде варианта 3, мы будем строить модели с намерением прогнозировать будущее. Независимо от того, что мы делаем, переобучение модели с использованием всех помеченных данных перед тем, как делать прогнозы, кажется хорошей идеей.

Мне сложно найти примеры приложений, в которых нет измерения времени. Я полагаю, что груда изображений МРТ, из которых только некоторые были помечены, является одним из примеров, но я считаю, что эти разовые проекты редки. Более того, хотя некоторые процессы стабильны во времени (например, классификация погоды или изображений - собака сегодня будет выглядеть так же, как собака завтра), такие процессы, как поведение клиентов, неизбежно изменятся со временем. Поэтому удивительно, что обсуждения (и реализация) вневременного тестирования и валидации не стали более повсеместными. Скорее всего, несвоевременная производительность хуже, чем своевременная, особенно если у вас много данных с метками во времени, не очень длинные временные ряды и нестационарный процесс. Однако отказ от проведения какой-либо оценки вне времени может беспокоить разработчиков, поскольку последующие данные покажут, что модель работает хуже, чем указанные своевременные показатели производительности.