Проверка модели в ML (Часть I)

Определение:

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

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

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

Какой метод проверки подходит для моего варианта использования?

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

Будут продемонстрированы следующие методы проверки:

  • Повторная замена
  • Поезд/тестовый сплит
  • k-кратная перекрестная проверка
  • Перекрестная проверка с исключением
  • Перекрестная проверка с исключением одной группы
  • Случайная подвыборка
  • Начальная загрузка
  • Вложенная перекрестная проверка
  • Перекрестная проверка временных рядов
  • Критерий знакового ранга Уилкоксона
  • Тест Макнемара
  • 5x2CV парный t-тест
  • Комбинированный F-тест 5x2CV

1-Повторная замена

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

2- Метод сплит-тестирования поезда

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

Однако разделение обучения/тестирования имеет свои опасности — что, если разделение, которое мы делаем, не является случайным? Что, если в одном подмножестве наших данных есть только люди из определенного штата, сотрудники с определенным уровнем дохода, но не с другим уровнем дохода, только женщины или только люди определенного возраста? (представьте себе файл, заказанный одним из них). Это приведет к переоснащению, хотя мы пытаемся этого избежать! Вот где вступает в действие перекрестная проверка.

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

Этой проблемы можно избежать с помощью другого метода проверки, такого как Кратная перекрестная проверка.

3-Возможность проверки

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

Почему? Потому что модель ищет гиперпараметры, соответствующие конкретному поезду/тесту, который вы сделали.

Чтобы решить эту проблему, вы можете создать дополнительный набор holdout. Часто это 10% данных, которые вы не использовали ни на одном из этапов обработки/проверки.

Типичные шаги для выполнения проверки модели с использованием Holdout:

  1. включают обучение модели или, как правило, нескольких моделей в обучающем наборе. Проверочный набор, который представляет собой отложенный набор из обучающего набора, т. е. отложенную часть обучающего набора, затем используется для оптимизации гиперпараметров моделей и оценки модели.
  2. Таким образом, набор проверки используется для настройки различных гиперпараметров и выбора наиболее эффективного алгоритма. Однако, чтобы полностью определить правильность выбранного алгоритма, мы применяем модель к обучающему набору данных.
  3. Это делается потому, что, когда мы настраиваем гиперпараметры на основе проверочного набора, мы в конечном итоге немного переобучаем нашу модель на основе проверочного набора.
  4. Таким образом, точность, которую мы получаем из проверочного набора, не считается окончательной, и для оценки окончательной выбранной модели используется другой отложенный набор данных, который является тестовым набором данных, а обнаруженная здесь ошибка считается ошибкой обобщения.

СОВЕТ. Если вы используете только разделение обучения/тестирования, я бы посоветовал сравнить распределения ваших наборов обучения и тестирования. Если они существенно различаются, у вас могут возникнуть проблемы с обобщением. Используйте Фасеты, чтобы легко сравнивать их распределения.

4-кратная перекрестная проверка (k-Fold CV)

В K-Folds Cross Validation мы разделяем наши данные на k различных подмножеств (или складок). Мы используем подмножества k-1 для обучения наших данных и оставляем последнее подмножество (или последнюю складку) в качестве тестовых данных. Затем мы усредняем модель по каждой из складок, а затем завершаем нашу модель. После этого мы тестируем его на тестовом наборе.

Преимущество заключается в том, что все наблюдения используются как для обучения, так и для проверки, а каждое наблюдение используется один раз для проверки. Обычно мы выбираем либо i=5, либо k=10, так как они находят хороший баланс между вычислительной сложностью и точностью проверки:

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

Примечание:

Существует два типа перекрестной проверки: полная и неполная перекрестная проверка. Исчерпывающие методы перекрестной проверки - это методы перекрестной проверки, которые изучают и проверяют все возможные способы разделения исходной выборки на обучающий и проверочный наборы, такие как перекрестная проверка без исключения и перекрестная проверка с исключением одного. Неполные методы перекрестной проверки не учитывают все способы разделения исходной выборки. К методам неполной перекрестной проверки относятся метод Holdout и k-кратная перекрестная проверка.

5- Перекрестная проверка с исключением одного (LOOCV)

Вариантом k-Fold CV является перекрестная проверка без исключения (LOOCV). LOOCV использует каждую выборку в данных как отдельный тестовый набор, в то время как все оставшиеся выборки образуют обучающий набор. Этот вариант идентичен k-кратному CV, когда k = n(количество наблюдений).

LOOCV – это вариант K-кратного, где k=n.

ПРИМЕЧАНИЕ.LOOCV требует больших вычислительных ресурсов, поскольку модель необходимо обучать n раз. Делайте это только в том случае, если данных мало или если вы можете справиться с таким количеством вычислений.

Преимущества LOOCV

  • Гораздо меньше предвзятости, поскольку мы использовали весь набор данных для обучения по сравнению с подходом с проверочным набором, когда мы используем только подмножество (60% в нашем примере выше) данных для обучения.
  • Нет случайности в данных обучения/тестирования, так как многократное выполнение LOOCV даст одинаковые результаты.

Недостатки LOOCV

  • MSE будет варьироваться, поскольку в тестовых данных используется одно наблюдение. Это может привести к изменчивости. Если точка данных является выбросом, то изменчивость будет намного выше.
  • Исполнение дорогое, так как модель нужно подгонять n раз.

Перекрестная проверка 6-Leave-one-group-out (LOGOCV)

Проблема с k-Fold CV заключается в том, что вы можете захотеть, чтобы каждая складка содержала только одну группу. Например, допустим, у вас есть набор данных о 20 компаниях и их клиентах, и вы хотите предсказать успех этих компаний. Чтобы сохранить складки «чистыми» и содержать только одну компанию, вы должны создать складку для каждой компании. Таким образом, вы создаете версию k-Fold CV и LOOCV, в которой вы пропускаете одну компанию/группу.

Вывод:

какой метод мы должны использовать? Сколько складок? Что ж, чем больше у нас будет складок, мы будем уменьшать ошибку из-за смещения, но увеличивать ошибку из-за дисперсии; стоимость вычислений, очевидно, также возрастет — чем больше у вас будет сверток, тем больше времени потребуется для их вычисления и вам потребуется больше памяти. При меньшем количестве кратностей мы уменьшаем ошибку из-за дисперсии, но ошибка из-за смещения будет больше. Это также будет дешевле в вычислительном отношении. Поэтому в больших наборах данных обычно рекомендуется k=3. В небольших наборах данных, как я упоминал ранее, лучше всего использовать LOOCV.