Методы перекрестной проверки для оценки стабильности вашей модели

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

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

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

Устойчивость модели?

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

Давайте подробнее разберемся в устойчивости модели на примере.

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

Мы установили связь, используя линейное уравнение между купленным автомобилем или нет и доходом человека. Предположим, у вас есть данные с 2010 по 2019 год и вы пытаетесь спрогнозировать 2020 год. Вы обучили свою модель на основе имеющихся данных о поездах.

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

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

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

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

Вы можете узнать больше о переоборудовании и недостаточном оснащении в другой статье.



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

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

Стандартные шаги, используемые при перекрестной проверке:

Он делит набор данных на две части - обучение и тестирование.

Он обучает модель на обучающем наборе данных.

Он оценивает ту же модель на тестовой выборке.

Методы перекрестной проверки могут быть разными.

Различные методы, используемые при перекрестной проверке:

1. Метод проверки или Train_Test_Split:

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

2. Перекрестная проверка N-сгиба / перекрестная проверка K-сгиба:

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

Этапы N-кратной перекрестной проверки:

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

Например:

Предположим, ваши данные содержат 100 точек данных. На основе 100 точек данных вы хотите спрогнозировать следующую точку данных. Затем 100 записей можно использовать для перекрестной проверки. Скажем, количество складок (N) = 10.

  1. 100 точек данных делятся на 10 сегментов по 10 записей в каждом.
  2. Здесь было создано 10 складок на основе данных и значения N. Теперь, из 10 складок, 9 складок будут использоваться в качестве данных для обучения и протестировать вашу модель на вашем 10-кратном. Повторяйте этот процесс, пока каждая складка не станет вашим испытанием. Вычислите среднее значение выбранной вами метрики для всех складок. Эта метрика поможет лучше обобщить модель, а также повысит ее стабильность.

3. Оставьте одну перекрестную проверку (LOOCV).

В этом подходе мы оставляем в стороне одну точку данных из доступного набора данных и обучаем модель остальным данным. Этот процесс повторяется до тех пор, пока каждая точка данных не будет использована в качестве тестового набора. У этого также есть свои преимущества и недостатки. Посмотрим на них:

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

4.Стратитированная перекрестная проверка с N-сгибом:

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

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

5. Перекрестная проверка для временных рядов:

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

  1. Складки для перекрестной проверки временных рядов создаются методом прямой цепочки.

Предположим, например, что у нас есть временной ряд для годового спроса на автомобили для компании в течение 6 лет с 2014 по 2019 год. Складки будут созданы следующим образом:

Поезд 1— [2014]

Тест 1– [2015]

Поезд2– [2014,2015]

Test2 - [2016] ... и далее

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

Конечные заметки

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

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

Спасибо :)