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

Почему модели теряют устойчивость?

Давайте разберемся, используя нижеприведенную иллюстрацию:

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

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

Что такое перекрестная проверка?

Перекрестная проверка определяется как:

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

Мы также можем сказать, что это метод проверки того, как статистическая модель обобщается на независимый набор данных.

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

Почему традиционный метод удержания не работает?

Задержка - это классический «простейший вид перекрестной проверки». В этом методе мы случайным образом разделяем наши данные на два: набор для обучения и тестирования / проверки, то есть набор для удержания. Затем мы обучаем модель на обучающем наборе данных и оцениваем модель на наборе данных Test / Validation. Обычно при использовании метода удержания используется 80% данных для обучения, а оставшиеся 20% данных - для тестирования.

Не трогай тестовый набор

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

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

Общие методы перекрестной проверки:

Теперь мы рассмотрим несколько распространенных методов перекрестной проверки.

1. Подход к набору валидации:

Этот подход очень похож на метод удержания. Мы оставляем 50% набора данных для проверки, а остальные 50% - для обучения модели.

Основным недостатком этого подхода является то, что, поскольку мы обучаем нашу модель только на 50% доступных данных, что приводит к неполному соответствию.

2. Отключите перекрестную проверку P (LPOCV):

Этот метод перекрестной проверки исключает данные P точек из обучающих данных, т.е. если в исходной выборке есть N точек данных, тогда N-P выборки используются для обучения модели, а P точек используются в качестве набора для тестирования / проверки.

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

Менее затратный с точки зрения вычислений случай LPOCV - это случай, когда P=1 не страдает от интенсивных вычислений, поскольку количество возможных комбинаций равно количеству точек данных в исходной выборке или просто N . Этот метод называется Перекрестная проверка без исключения (LOOCV).

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

3. Перекрестная проверка K-Fold:

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

Итак, нам нужен метод, который предоставляет достаточно данных для обучения модели, а также оставляет достаточно данных для проверки. Перекрестная проверка K-Fold делает именно это.

Это дает модель с низким диаметром по сравнению со всеми другими методами. Его легко реализовать, и он хорошо работает. Вот эти шаги:

  1. Случайным образом разбейте весь набор данных на ksubsets.
  2. Для каждого k-кратного тренинга модель на k-1 подмножествах набора данных. Затем протестируйте модель на kth подмножестве (тестовом наборе).
  3. Запишите ошибку для каждого из этих прогнозов.
  4. Повторяйте это до тех пор, пока ВСЕ из k подмножеств не будут служить тестовым набором, т.е. мы перебираем k подмножеств и записываем ошибку на каждой итерации.
  5. Оценка ошибки усредняется по всем k испытаниям, чтобы получить общий показатель эффективности / производительности модели.

Один из наиболее часто задаваемых вопросов - «как выбрать правильное значение k

Всегда помните, меньшее значение k более основано. Следовательно, нежелательно. Принимая во внимание, что более высокое значение k менее предвзято, но может страдать от высокой дисперсии. Меньшее значение k приводит нас к подходу с набором валидации, а более высокое значение k ведет к подходу LOOCV.

LOOCV - это не что иное, как n-fold перекрестная проверка, где k=n, n - общее количество выборок в исходном наборе данных.

4. Кросс-валидация с натянутым K-образным складыванием:

Стратифицированная перекрестная проверка K-Fold является расширением перекрестной проверки K-Fold, при которой набор данных перетасовывается непосредственно перед разделением на данные kfolds, так что соотношение наблюдений остается одинаковым для всех складок.

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

Ключевые выводы:

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

Я надеюсь, что эта статья дала вам общее представление о различных методах перекрестной проверки. Это все основы, необходимые для начала перекрестной проверки с использованием замечательной библиотеки Scikit-Learn , которая поможет вам начать работу с помощью всего нескольких строк кода на Python. Удачи!

Увидимся в следующей статье. Пока!

Использованная литература:

[1] https://www.analyticsvidhya.com/blog/2018/05/improve-model-performance-cross-validation-in-python-r/

[2] https://towardsdatascience.com/cross-validation-in-machine-learning-72924a69872f

[3] https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation

Спасибо за чтение и буду ждать ваших отзывов!

Я ежедневно пишу руководства и статьи по машинному обучению о своем путешествии в мир искусственного интеллекта. Следуйте за мной в Twitter, LinkedIn и Medium.