Понимание перекрестной проверки

Как перекрестная проверка помогает нам избежать ошибок переобучения

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

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

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

Как узнать, когда модель переобучена

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

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

  • Ложные корреляции: если мы внимательно присмотримся, мы обнаружим сильные корреляции. Например, мы можем обнаружить, что цена биткойнов сильно коррелирует с ценой на пиццу в Зимбабве. Но это скорее всего из-за случайности и случайности, а не из-за чего-то реального, и было бы глупо ставить деньги на такую ​​корреляцию. Если мы приспособим нашу модель к набору факторов, которые ложно коррелируют с тем, что мы пытаемся предсказать, она не будет хорошо обобщаться.
  • Чрезмерное использование тестового набора. Этого действительно трудно полностью избежать. Если модель не работает на нашем тестовом наборе (тестовый набор - это часть наших данных, которую мы храним, чтобы мы могли оценить, как модель обобщает новые данные), то мы будем настраивать ее, пока не найдем конфигурацию. это хорошо работает как на обучающем наборе, так и на тестовом наборе. Следствием этого является то, что набор тестов больше не является объективной оценкой производительности нашей модели вне выборки - в конце концов, как только мы начнем принимать решения по моделированию с использованием удерживаемого набора (также известного как набор тестов), можем ли мы действительно рассмотреть это еще предстоит продержаться?
  • Предвзятый обучающий набор. Наши обучающие данные редко когда-либо будут действительно репрезентативными для популяции, которую мы пытаемся моделировать. Поэтому нам следует знать, что мы практически гарантированно столкнемся с данными, которые наша модель в какой-то момент находит совершенно незнакомыми. И хотя мы должны делать все возможное, чтобы сопоставить характеристики нашей выборки с характеристиками всего населения, мы также должны знать области, в которых выборка не соответствует требованиям. Потому что именно данные из этих областей представляют наибольший риск для нашей модели. Если наша выборка репрезентативна только для небольшой части нашего населения, то наша модель со временем будет плохо работать.

Как перекрестная проверка помогает

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

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

Мы тренируемся на синей части, пока не почувствуем, что наша модель готова к встрече с дикой природой. Затем мы оцениваем его на тестовом наборе (золотая часть). Недостатком традиционного способа является то, что у нас есть только один шанс. В тот момент, когда мы тестируем нашу модель на тестовом наборе, мы скомпрометировали наши тестовые данные. И если результаты нашего набора тестов были ужасными, что тогда? Сможем ли мы выбросить все эти часы работы или просто начнем оптимизировать наши результаты для набора тестов?

Если бы только был способ смоделировать, как наша модель могла бы работать на тестовом наборе, без фактического использования тестового набора. Там есть! И это называется перекрестной проверкой.

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

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

Допустим, мы разрабатываем модель прогнозирующей линейной регрессии и используем R² в качестве основного показателя оценки. У нас есть некоторые данные, которые мы разделили на обучающий набор и тестовый набор. Наша главная забота - точность прогнозов нашей модели вне выборки (насколько хорошо она обобщает). Таким образом, мы решили не рассматривать набор тестов до самого конца (чтобы мы могли поставить нашей модели интеллектуально честную оценку).

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

  • Мы решаем провести трехкратную перекрестную проверку, что означает, что мы разделяем наши обучающие данные на три части равного размера.
  • В прогоне 1 нашей перекрестной проверки удерживается Fold 1 (розовый прямоугольник с надписью Hold Out 1). Таким образом, мы тренируемся на обучающих данных (синий прямоугольник), которых нет в Fold 1, а затем проверяем их на Fold 1. Это означает, что мы подгоняем нашу модель, используя обучающие данные, отличные от Fold 1, а затем вычисляем и записываем, насколько хорошо мы предсказали. наблюдения за зависимой переменной в Fold 1. Важно отметить, что в Run 1 мы не использовали какие-либо данные из Fold 1 во время обучения нашей модели, поэтому R², вычисленный с помощью Fold 1, является своего рода выходом из образец R².
  • В прогоне 2 удерживается сгиб 2. Теперь Fold 1, который ранее был нашим набором для проверки, стал частью нашего обучающего набора. Мы подбираем нашу модель, используя данные в Fold 1 и Fold 3, и оцениваем ее, используя Fold 2 (через R²).
  • После завершения 3-го прогона у нас теперь есть три значения R² (так как каждый фолд проходит по очереди). Среднее значение трех R² дает нам неплохую оценку вне выборки R² нашей модели.

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

Заключение

Несколько советов при использовании перекрестной проверки:

  1. Важно помнить, что оценка перекрестной проверки (например, R²) нашей модели в лучшем случае является оптимистической оценкой ее производительности на тестовом наборе. Точно так же, как производительность на тестовом наборе является в лучшем случае оптимистической оценкой истинной способности модели к обобщениям.
  2. Если изменение, которое мы внесли в модель, увеличивает оценку обучения (которая оценивается в выборке), но снижает оценку перекрестной проверки, то это хороший признак того, что мы переоснащаем модель.
  3. Слишком мало складок скручивает модель подколенных сухожилий - это связано с тем, что слишком много обучающих данных задерживается в каждом прогоне перекрестной проверки. Например, при двукратном сложении половина обучающих данных удерживается, что означает, что модель подходит только для оставшейся половины (что приводит к показателям оценки, которые ниже, чем они должны быть). Модель с недостаточной посадкой обобщает так же плохо, как и модель с избыточной посадкой.
  4. Хорошая практика - перемешать данные перед обучением тестового разделения на случай, если данные были отсортированы. Если бы они каким-то образом были отсортированы, а мы пренебрегли бы их перемешиванием, то наш тестовый разделитель на поездах предоставил бы предвзятые наборы данных, в которых ни один из них не был бы хорошим представителем фактической совокупности.
  5. После того, как мы закончим уточнение модели с помощью перекрестной проверки, мы должны перестроить модель на всем обучающем наборе, прежде чем тестировать ее на тестовом наборе.

Другие статьи, связанные с наукой о данных, от меня:

Что такое графики QQ?

Общие сведения о нормальном распределении

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

Понимание теоремы Байеса